Watir
# Watir

Watir (del acrónimo en inglés de Web Application Test in Ruby), pronunciado igual que "Water" (agua), es una familia de bibliotecas bajo la Licencia BSD para el lenguaje de programación Ruby que automatiza la operación de los navegadores web. Al momento de esta edición, Watir permite automatizar Internet Explorer, Mozilla Firefox, Google Chrome y Safari y se encuentra disponible como una Gema de Ruby. Watir fue desarrollado inicialmente por Bret Pettichord y Paul Rogers, aunque al ser un proyecto abierto, tiene una lista creciente de participantes.

## Funcionalidad

La funcionalidad de Watir consiste en dos partes básicas:

* Interactuar con el navegador de la misma forma que lo haría un usuario
* Interpretar todos los elementos de HTML de la página de manera que pueden ser externamente interpretados e incluso manipulados.

Esto permite escribir scripts que manejen la ejecución automatizada de casos de prueba en la validación y verificación de funcionalidad de sistemas escritos para el navegador. Para ello el proyecto Watir consiste en varios proyectos menores siendo los principales Watir-classic, Watir-webdriver y watirspec.

### Watir Classic

Watir-Classic hace uso de la funcionalidad de Incrustado y enlazado de objetos que Ruby tiene integrada. Por tanto es posible manejar el Internet Explorer programáticamente. Watir-Classic opera diferente de otras herramientas de pruebas basadas en HTTP que emulan la existencia de un navegador, en vez de ello, Watir-Classic efectivamente inicia una instancia del navegador a través del protocolo OLE que está implementado sobre la arquitectura COM COM permite la comunicación entre procesos (por ejemplo entre Ruby e Internet Explorer) y la creación y manipulación dinámica de objetos, que es lo que hace Ruby con el Internet Explorer. Microsoft llama a esto "automatización OLE" y al programa que ejerce la manipulación lo llama controlador de automatización. Técnicamente el proceso de Internet Explorer es un servidor y sirve objetos de automatización al exponer sus métodos mientras que el programa escrito en Ruby se convierte en el cliente que manipula los objetos de automatización.

### Watir-webdriver

Watir-webdriver es una versión moderna del API de Watir basada en Selenium. Selenium 2.0 (Selenium-webdriver) intenta ser la implementación de referencia para la especificación WebDriver. En el caso de Ruby, Jari Bakken el API de Watir como un envolvente ("wrapper") alrededor del API de Selenium 2.0. Dado que Watir-Webdriver es derivado tanto de Selenium 2.0 como de la especificación de HTML Watir-Webdriver debe ser siempre compatible con las especificaciones del W3C.

### Watirspec

Watirspec es una especificación automatizada del API de Watir.

## Herramientas similares

Dada la creciente complejidad de los sistemas de cómputo y la necesidad de entregar productos de software de mayor calidad, hay un número creciente de herramientas automatizadas de prueba, tanto comerciales como de código abierto que permiten ejecutar pruebas con mayor rapidez que si se realizan manualmente.

