Visitar múltiples dominios y compartir datos en Cypress 10

Clase 17 de 29Curso de Cypress Avanzado

Resumen

¿Cómo visitar múltiples dominios en la misma prueba?

Navegar por diferentes dominios dentro de una misma prueba es una herramienta avanzada que no todos conocen. Involucra ciertos pasos críticos y habilidades, que pueden marcar la diferencia en la ejecución exitosa de tests automatizados. Comenzamos por realizar ciertas configuraciones y el uso de una función experimental en Cypress. Exploramos cómo compartir variables de entorno para manejar datos entre visitas a diferentes dominios en un único test. Ahora, entremos en detalle:

¿Cómo iniciar el test con Cypress?

Primero, asegurémonos de estar usando la versión correcta de Cypress, ya que algunas funcionalidades discutidas pueden estar disponibles a partir de la versión 10. Empezamos escribiendo la estructura básica del test y visitando nuestro dominio principal.

cy.visit('https://mi-dominio-principal.com');
// Asegúrate de adaptar esta URL a tus necesidades

¿Cómo compartimos información entre dominios?

A menudo es necesario capturar información de un dominio y reutilizarla en otro. Aunque Cypress no recomienda algunas prácticas, podemos experimentar con ellas. Aquí, vamos a obtener un texto de un h1 y utilizarlo en otro dominio.

cy.get('h1').first().invoke('text').then((texto) => {
    // Aquí guardamos el texto para usarlo más adelante
});

¿Qué es ci.origin y cómo se utiliza?

La función ci.origin es experimental y permite navegar entre distintos orígenes de forma más segura. Si la combinamos con el manejo de sesiones, se convierte en una potente herramienta para ejecutar pruebas complejas.

cy.origin('https://otro-dominio.com', {args: {texto}}, ({texto}) => {
    cy.log(texto); // Aquí imprimimos el texto para verificar el flujo
});

Tener cuidado con variables indefinidas es crucial, porque Cypress ejecuta de forma asíncrona, lo cual puede resultar en valores inesperados.

¿Cómo garantizamos que las pruebas sean consistentes?

Al implementar esta técnica, pueden surgir inconsistencias. Para superarlas:

  • Utilizamos variables de entorno para almacenar y recuperar datos de manera confiable a través de cypress.env.
  • Consideramos el uso de afterEach para limpiar variables después de cada test.
Cypress.env('textito', texto);
cy.log(Cypress.env('textito'));  // Mostrar variable de entorno

Conceptos a tener en cuenta

  • Siempre debemos regresar al dominio inicial después de usar ci.origin para prevenir errores.
  • El manejo adecuado de variables de entorno es clave para evitar invocaciones incorrectas.

Recomendaciones finales

Aunque estas técnicas avanzadas pueden parecer complejas al principio, su dominio puede mejorar la eficiencia y flexibilidad de nuestros tests. Recuerda que la práctica hace al maestro. No olvides explorar la documentación oficial de Cypress y estar al tanto de futuras actualizaciones que puedan simplificar estos procesos.

Aprender requiere tiempo y dedicación. No te preocupes si no dominas todo de inmediato; lo importante es continuar explorando y practicando. Nos encontramos en el siguiente módulo con más consejos y trucos para optimizar y robustecer tus pruebas automatizadas. ¡Sigue adelante, el camino del aprendizaje continúa!