Bird
Raised Fist0
Cypresstesting~10 mins

cy.url() assertions in Cypress - Test Execution Trace

Choose your learning style10 modes available
Test Overview

This test opens a webpage, clicks a link, and verifies the URL changes as expected using cy.url() assertions.

Test Code - Cypress
Cypress
describe('URL Assertion Test', () => {
  it('should navigate to Actions page and verify URL', () => {
    cy.visit('https://example.cypress.io')
    cy.get('a[href="/commands/actions"]').click()
    cy.url().should('include', '/commands/actions')
    cy.url().should('eq', 'https://example.cypress.io/commands/actions')
  })
})
Execution Trace - 6 Steps
StepActionSystem StateAssertionResult
1Test startsTest runner initialized, no browser opened yet—PASS
2Browser opens and navigates to 'https://example.cypress.io'Browser shows the Cypress example homepage—PASS
3Finds link with href '/commands/actions' using cy.getLink element is found on the page—PASS
4Clicks the found linkBrowser navigates to the Actions commands page—PASS
5Asserts URL includes '/commands/actions' using cy.url().should('include', ...)Current URL is 'https://example.cypress.io/commands/actions'URL contains '/commands/actions'PASS
6Asserts URL equals 'https://example.cypress.io/commands/actions' using cy.url().should('eq', ...)Current URL is exactly 'https://example.cypress.io/commands/actions'URL equals 'https://example.cypress.io/commands/actions'PASS
Failure Scenario
Failing Condition: The link with href '/commands/actions' is missing or the URL does not update correctly after click
Execution Trace Quiz - 3 Questions
Test your understanding
What does cy.url().should('include', '/commands/actions') check?
AThe page title includes '/commands/actions'
BThe current URL contains the string '/commands/actions'
CThe URL exactly equals '/commands/actions'
DThe page has a link with href '/commands/actions'
Key Result
Always verify the URL after navigation to confirm the page changed as expected. Using cy.url() assertions helps catch navigation issues early.

Practice

(1/5)
1. What does cy.url().should('include', '/dashboard') check in a Cypress test?
easy
A. It checks if the current URL contains '/dashboard' anywhere in it.
B. It verifies the URL exactly equals '/dashboard'.
C. It asserts the URL starts with '/dashboard'.
D. It confirms the URL ends with '/dashboard'.

Solution

  1. Step 1: Understand the 'include' assertion

    The 'include' assertion checks if the given string is part of the actual URL anywhere.
  2. Step 2: Apply to the example

    Using 'include' with '/dashboard' means the URL must contain '/dashboard' anywhere, not necessarily exactly or at start/end.
  3. Final Answer:

    It checks if the current URL contains '/dashboard' anywhere in it. -> Option A
  4. Quick Check:

    cy.url().should('include', '/dashboard') = contains '/dashboard' [OK]
Hint: Remember 'include' means substring anywhere in URL [OK]
Common Mistakes:
  • Confusing 'include' with exact match
  • Thinking 'include' checks start or end only
  • Using 'eq' when 'include' is needed
2. Which of the following is the correct syntax to assert the URL exactly equals 'https://example.com/home' in Cypress?
easy
A. cy.url().should('contain', 'https://example.com/home')
B. cy.url().should('include', 'https://example.com/home')
C. cy.url().should('match', 'https://example.com/home')
D. cy.url().should('eq', 'https://example.com/home')

Solution

  1. Step 1: Identify exact match assertion

    The 'eq' assertion checks if the actual URL exactly equals the given string.
  2. Step 2: Match syntax to requirement

    Using cy.url().should('eq', 'https://example.com/home') asserts the URL is exactly that string.
  3. Final Answer:

    cy.url().should('eq', 'https://example.com/home') -> Option D
  4. Quick Check:

    Exact URL match uses 'eq' [OK]
Hint: Use 'eq' for exact URL match, not 'include' or 'match' [OK]
Common Mistakes:
  • Using 'include' instead of 'eq' for exact match
  • Using 'match' without regex
  • Using 'contain' which is not a valid Cypress assertion
3. Given the code snippet:
cy.visit('/login')
cy.url().should('match', /\/login$/)

What will the assertion check?
medium
A. The URL contains '/login' anywhere.
B. The URL ends with '/login'.
C. The URL exactly equals '/login'.
D. The URL starts with '/login'.

Solution

  1. Step 1: Understand the 'match' assertion with regex

    The 'match' assertion checks if the URL matches the given regular expression.
  2. Step 2: Analyze the regex /\/login$/

    The regex ends with '$' which means the URL must end with '/login'.
  3. Final Answer:

    The URL ends with '/login'. -> Option B
  4. Quick Check:

    Regex with $ means URL ends with pattern [OK]
Hint: Regex ending with $ means URL ends with that string [OK]
Common Mistakes:
  • Thinking 'match' checks substring anywhere without regex
  • Confusing regex anchors like ^ and $
  • Assuming 'match' equals exact string match
4. Identify the error in this Cypress assertion:
cy.url().should('equals', 'https://example.com/home')
medium
A. 'equals' is not a valid assertion keyword in Cypress.
B. The URL string is missing a trailing slash.
C. The method 'should' cannot be used with 'url'.
D. The URL must be checked with 'include' instead of 'equals'.

Solution

  1. Step 1: Check valid assertion keywords for cy.url()

    Cypress supports 'eq', 'include', 'match', but not 'equals'.
  2. Step 2: Identify the invalid keyword usage

    Using 'equals' causes a syntax error because it's not recognized by Cypress.
  3. Final Answer:

    'equals' is not a valid assertion keyword in Cypress. -> Option A
  4. Quick Check:

    Use 'eq' for exact match, not 'equals' [OK]
Hint: Use 'eq' not 'equals' for exact URL check [OK]
Common Mistakes:
  • Using 'equals' instead of 'eq'
  • Confusing assertion keywords
  • Assuming 'should' can't be chained with 'url'
5. You want to verify that after login, the URL contains '/dashboard' but may have query parameters like '?user=123'. Which assertion is best to use?
hard
A. cy.url().should('eq', 'https://example.com/dashboard')
B. cy.url().should('contain', '/dashboard?user=123')
C. cy.url().should('include', '/dashboard')
D. cy.url().should('match', /^https:\/\/example\.com\/dashboard\?user=\d+$/)

Solution

  1. Step 1: Understand the URL with query parameters

    The URL may have extra parts after '/dashboard', so exact match ('eq') won't work.
  2. Step 2: Choose assertion allowing partial match

    'include' checks if '/dashboard' is anywhere in the URL, ignoring query parameters.
  3. Final Answer:

    cy.url().should('include', '/dashboard') -> Option C
  4. Quick Check:

    Use 'include' to ignore query parameters [OK]
Hint: Use 'include' to ignore query parameters in URL check [OK]
Common Mistakes:
  • Using 'eq' which fails with query parameters
  • Trying complex regex without need
  • Using invalid 'contain' assertion
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard