'Getting the checked value of a checkbox - Material Design

I have a page that uses a basic bootstrap based Admin BSB Material Design layout

I am having difficulty getting a value from the checkboxes in this design.

Example checkbox that is 'checked':

enter image description here

enter image description here

I am seeing cypress having no luck finding the checkbox control even if i add a data-cypress="mycheckbx" attribute.

So my questions is: how do I obtain the 'checked' property in this scenario?

Styles Used:

[type="checkbox"].filled-in:not(:checked)+label:before {
    width: 0;
    height: 0;
    border: 3px solid transparent;
    left: 6px;
    top: 10px;
    -webkit-transform: rotateZ(37deg);
    transform: rotateZ(37deg);
    -webkit-transform-origin: 20% 40%;
    transform-origin: 100% 100%
}

[type="checkbox"].filled-in:not(:checked)+label:after {
    height: 20px;
    width: 20px;
    background-color: transparent;
    border: 2px solid #5a5a5a;
    top: 0;
    z-index: 0
}

[type="checkbox"].filled-in:checked+label:before {
    top: 0;
    left: 1px;
    width: 8px;
    height: 13px;
    border-top: 2px solid transparent;
    border-left: 2px solid transparent;
    border-right: 2px solid #fff;
    border-bottom: 2px solid #fff;
    -webkit-transform: rotateZ(37deg);
    transform: rotateZ(37deg);
    -webkit-transform-origin: 100% 100%;
    transform-origin: 100% 100%
}

[type="checkbox"].filled-in:checked+label:after {
    top: 0;
    width: 20px;
    height: 20px;
    border: 2px solid #26a69a;
    background-color: #26a69a;
    z-index: 0
}


Solution 1:[1]

It seems all I needed to do was:

cy.get('#pract-haspen').should('have.attr', 'checked')    

and that Assertion worked!

Thanks

Solution 2:[2]

Since none of the solutions above worked for me, I did this :

cy.get('#element').should('be.checked')

source : cypress documentation

The opposite (unchecked) assertion would be (see the official docs):

cy.get('#element').should('not.be.checked')

Solution 3:[3]

This answers ask the question with an assert test in mind.

If you want to get the value and use it somewhere, you can simply:

cy.get('#elementQuery').then(elem => {
   var value = elem.val()
   ...do anything you want, like if(value == 'on')...
})
 

Solution 4:[4]

If attr doesn't work for you, try prop:

cy.get('#pract-haspen').should('have.prop', 'checked')

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 jazb
Solution 2 Valentine Shi
Solution 3
Solution 4 Cody Guldner