Beyond Cypress.$: Mastering Element Interactions in Cypress Tests


  1. Cypress: Cypress is a popular JavaScript framework for End-to-End (E2E) web testing.

  2. Utilities: Cypress provides various built-in utilities to help you interact with web elements, manage browser state, and make assertions in your tests. These utilities are accessed through the Cypress object, not Cypress.$.

  3. $: This symbol typically refers to jQuery, a popular JavaScript library for DOM manipulation. Cypress doesn't directly use jQuery, but it provides a similar API for interacting with web elements. You can use selectors like cy.get('selector') to find elements and then chain methods like .click(), .type(), etc. to interact with them.

  • Element Selection and Manipulation: Done using methods like cy.get(), .click(), .type() which provide a similar API to jQuery's $.
  • Cypress Utilities: Accessed through Cypress object (e.g., Cypress.log(), Cypress.wait()) for browser interactions and assertions.

If you're looking for information on specific Cypress utilities, you can refer to the official documentation:

This resource provides details on functionalities like:

  • Aliasing elements for reusability
  • Navigation (back, forward, reload)
  • Location manipulation (URL)
  • Viewport control
  • Window management (resize, scroll)


Waiting for an element to be visible

cy.get('.my-element').should('be.visible');  // Utility for assertions

Typing text into an input field

cy.get('#username').type('test_user');  // Element selection and interaction

Clicking a button

cy.get('button[type="submit"]').click();  // Element selection and interaction

Checking element content

cy.get('.message').should('contain.text', 'Success!');  // Utility for assertions

Waiting for a specific URL

cy.url().should('include', '/dashboard');  // Utility for URL manipulation and assertions
  • Taking a screenshot
cy.get('.login-form').screenshot();  // Utility for capturing screenshots
  • Waiting for a specific amount of time
cy.wait(2000);  // Utility for waiting during tests


  1. cy.get(selector): This is the primary method for selecting elements in Cypress. You can use various CSS selectors to target specific elements on the page. For example:
cy.get('#username');  // Selects element with ID "username"
cy.get('.login-button');  // Selects element with class "login-button"
  1. Chaining Methods: Similar to jQuery, you can chain various methods onto the selected element to interact with it. Here are some common examples:
  • .should('contain.text', 'Some Text'): Asserts that the element contains a specific text.
  • .should('be.visible'): Asserts that the element is visible on the page.
  • .type(text): Types text into the element (e.g., input field).
  • .click(): Clicks on the element.
cy.get('#email').type('[email protected]').should('have.value', '[email protected]');
  1. Other Element Selection Methods: Cypress offers additional methods for more specific element selection:
  • cy.get('[data-testid="my-element"]'): Selects element with a custom data attribute.
  • cy.contains(text): Selects element containing a specific text.