Seguridad en Cypress: Navegación y Pruebas entre Dominios

Clase 15 de 29Curso de Cypress Avanzado

Resumen

¿Qué es la seguridad en Cypress?

Cypress es una herramienta poderosa y ampliamente utilizada para pruebas automatizadas. Una de sus características más destacadas es la implementación de medidas de seguridad rigurosas para garantizar que las pruebas se ejecuten de manera segura y eficaz. Pero, ¿qué significa exactamente esto? ¿Y cómo afecta a nuestras pruebas?

En Cypress, la seguridad se refiere principalmente a las restricciones en la navegación entre diferentes dominios dentro de la misma prueba. Esta restricción es esencial para proteger de prácticas maliciosas como el phishing, ya que evita que al hacer clic en un enlace seamos redirigidos a un dominio potencialmente peligroso.

¿Cómo navega Cypress entre dominios?

Veamos un ejemplo práctico. Imaginemos que estamos realizando una serie de pruebas donde queremos navegar desde nuestra página de inicio hacia una página diferente que alberga una lista de tareas (to-do list):

describe('Seguridad', function () {
  it('Navega a dominios separados', function () {
    cy.visit('https://dominio-inicial.com');
    // Intento de navegación a otro dominio
    cy.visit('https://otro-dominio.com');
    cy.get('h1').invoke('text').as('titulo');
  });
});

Aquí, a pesar de que la primera página se visita correctamente, el intento de navegar a un dominio diferente dará lugar a un error. Esto sucede porque Cypress no permite visitar una URL diferente a la de origen en la misma prueba.

¿Qué errores puede generar la política de dominios de Cypress?

  1. Error de superdominio: Cypress no permite el acceso a un superdominio diferente dentro de la misma prueba. Un superdominio es, por ejemplo, example.netlify.app, donde cualquier cambio en la parte principal del dominio (example) implicaría un superdominio diferente.

  2. Restricciones de dominios diferentes: Si intentamos navegar de un dominio a otro para compartir información (como títulos o detalles de usuario), Cypress simplemente no transferirá dicha información entre dominios en la misma prueba.

¿Cómo podemos gestionar la seguridad al navegar en Cypress?

Para superar estas limitaciones, Cypress establece que sí se pueden visitar diferentes superdominios, pero en pruebas separadas:

it('Prueba en el primer dominio', function () {
  cy.visit('https://dominio-inicial.com');
  cy.get('h1').invoke('text').as('titulo');
});

it('Prueba en el segundo dominio', function () {
  cy.visit('https://otro-dominio.com');
  // No se puede usar el alias 'titulo' aquí, ya que corresponde a otro dominio
});

Esta estrategia permite mantener el flujo de pruebas sin conflictos, asegurando que no se generen errores por violar políticas de seguridad.


Como consejos prácticos, si necesitas compartir información entre dominios, considera manejar esta información al nivel del backend o utilizar servicios API que pasen datos entre pruebas de modo seguro y eficaz. Cypress proporciona una capa adicional de seguridad al proteger tanto a los desarrolladores como a los usuarios finales. Al comprender y aprovechar estas características, podemos garantizar que nuestras aplicaciones sean más seguras mientras se adhieren a las mejores prácticas de prueba. ¡Sigue aprendiendo y descubriendo cómo optimizar tus pruebas con Cypress!