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
Pruebas de alto nivel con casperjs
By hugo zapata
Pruebas de alto nivel con casperjs
- 1,606