web-dev-qa-db-fra.com

Cypress: Test si l'élément n'existe pas

Je veux pouvoir cliquer sur une case à cocher et tester qu'un élément n'est plus dans le DOM de Cypress. Quelqu'un peut-il suggérer comment vous le faites?

//This is the Test when the check box is clicked and the element is there
cy.get('[type="checkbox"]').click();
cy.get('.check-box-sub-text').contains('Some text in this div.')

Je veux faire le contraire du test ci-dessus. Ainsi, lorsque je clique à nouveau dessus, la div de la classe ne doit pas être dans le DOM.

65
Maccurt

Cela semble fonctionner, alors il me dit que j’ai encore beaucoup à apprendre sur .should ()

cy.get('.check-box-sub-text').should('not.exist');
84
Maccurt
cy.get(data-e2e="create-entity-field-relation-contact-name").should('not.exist')

peut conduire à des résultats erronés car certains messages d'erreur sont masqués. Il pourrait être préférable d'utiliser

.should('not.visible') 

dans ce cas.

6
MrSmiley

Voici ce qui a fonctionné pour moi:

cy.get('[data-cy=parent]').should('not.have.descendants', 'img')

Je vérifie que certains <div data-cy="parent"> ne contiennent aucune image. En ce qui concerne la question d'origine, vous pouvez définir l'attribut data-cy="something, i.e. child" sur les nœuds internes et utiliser cette assertion:

cy.get('[data-cy=parent]').should('not.have.descendants', '[data-cy=child]')
1
Mikhail Vasin