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