Introducción

Las pruebas de extremo a extremo (E2E) son cruciales para asegurar que una aplicación funcione correctamente desde la perspectiva del usuario. Cypress es una herramienta poderosa y moderna para realizar pruebas E2E en aplicaciones web. En esta sección, aprenderás cómo configurar Cypress, escribir y ejecutar pruebas E2E, y entender las mejores prácticas para asegurar la calidad de tu aplicación React.

¿Qué es Cypress?

Cypress es una herramienta de pruebas E2E que permite a los desarrolladores escribir pruebas que simulan la interacción del usuario con la aplicación. Cypress se destaca por su facilidad de uso, su capacidad para ejecutar pruebas en tiempo real y su integración con el ecosistema de JavaScript.

Características Clave de Cypress

  • Tiempo Real: Cypress muestra los resultados de las pruebas en tiempo real, lo que facilita la depuración.
  • Automatización Completa: Permite automatizar pruebas de extremo a extremo, pruebas de integración y pruebas unitarias.
  • API Intuitiva: Cypress ofrece una API fácil de usar que simplifica la escritura de pruebas.
  • Capturas de Pantalla y Videos: Genera capturas de pantalla y videos de las pruebas, lo que facilita la identificación de errores.

Configuración de Cypress

Paso 1: Instalación

Primero, necesitas instalar Cypress en tu proyecto. Abre tu terminal y ejecuta el siguiente comando:

npm install cypress --save-dev

Paso 2: Inicialización

Una vez instalado, inicializa Cypress ejecutando:

npx cypress open

Este comando abrirá la interfaz de usuario de Cypress y creará una estructura de carpetas predeterminada en tu proyecto.

Estructura de Carpetas de Cypress

  • cypress/fixtures: Contiene datos de prueba.
  • cypress/integration: Contiene los archivos de prueba.
  • cypress/plugins: Contiene archivos de configuración de plugins.
  • cypress/support: Contiene archivos de soporte y configuración global.

Escribiendo Pruebas E2E con Cypress

Ejemplo de Prueba Básica

Vamos a escribir una prueba básica para verificar que la página principal de nuestra aplicación React se carga correctamente.

  1. Crea un archivo de prueba en cypress/integration llamado home.spec.js.

  2. Añade el siguiente código:

describe('Página Principal', () => {
  it('debería cargar correctamente', () => {
    cy.visit('http://localhost:3000'); // Cambia la URL según tu configuración
    cy.contains('Hola Mundo'); // Verifica que el texto "Hola Mundo" esté presente
  });
});

Explicación del Código

  • describe: Define un conjunto de pruebas relacionadas.
  • it: Define una prueba individual.
  • cy.visit: Navega a la URL especificada.
  • cy.contains: Verifica que el texto especificado esté presente en la página.

Ejemplo de Prueba de Interacción

Vamos a escribir una prueba que simule la interacción del usuario con un formulario.

  1. Crea un archivo de prueba en cypress/integration llamado form.spec.js.

  2. Añade el siguiente código:

describe('Formulario de Contacto', () => {
  it('debería enviar el formulario correctamente', () => {
    cy.visit('http://localhost:3000/contacto'); // Cambia la URL según tu configuración
    cy.get('input[name="nombre"]').type('Juan Pérez');
    cy.get('input[name="email"]').type('[email protected]');
    cy.get('textarea[name="mensaje"]').type('Este es un mensaje de prueba.');
    cy.get('button[type="submit"]').click();
    cy.contains('Gracias por tu mensaje'); // Verifica que el mensaje de éxito esté presente
  });
});

Explicación del Código

  • cy.get: Selecciona un elemento del DOM.
  • type: Simula la escritura en un campo de entrada.
  • click: Simula un clic en un botón.

Ejecución de Pruebas

Para ejecutar las pruebas, puedes usar la interfaz de usuario de Cypress o ejecutar el siguiente comando en la terminal:

npx cypress run

Este comando ejecutará todas las pruebas en modo headless (sin interfaz gráfica).

Mejores Prácticas

  • Mantén las Pruebas Aisladas: Asegúrate de que cada prueba sea independiente y no dependa del estado de otras pruebas.
  • Usa Datos de Prueba Realistas: Utiliza datos que representen escenarios del mundo real para asegurar la validez de las pruebas.
  • Automatiza las Pruebas en CI/CD: Integra Cypress en tu pipeline de CI/CD para ejecutar pruebas automáticamente en cada despliegue.

Ejercicio Práctico

Ejercicio

  1. Crea una prueba E2E para verificar que un usuario puede registrarse en tu aplicación.
  2. La prueba debe:
    • Navegar a la página de registro.
    • Completar el formulario de registro con datos de prueba.
    • Enviar el formulario.
    • Verificar que el usuario es redirigido a la página de bienvenida.

Solución

describe('Registro de Usuario', () => {
  it('debería registrar un nuevo usuario correctamente', () => {
    cy.visit('http://localhost:3000/registro'); // Cambia la URL según tu configuración
    cy.get('input[name="nombre"]').type('María López');
    cy.get('input[name="email"]').type('[email protected]');
    cy.get('input[name="password"]').type('password123');
    cy.get('button[type="submit"]').click();
    cy.url().should('include', '/bienvenida'); // Verifica que la URL incluye '/bienvenida'
    cy.contains('Bienvenida, María López'); // Verifica que el mensaje de bienvenida esté presente
  });
});

Conclusión

En esta sección, has aprendido cómo configurar Cypress, escribir y ejecutar pruebas E2E, y aplicar mejores prácticas para asegurar la calidad de tu aplicación React. Las pruebas E2E son una herramienta poderosa para garantizar que tu aplicación funcione correctamente desde la perspectiva del usuario final. Con Cypress, puedes automatizar estas pruebas de manera eficiente y efectiva.

Curso de React

Módulo 1: Introducción a React

Módulo 2: Componentes de React

Módulo 3: Trabajando con Eventos

Módulo 4: Conceptos Avanzados de Componentes

Módulo 5: Hooks de React

Módulo 6: Enrutamiento en React

Módulo 7: Gestión del Estado

Módulo 8: Optimización del Rendimiento

Módulo 9: Pruebas en React

Módulo 10: Temas Avanzados

Módulo 11: Proyecto: Construyendo una Aplicación Completa

© Copyright 2024. Todos los derechos reservados