We use cy.contains() to find elements on a webpage by looking for specific text. It helps us check if the text we expect is visible.
cy.contains() for text matching in Cypress
Introduction
Syntax
Cypress
cy.contains(text) cy.contains(selector, text) cy.contains(text, options)
text is the string you want to find on the page.
You can optionally provide a selector to narrow down where to look.
Examples
Cypress
cy.contains('Submit')<button> element that contains the text 'Submit'.Cypress
cy.contains('button', 'Submit')
Cypress
cy.contains('Welcome, user!')Sample Program
This test visits a page, finds a button or link with the text 'type', clicks it, and then checks if the URL changed as expected.
Cypress
describe('Test cy.contains()', () => { it('finds and clicks a button by text', () => { cy.visit('https://example.cypress.io') cy.contains('type').click() cy.url().should('include', '/commands/actions') }) })
Important Notes
cy.contains() is case sensitive by default.
You can use regular expressions for partial or case-insensitive matching, e.g., cy.contains(/submit/i).
It automatically waits for the element to appear before failing the test.
Summary
cy.contains() helps find elements by their visible text.
You can use it with or without a selector to narrow the search.
It is useful for clicking buttons, links, or verifying text presence.
Practice
1. What does
cy.contains('Submit') do in a Cypress test?easy
Solution
Step 1: Understand cy.contains() basic function
The command searches the page for an element that has visible text matching the given string.Step 2: Analyze the given text 'Submit'
It finds the first element that contains the text 'Submit' anywhere inside it.Final Answer:
Finds the first element containing the visible text 'Submit'. -> Option AQuick Check:
cy.contains('text') finds element by visible text [OK]
Hint: cy.contains() finds elements by visible text quickly [OK]
Common Mistakes:
- Thinking cy.contains() clicks automatically
- Confusing cy.contains() with typing commands
- Assuming it checks URL instead of page content
2. Which of the following is the correct syntax to find a button with text 'Login' using
cy.contains()?easy
Solution
Step 1: Recall cy.contains() syntax with selector
The correct syntax is cy.contains(selector, text) where selector is a string like 'button'.Step 2: Match the correct option
cy.contains('button', 'Login') uses cy.contains('button', 'Login') which is correct. Other options misuse quotes or argument order.Final Answer:
cy.contains('button', 'Login') -> Option BQuick Check:
cy.contains('selector', 'text') correct syntax [OK]
Hint: Use cy.contains('selector', 'text') to narrow search [OK]
Common Mistakes:
- Omitting quotes around selector or text
- Swapping the order of selector and text
- Concatenating strings incorrectly inside cy.contains()
3. What will the following Cypress code do?
cy.contains('Submit').click()medium
Solution
Step 1: Understand cy.contains() chaining
cy.contains('Submit') finds the first element with visible text 'Submit'.Step 2: Analyze the chained click()
Calling .click() on the found element triggers a click event on it.Final Answer:
Finds the first element with text 'Submit' and clicks it. -> Option CQuick Check:
cy.contains('text').click() clicks matched element [OK]
Hint: Chain .click() after cy.contains() to click element [OK]
Common Mistakes:
- Thinking click() types text instead
- Assuming click() cannot be chained
- Believing it clicks multiple elements
4. You wrote
cy.contains(button, 'Save').click() but the test fails with a syntax error. What is the problem?medium
Solution
Step 1: Check argument types in cy.contains()
The selector argument must be a string, so 'button' needs quotes.Step 2: Identify the syntax error cause
Using button without quotes causes a syntax error because it's treated as a variable.Final Answer:
The selector button should be a string: 'button'. -> Option DQuick Check:
Selector must be string in cy.contains() [OK]
Hint: Always quote selectors in cy.contains() [OK]
Common Mistakes:
- Forgetting quotes around selector
- Thinking click() can't be chained
- Assuming text case matters in cy.contains()
5. You want to verify that a page contains a link with text 'Learn More' inside a
<nav> element. Which Cypress command is best?hard
Solution
Step 1: Narrow search inside <nav> for link text
Use cy.get('nav') to select the nav element first.Step 2: Use contains() with selector 'a' and text 'Learn More'
Calling .contains('a', 'Learn More') inside nav finds the link with that text.Step 3: Assert existence with should('exist')
This confirms the link is present inside nav.Final Answer:
cy.get('nav').contains('a', 'Learn More').should('exist') -> Option AQuick Check:
Use get() then contains() to scope text search [OK]
Hint: Use cy.get() then contains() to scope text search [OK]
Common Mistakes:
- Using contains() without scoping to nav
- Trying to chain contains() incorrectly
- Assuming contains() alone checks element existence
Recommended
Ready to prove it?
Pass the test and this pattern moves unknown
10 questions ~5 mineasy hard
