-
Notifications
You must be signed in to change notification settings - Fork 4
E2E
Los siguientes fueron los escenarios desarrollados con las herramientas playwright y kraken.
Número | Nombre | Descripción |
---|---|---|
1 | Create member | Login Crear miembro Revisar que el miembro fue creado |
2 | Create member with same name | Login Crear miembro con nombre A y email X Revisar que el miembro fue creado Crear miembro con nombre A y email Y Revisar que el miembro fue creado |
3 | Create member invalid email | Login Crear miembro con email invalido Intentar guardar Ver que guardar falla |
4 | Create member without name | Login Crear miembro sin nombre Revisar que el miembro fue creado |
5 | Create member duplicate email | Login Crear miembro con email X Validar creación Crear miembro con email Y Validar creación Editar miembro con email Y colocando email de X Intentar guardar Verificar fallo del guardado por duplicado |
6 | Create member retry | Login Crear miembro con email invalido Intentar guardar Confirmar que falló por invalidez Cambiar emaill a email valido Guardar Revisar que el miembro aparece en la lista bien creado |
7 | Delete member | Login Crear miembro Revisar que el miembro fue creado Entrar a vista de edición de miembro Eliminar miembro Revisar que no aparece y ha sido eliminado correctamente |
8 | Filter member | Login Crear miembro con nombre A Crear miembro con nombre B Filtrar miembro usando parte distintiva del nombre de A Asegurar que aparezca en la lista el miembro A Asegurar que no aparezca en la lista el miembro B |
9 | Filter member delete | Login Crear miembro con nombre A y email B Crear miembro con nombre A y email C Filtrar miembros usando el nombre A Hacer una operación eliminar filtrados Volver a la lista general Filtrar nuevamente con nombre A Validar que ninguno de los miembros con correo B y C aparecen |
10 | Filter member remove label | Login Crear miembro A con label X Crear miembro B con label X Filtrar miembros Hacer una operación múltiple eliminar label X Entrar a vista miembro A y verificar que no tiene label X Entrar a vista miembro B y verificar que no tiene label X |
11 | Create post | Login Crear Post con título y contenido Publicar Post Validar creación del Post |
12 | Create post without content | Login Crear Post sin contenido Publicar Post Validar creación del Post |
13 | Create multiple post with the same title | Login Crear Post con titulo X Publicar Post Validar creación del Post Crear post con titulo X Publicar Post Validar creación del Post |
14 | Create post and edit it | Login Crear Post Publicar Post Editar Post Validar Post publicado |
15 | Create post and delete it | Login Crear Post Publicar Post Eliminar Post |
-
Su lenguaje robusto, da gran facilidad para escribir las pruebas, permitiendo detallar bastante cada una de ellas.
-
Permite realizar DEBUG con puntos de depuración, que adicional, resalta el elemento en el navegador, mostrando visualmente en que parte de la prueba se encuentra.
-
Gran ergonomía en su configuración y runner se pueden pasar opciones como
--headed
--workers
--repeat-each N
y muchas más que permiten dar una visión general de como están las pruebas y concentrase en una en específico. También se destaca mucho la habilidad de escoger cual prueba se quiere correr pasando un flag como-g 'my test'
para filtrar solo los test que hagan match con el string.- La gran ergonomía es algo invaluable, pues en pruebas e2e de interfaz flaky es la regla y no la excepción!
-
Tiene una amplia documentación, increíblemente descriptiva con todos sus métodos documentados. Que permiten facilmente encontrar las funciones necesarias. Acompañado de tutoriales y ejemplos completos y actualizados.
-
Excelente reportes y feedback, el output que genera cuando hay fallas es excelente con pantallazos, y bien descrito que punto de la prueba generó la excepción mostrando las lineas incluso con syntax highlighting, esto hace que sea mucho más fácil entender los errores.
-
La funcionalidad de sus
Selector
es excelente para encontrar los elementos necesario, un API muy completa y robusta. -
Excelente code-completion/code-intelligence gracias a el correcto uso de TypeScript (tipado completamente) permite saber que es cada cosa en cada contexto de ejecución.
-
Permite correr los escenarios en paralelo para rápido feedback localmente.
-
La instalación es realmente sencilla sin depender de versiones específicas o versiones anterioes de las herramientas utilizadas para su instalación y ejecución de pruebas, como el entorno de ejecución (NodeJs), la librería para generar datos aleatorios (Faker), etc.
-
Posee varios accesorios (fixtures) que ofrecen un entorno de pruebas robusto para las pruebas E2E, adicional se pueden agregar accesorios propios que serán preparados para la ejecución de las pruebas.
-
Reportes (screenshots) paso a paso, debugging de alta calidad.
-
Todo el dinero de Microsoft para apoyar su desarrollo.
- No hace pruebas en aplicaciones móviles nativa
-
Funciona para hacer testing E2E tanto para aplicaciones web, como aplicaciones móviles
-
Escritura de test con gherkins, lo que facilita la escritura de pruebas en "lenguaje natural" y reuso muy sencillo de lógica (steps) escritos anteriormente.
-
Soporte integrado con signaling monkeys y parameters
-
Es rápido en la ejecución de tests.
-
Buenos reportes.
-
Su instalación se hace demasiado compleja y los tutoriales no aportan mucho al proceso.
- Ejemplo: pide dependencias que no son 100% necesarias, la herramienta no corre si
adb
no está instalado muy a pesar de que solo se corran pruebas web.
- Ejemplo: pide dependencias que no son 100% necesarias, la herramienta no corre si
-
Documentación de bajo nivel:
-
Cuando se empieza a hacer una prueba es verdaderamente un panorama oscuro, no se explican las siguientes cosas:
- Cual es el contexto y a que se tiene acceso dentro de un step de gerkin
- Que es
this.driver
no se explica que es webdriver.io ni cuales son sus métodos pues queda uno adivinando como y que es cada cosa, se está perdido completamente si no se usa la herramienta. - A pesar de que el proyecto está escrito en TypeScript por no hacer buen uso del lenguaje la información útil no se propaga al usuario:
- Ejemplo: El browser debería tener su tipo pero se usa
any
por lo cual hay 0 ayuda por parte de el code intelligence.
- Ejemplo: El browser debería tener su tipo pero se usa
- Que es
- Cual es el contexto y a que se tiene acceso dentro de un step de gerkin
-
Herramienta poco ergonómica para correr las pruebas:
- Logging excesivo, se usa por defecto
INFO
y por lo tanto puppeteer lanza miles de lineas mostrando información para nada importante, que no dejan ver donde está el error o los logs que el desarrollador está tratando de lanzar.- Fue necesario implementar una clase interna de Kraken para configurar puppeteer en log level
WARN
y así poder tener unos logs que fuesen útiles.
- Fue necesario implementar una clase interna de Kraken para configurar puppeteer en log level
- No es configurable que features correr, obligatoriamente corre todos los archivos que terminan en
.feature
que encuentra en la carpeta/features
esto es muy molesto cuando se está centrando en un test nuevo, o un test flaky toca mover todos los archivos de la carpeta que no se quieran correr y dejar solo el que se quiere. Esto es tan poco ergonómico que fue necesario escribir un script para automatizar esto
- Logging excesivo, se usa por defecto
-
Inestabilidad:
- La herramienta tiene crashes inesperados por problemas internos de su módulo de reporte al hacer parsing de json incompleto sin atrapar excepciones, bug reportado
-
Nos encanta playwright, de kraken solo nos gusta el lenguaje estilo gherkins.