Aserciones en Cypress: TDD, BDD y Chai para Pruebas Efectivas
Clase 9 de 23 • Curso de Automatización de Pruebas UI con Cypress
Resumen
¿Qué son las aserciones y por qué son importantes en Cypress?
Adentrarse en el mundo de las pruebas automatizadas puede parecer complejo, pero el uso estratégico de aserciones reduce incertidumbres y ofrece resultados concluyentes. Las aserciones en Cypress son esenciales para determinar si un test pasa o falla acorde a criterios específicos de aceptación. En un entorno real, tus pruebas siempre deberían incluir una aserción que valide sus resultados.
Las aserciones en Cypress sirven para:
- Confirmar que ciertos elementos se comportan como se espera.
- Validar que las acciones en la página redirigen al usuario correctamente.
- Garantizar que los elementos están visibles y presentan atributos adecuados.
¿Cómo implementar una aserción usando Cypress?
Usando Cy.should()
Cypress nos ofrece diversas formas de aplicar aserciones. Comenzamos con el método cy.should()
, el cual es usado para garantizar que un elemento cumpla ciertos criterios esperados.
cy.url().should('include', 'demo.com');
Este fragmento de código verifica que la URL actual incluya el texto 'demo.com', asegurando que la navegación se realiza a la página correcta.
Aserciones combinadas
Para realizar múltiples validaciones en un mismo elemento, podemos encadenar múltiples should()
o usar un and
para mejorar la claridad sintáctica.
cy.get('input[name="firstname"]')
.should('be.visible')
.and('have.attr', 'placeholder', 'First Name');
Con esto, verificamos que el campo del nombre esté visible y tenga el atributo de placeholder esperado.
¿Qué otras alternativas de aserción ofrece Cypress?
Usando el método .then() con expect
Cypress permite el uso de expect
para realizar aserciones sobre elementos que no están directamente relacionados con Cypress, como objetos externos.
cy.get('input[name="firstname"]').then(element => {
expect(element).to.be.visible;
expect(element).to.have.attr('placeholder', 'First Name');
});
Usando el método .then() con assert
De manera similar, assert
se puede usar para verificaciones más detalladas.
cy.get('input[name="firstname"]').then(element => {
assert.equal(element.attr('placeholder'), 'First Name');
});
Estas opciones permiten aserciones más personalizadas y detalladas, adecuándolas a las necesidades específicas de tu proyecto.
¿Cómo elegir el tipo de aserción adecuado?
No hay una opción "mejor" cuando se trata de elegir entre Cypress, expect
o assert
. La elección depende de varios factores, como las necesidades del equipo, el estilo de desarrollo adoptado y las características del proyecto. Es esencial tener en cuenta:
- BDD (Behavior-Driven Development): Utiliza
cy.should()
, que es más descriptivo del comportamiento esperado. - TDD (Test-Driven Development): Prefiere
assert
yexpect
, para pruebas centradas en características específicas antes de la funcionalidad completa.
La clave está en definir y acordar como equipo un estilo consistente y eficaz que mantenga la calidad y la claridad del código. Motivamos siempre a aprender continuamente y a experimentar con estas herramientas para encontrar la que más se adapte a tu flujo de trabajo.