Skip to content
Javier López edited this page May 22, 2022 · 2 revisions

Listado de Escenarios

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

Análisis y comentarios sobre herramientas

Playwright

Pro

  • 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.

Contra

  • No hace pruebas en aplicaciones móviles nativa

Kraken

Pro

  • 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.

Contra

  • 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.
  • 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:
    • 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.
      • 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
    • 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

Conclusión

Nos encanta playwright, de kraken solo nos gusta el lenguaje estilo gherkins.

Clone this wiki locally