Cypress: prueba si el elemento no existe
Quiero poder hacer clic en una casilla de verificación y probar que un elemento ya no está en el DOM en Cypress. ¿Alguien puede sugerir cómo hacerlo?
// This is the Test when the checkbox is clicked and the element is there
cy.get('[type="checkbox"]').click();
cy.get('.check-box-sub-text').contains('Some text in this div.')
Quiero hacer lo contrario de la prueba anterior.
Entonces, cuando hago clic nuevamente, div
la clase check-box-sub-text
no debería estar en el DOM.
Bueno, esto parece funcionar, así que me dice que tengo algo más que aprender sobre .should()
cy.get('.check-box-sub-text').should('not.exist');
También puedes buscar un texto que se supone que no existe:
cy.contains('[email protected]').should('not.exist')
Aquí tenéis el resultado en Cypress:0 matched elements
Referencia: Documentos: Afirmaciones, Existencia
Úselo .should('not.exist')
para afirmar que un elemento no existe en el DOM.
No utilicenot.visible
aserciones . Pasaría falsamente en <6.0, pero ahora fallará correctamente:
// for element that was removed from the DOM
// assertions below pass in < 6.0, but properly fail in 6.0+
.should('not.be.visible')
.should('not.contain', 'Text')
Documentos de migración aquí: Migración a Cypress-6-0
Migración de Cypress 6.x+
Según los documentos de Cypress sobre la existencia
El intento muy popular, que es un poco ingenuo, funcionará hasta que no funcione y luego tendrás que reescribirlo una y otra vez...
// retry until loading spinner no longer exists
cy.get('#loading').should('not.exist')
Esto realmente no funciona para el problema del título, que es lo que la mayoría de la gente buscará.
Esto funciona para el caso de que se esté eliminando. pero en el caso de que quieras que nunca exista... Lo volverá a intentar hasta que desaparezca.
Sin embargo, si desea probar que el elemento nunca existe en nuestro caso.
Si jaja. Esto es lo que realmente quieres, a menos que quieras volver a tener dolor de cabeza otro día.
// Goes through all the like elements, and says this object doesn't exist ever
cy.get(`img[src]`)
.then(($imageSection) => {
$imageSection.map((x, i) => { expect($imageSection[x].getAttribute('src')).to.not.equal(`${Cypress.config().baseUrl}/assets/images/imageName.jpg`) });
})