alex
alex

Reputation: 145

Cypress, how to check property exists

I'm new to cypress and am trying a couple of different methods to get a checkbox property...

checkBox().should('have.prop', 'checked')
checkBox().its('checked').should('exist')

The first line works fine but I was expecting the second to also pass but I get a "expected Undefined to exist" response.

Thanks

Upvotes: 2

Views: 8574

Answers (1)

Muditha Perera
Muditha Perera

Reputation: 1248

Assuming checkBox() function returns cy.get('.checkbox'), I think

checkBox().its('checked').should('exist') 

fails because checkBox() does not return an object containing just the attributes. It returns the whole element (I think as an array). so you can't use its('checked') directly on checkbox().

Anyways, to do what you are expecting to do, you can use several methods,

using invoke('attr', 'checked')

checkBox().invoke('attr', 'checked')
          .should('exist')

using getAttribute js function and expect chai assertion

checkBox().then($el => {
    expect($el[0].getAttribute('checked')).to.exist;
    })

using attributes in js and (its, wrap) in cypress.

Note: As mentioned earlier, you can't directly use its on the cy.get(). You need to extract the attributes from the object and use cy.wrap()

checkBox().then($el => {
    cy.wrap($el[0].attributes)
      .its('checked')
      .should('exist')
      })

you can use any of those methods, but the one I recommend is your first method.

cheers. Hope it helps.

Upvotes: 3

Related Questions