Cypress - Assertions


Cypress has more than one type of assertions obtained from various libraries like Mocha,Chai, and so on. The assertion types are explicit and implicit.

Implicit Assertions

If an assertion is applicable to the object obtained from the parent command in a chain, it is known as the implicit assertion. The popular implicit assertions include .and/.should.

These commands cannot be used as standalone. Generally, they are used when we have to verify multiple checks on a particular object.

Let us illustrate implicit assertion with an example given below −

// test suite
describe('Tutorialspoint', function () {
   it('Scenario 1', function (){
      // test step to launch a URL
      cy.visit("https://www.tutorialspoint.com/videotutorials/index.php")
		// assertion to validate count of sub-elements and class attribute value
		cy.get('.toc chapters').find('li').should('have.length',5)
		.and('have.class', 'dropdown')
   });
});

Execution Results

The output is as follows −

Implicit Assertions

The output logs show two assertions obtained with should, and commands.

Explicit Assertions

If an assertion is applicable to an object directly, it is known as the explicit assertion. The popular explicit assertions include assert/expect.

The command for explicit assertion is as follows −

// test suite
describe('Tutorialspoint', function () {
// it function to identify test
   it('Scenario 1', function (){
      // test step to launch a URL
      cy.visit("https://accounts.google.com")
		// identify element
      cy.get('h1#headingText').find('span').then(function(e){
         const t = e.text()
         // assertion expect
         expect(t).to.contains('Sign')
      })
   })
})

Execution Results

The output is given below −

Explicit Assertions

The output logs show assertions directly applied to objects with the expect command.

Cypress has Default Assertions which are internally handled and do not require to be invoked specifically.

Few examples are as follows −

  • cy.visit () − Expects the page to show the content with 200 status code.

  • cy.request () − Expects the remote server to be available and sends a response.

  • cy.contains () − Expects the web element with its properties to be available in DOM.

  • cy.get () − Expects the web element to be available in DOM.

  • .find () − Expects the web element to be available in DOM.

  • .type () − Expects the web element to turn to a type able state.

  • .click () − Expects the web element to turn to a clickable state.

  • .its () − Expects for a web element property on the existing subject.

Other Cypress assertions

The other Cypress assertions are as follows −

length

It checks the count of elements obtained from the previously chained command.

For example,

cy.get('#txt-fld').should('have.length',5)

value

It checks whether the web element has a certain value.

For example,

cy.get('#txt-fld').should('have.length',5)

value

It checks whether the web element has a certain value.

For example,

cy.get(' #txt-fld').should('have.value', 'Cypress')

class

It checks whether the web element possesses a certain class.

For example,

cy.get('#txt-fld'').should('have.class', 'txt')

contain

It checks whether the web element possesses a certain text.

For example,

cy.get('#txt-fld'').should('contain', 'Cypress')

visible

It checks whether the web element is visible.

For example,

cy.get('#txt-fld'').should('be.visible')

exist

It checks whether the web element is available in Document Object Model (DOM).

For example,

cy.get('#txt-fld'').should('not.exist');

css

It checks whether the web element possesses a certain css property.

For example,

cy.get('#txt-fld'').should('have.css', 'display', 'block');
Advertisements