Sprint Nro. XX

Curso Introductorio de Cypress

 

Integrantes

Hugo Fernandez

Mariano Palavecino

Conceptos básicos para testing automatizado.

Sprint Nro. XX

Índice

  1. ¿Qué es Cypress?.
  2. Características.
  3. Buenas Prácticas. 
  4. Elementos más utilizados en ANDES.
  5. Estructuración de carpetas.
  6. Preparación del entorno de trabajo.
  7. Enlaces

¿QUÉ ES CYPRESS?

  • Sprint Nro. XX

¿Qué es Cypress?

- Es una herramienta de testing automatizado que nos permite ahorrar tiempo para realizar las pruebas de regresión.

- Es un framework que nos permite simular la interacción de los usuarios con el navegador.

Cualquier tipo de pruebas de software que intentan descubrir errores (bugs), carencias de funcionalidad, etc.

CARACTERÍSTICAS

  • Sprint Nro. XX

Características

  1. Los test se pueden leer de forma secuencial, en un lenguaje de alto nivel solo teniendo algún conocimiento de HTML.
  2. Funciona con cualquier librería o framework de frontend siempre que corran en un navegador.
  3. Al terminar las pruebas, se muestra el historial de todo lo que se ejecutó junto con una captura de pantalla que muestra cómo afectó al sistema.

BUENAS PRÁCTICAS

  • Sprint Nro. XX

ATRIBUTOS DE DATOS

  • Como cada prueba va a incluir selectores de elementos, se recomienda escribir aquellos que sean resistentes a los cambios.

EJEMPLO

  • Sprint Nro. XX

ASIGNACIÓN DE VALORES DE ENTORNO

  • En cypress casi no se necesita utilizar const, let o var. Para ello se recomienda usar "Alias". Los alias son una construcción poderosa en Cypress que tiene muchos usos como por ejemplo, facilitar compartir objetos entre sus pruebas.

EJEMPLO

Cuando se usa this.users, se tiene acceso a él de forma síncrona, mientras que cuando lo usamos cy.get('@users') se convierte en un comando asíncrono.

  • Sprint Nro. XX

 

CREANDO PRUEBAS "MINÚSCULAS" CON UNA SOLA AFIRMACIÓN

  • Si bien las pruebas unitarias técnicamente funcionan bien, es realmente excesivo, y no es eficaz. Por lo que se utilizan pruebas de integración.

    • Siempre se va a poder visualizar qué afirmación falló en una prueba grande.

EJEMPLO

  • Sprint Nro. XX

 

ESPERA INNECESARIA

  • Utilizar alias o aserciones de ruta para evitar que Cypress continúe hasta que se cumpla una condición explícita.

    • Casi nunca es necesario utilizar cy.wait() durante un tiempo determinado. En estos casos probablemente hay una forma mucho mejor y más simple.

EJEMPLO

Elementos que hemos utilizado en ANDES

  • Sprint Nro. XX

 

SHOULD

cy.get().should (condición, valor);
  • have.value
  • have.text
  • have.prop
  • have.attr
  • have.class

Es lo que se espera que tenga el DOM.

  • Sprint Nro. XX

 

CONTAINS

cy.contains('Datos guardados correctamente');

Muy útil para utilizarlo cuando se quiere corroborar por ejemplo, que un paciente fue creado con exito. 

ESTRUCTURACIÓN DE CARPETAS

  • Sprint Nro. XX

 

La idea principal de la reestructuración de las carpetas fue para ordenar los test y que sigan la misma estructura de la Organización General de ANDES.

PREPARACIÓN DEL ENTORNO

CLONAR PROYECTO DE TEST

https://github.com/andes/andes-test-integracion

INSTALAR CYPRESS

npm install cypress

INICIAR CYPRESS

npx cypress open --env BASE_URL=http://localhost:4200,API_SERVER=http://localhost:3002

1

2

5

3

4

(Agregamos before dentro de context)

(Agregamos beforeEach dentro de context)

ENLACES IMPORTANTES

MÁS INFORMACIÓN SOBRE "CYPRESS"

https://github.com/andes/andes/wiki/Gu%C3%ADa-para-Cypress#preparaci%C3%B3n-del-entorno

https://www.cypress.io/

Sitio Oficial

ANDES (GitHub) By Victor

¡MUCHAS GRACIAS!

Cypress

By ANDES | Apps Neuquinas de Salud