Pruebas de alto nivel con casperjS


Hugo Zapata
@hugozap
www.hugozap.com
github.com/hugozap

Dos enfoques



unit tests

--------

End to End


Objetivo: Pruebas unitarias



  • Facilitar el mantenimiento.
  • Guiar el desarrollo (TDD).
  • Refactor con tranquilidad.
Aunque:

  • El tiempo de mantenimiento de las pruebas unitarias es alto
  • La granularidad puede variar según el desarrollador.
  • Lograr un % de coverage alto no es trivial.
  • Aplicaciones existentes probablemente no las tengan.

Objetivo: End to End


Pruebas de alto nivel

  • Ver nuestra aplicación como una caja negra
  • Probar la interacción real del usuario (keys, mouse)
  • Crear scripts de pruebas.
  • No importa el backend.
  • Probar UI!!!

Aunque:

  • Tiempo de ejecución mayor ( se prueba todo el stack )
  • No son adecuadas para detectar la raiz de un problema. 








CasperJS

 
  • Creado sobre PhantomJS
  • No emula el DOM. Es WebKit
  • Soporta ejecución de JavaScript

Es Simple !

  • No IDEs separadas
  • No servidores
  • casperjs test.js


demo: Interacción básica...


conceptos


Contexto local vs Contexto remoto

¿Como podemos evaluar expresiones en el contexto de nuestra página?

evaluate

¿ Y si el script de nuestra página se tarda ?
wait
waitFor


DEMO2: interacciones de mouse/efectos



¿QUE MAS PODEMOS HACER CON CASPERJS?


  • Descargar recursos.
  • Detectar códigos http (404, etc)
  • Avanzar o retroceder de página
  • Inyectar nuestros propios scripts!
  • Reaccionar ante alerts, confirm
  • Obtener posición de elementos

recursos


  • http://casperjs.org/
  • http://phantomjs.org/
  • http://www.subelsky.com/2012/08/webscraping-with-casperjs-and-phantomjs.html
  • http://blog.codeship.io/2013/03/07/Smoke-Testing-with-Casperjs.html

  • http://en.wikipedia.org/wiki/Integration_testing


gracias


@hugozap
 
github.com/hugozap  

hugozap.com 
hugozap@obassi.com 
Made with Slides.com