Instalar Nodejs, PhantomJS y CasperJS

Tutorial para instalar un kit para realizar testing automático en Javascript en Linux

Hay muy pocos artículos en la red sobre cómo testear automáticamente Javascript. En este tutorial veremos cómo hacerlo, y para ello instalaremos Node JS (servidor y gestor de módulos Javascript), PhantomJS (un navegador webkit para NodeJS) y CasperJS (una utilidad para crear scripts de navegación y testing).

Antes de empezar necesitamos el sistema de control de versiones GIT, lo puedes instalar usando la instrucción:

sudo apt-get install git

Para más formas de instalación del GIT puedes visitar la [página oficial](http://git-scm.com/book/en/Getting-Started-Installing-

Git). Una vez instalado clonaremos el repositorio GIT de NodeJS, lo compilaremos e instalaremos.

Instalar NodeJS

git clone https://github.com/joyent/node.git
cd node
./configure
make
sudo make install

Una vez instalado (puede tardar un rato) podemos ejecutar node -version y nos tiene que devolver la versión que se ha instalado.

Instalar PhantomJS

Procederemos a instalar PhantomJS. El parámetro -g sirve para indicar que se instale para todo el sistema.

sudo npm install phantomjs -g

También podemos ejecutar el comando phantomjs --version para comprobar que se ha instalado correctamente.

Instalar CasperJS

Para instalar CasperJS haremos lo mismo, instalar el módulo mediante Nodejs:

sudo npm install casperjs -g

Con casperjs --version nos aparecerá la versión que se ha instalado.

Ejemplo de testing

Genial! si has llegado hasta aquí es que todo se ha instalado correctamente, en caso contrario no dudes en preguntar en los comentarios.

A continuación veremos un ejemplo de testing que integra CasperJS con PhantomJS. Para ello creamos un archivo en una ruta conocida con algun editor de textos un archivo llamado tests.js y guardamos el test a continuación.

casper.test.begin('La búsqueda en Google retorna 10 o más resultados', 5, function suite(test) {
  casper.start("http://www.google.es/", function() {
    test.assertTitle("Google", "el titulo de la página es el esperado");
    test.assertExists('form[action="/search"]', "encontrado el formulario de búsqueda");
    this.fill('form[action="/search"]', {
    q: "webtutoriales"
    }, true);
  });

  casper.then(function() {
    test.assertTitle("webtutoriales - Buscar con Google", "el título en la búsqueda es correcto");
    test.assertUrlMatch(/q=webtutoriales/, "el término de búsqueda se ha enviado correctamente");
    test.assertEval(function() {
    return __utils__.findAll("h3.r").length >= 10;
  }, "la búsqueda google por \"webtutoriales\" devuelve más de 10 resultados");
  });

  casper.run(function() {
          test.done();
  });
});

Este test se encarga de realizar una búsqueda en google de la palabra clave "webtutoriales" y comprueba que devuelve resultados. Para ejecutar el test podemos ejecutar la siguiente instrucción desde la consola:

casperjs tests.js

Veremos si los tests han pasado o no.

# La búsqueda en Google retorna 10 o más resultados
PASS el titulo de la página es el esperado
PASS encontrado el formulario de búsqueda
PASS el título en la búsqueda es correcto
PASS el término de búsqueda se ha enviado correctamente
PASS la búsqueda google por "webtutoriales" devuelve más de 10 resultados
PASS 5 tests executed in 1.191s, 5 passed, 0 failed, 0 dubious, 0 skipped.

Como habrás observado estas librerías son muy potentes. Entre otras cualidades, también se permiten hacer capturas de pantalla. Para ver más opciones visita la documentación oficial de casperjs.