Bird
Raised Fist0
Cypresstesting~5 mins

Command timeout vs assertion timeout in Cypress - Quick Revision & Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What is command timeout in Cypress?
Command timeout is the maximum time Cypress waits for a command to complete before failing the test. It applies to actions like clicking or typing.
Click to reveal answer
beginner
What does assertion timeout mean in Cypress?
Assertion timeout is the time Cypress waits for an assertion to become true before failing the test. It is used when checking conditions like element visibility or text content.
Click to reveal answer
intermediate
How does Cypress handle command timeout differently from assertion timeout?
Command timeout waits for commands to finish (like clicking). Assertion timeout waits for conditions to be met (like element appears). They control different waiting behaviors.
Click to reveal answer
intermediate
Which timeout would affect cy.get('.btn').click() if the button takes time to appear?
The command timeout affects this because Cypress waits for the button to appear and be clickable before performing the click.
Click to reveal answer
intermediate
Which timeout applies to cy.get('.msg').should('contain', 'Success')?
The assertion timeout applies here because Cypress waits for the message to contain 'Success' before failing the test.
Click to reveal answer
In Cypress, what does the command timeout control?
AHow long to wait for an assertion to pass
BHow long to wait for network requests
CHow long to wait for the browser to load
DHow long to wait for a command like click or type to complete
Which timeout is used when Cypress waits for an element to contain specific text?
AAssertion timeout
BNetwork timeout
CPage load timeout
DCommand timeout
If a button is slow to appear, which timeout affects cy.get('.btn').click()?
APage load timeout
BAssertion timeout
CCommand timeout
DNo timeout applies
What happens if an assertion does not pass within the assertion timeout?
ATest retries the command
BTest fails with timeout error
CTest passes anyway
DTest ignores the assertion
Can command timeout and assertion timeout be configured separately in Cypress?
AYes, they have separate settings
BNo, they share the same timeout
COnly command timeout can be configured
DOnly assertion timeout can be configured
Explain the difference between command timeout and assertion timeout in Cypress.
Think about what Cypress waits for in each case.
You got /3 concepts.
    Describe a scenario where command timeout would cause a test to fail but assertion timeout would not.
    Consider waiting for an element before clicking.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main difference between command timeout and assertion timeout in Cypress?
      easy
      A. Command timeout is for API calls; assertion timeout is for UI rendering.
      B. Command timeout waits for page load; assertion timeout waits for network requests.
      C. Command timeout waits for actions like finding elements; assertion timeout waits for checks like visibility.
      D. Command timeout waits for assertions; assertion timeout waits for commands.

      Solution

      1. Step 1: Understand command timeout purpose

        Command timeout is the time Cypress waits to find or interact with elements before failing.
      2. Step 2: Understand assertion timeout purpose

        Assertion timeout is the time Cypress waits for conditions like visibility or text to become true in assertions.
      3. Final Answer:

        Command timeout waits for actions like finding elements; assertion timeout waits for checks like visibility. -> Option C
      4. Quick Check:

        Command timeout vs assertion timeout = Command timeout waits for actions like finding elements; assertion timeout waits for checks like visibility. [OK]
      Hint: Command = action wait, Assertion = check wait [OK]
      Common Mistakes:
      • Confusing command timeout with page load timeout
      • Thinking assertion timeout waits for commands
      • Mixing up API calls with UI element waits
      2. Which of the following is the correct way to set a command timeout of 10 seconds in Cypress?
      easy
      A. cy.get('button', { timeout: 10000 })
      B. cy.get('button').timeout(10000)
      C. cy.get('button').setTimeout(10000)
      D. cy.get('button').waitTimeout(10000)

      Solution

      1. Step 1: Recall Cypress command timeout syntax

        Timeout for commands like cy.get() is set by passing an options object with timeout in milliseconds.
      2. Step 2: Check each option for correct syntax

        Only cy.get('button', { timeout: 10000 }) uses the correct syntax. The others use invalid methods.
      3. Final Answer:

        cy.get('button', { timeout: 10000 }) -> Option A
      4. Quick Check:

        Command timeout syntax = cy.get('button', { timeout: 10000 }) [OK]
      Hint: Timeout is an option object in commands [OK]
      Common Mistakes:
      • Using non-existent methods like .timeout()
      • Passing timeout as a separate method
      • Confusing assertion timeout syntax with command timeout
      3. Consider this Cypress code snippet:
      cy.get('#submit', { timeout: 5000 }).click();
      cy.get('#message').should('be.visible', { timeout: 10000 });

      What happens if the #submit button appears after 6 seconds and the #message appears after 8 seconds?
      medium
      A. Test fails at clicking #submit but passes the visibility check for #message.
      B. Test passes both clicking #submit and visibility check for #message.
      C. Test fails both clicking #submit and visibility check for #message.
      D. Test passes clicking #submit but fails visibility check for #message.

      Solution

      1. Step 1: Analyze command timeout for #submit

        The command timeout is 5000 ms (5 seconds). The button appears after 6 seconds, which is too late, so the click command fails.
      2. Step 2: Analyze assertion timeout for #message

        The assertion timeout is 10000 ms (10 seconds). The message appears after 8 seconds, which is within timeout, so the assertion passes.
      3. Final Answer:

        Test fails at clicking #submit but passes the visibility check for #message. -> Option A
      4. Quick Check:

        Command timeout too short, assertion timeout sufficient = Test fails at clicking #submit but passes the visibility check for #message. [OK]
      Hint: Command timeout limits action wait; assertion timeout limits check wait [OK]
      Common Mistakes:
      • Assuming both timeouts behave the same
      • Ignoring timeout values in options
      • Thinking assertion timeout affects commands
      4. You wrote this Cypress test:
      cy.get('.loading', { timeout: 3000 }).should('not.exist');

      But the test fails because the element disappears after 5 seconds. What is the best fix?
      medium
      A. Increase the command timeout to more than 5000 ms.
      B. Change should('not.exist') to should('be.visible').
      C. Add a cy.wait(5000) before the assertion.
      D. Increase the assertion timeout to more than 5000 ms.

      Solution

      1. Step 1: Identify what is being waited on

        The test waits for the element to disappear, which is an assertion (should('not.exist')).
      2. Step 2: Adjust the correct timeout

        The command timeout controls finding the element, but the assertion timeout controls waiting for the condition. Since the element disappears after 5 seconds, increase assertion timeout beyond 5000 ms.
      3. Final Answer:

        Increase the assertion timeout to more than 5000 ms. -> Option D
      4. Quick Check:

        Assertion timeout controls condition wait = Increase the assertion timeout to more than 5000 ms. [OK]
      Hint: Wait for condition? Increase assertion timeout [OK]
      Common Mistakes:
      • Increasing command timeout instead of assertion timeout
      • Using fixed wait instead of timeout adjustment
      • Changing assertion logic incorrectly
      5. You want to test a slow-loading modal that appears after clicking a button. The button may take up to 4 seconds to appear, and the modal may take up to 7 seconds to become visible. Which is the best way to set timeouts in Cypress?
      hard
      A. Use cy.get('button').click({ timeout: 7000 }) and cy.get('.modal').should('be.visible', { timeout: 4000 }).
      B. Use cy.get('button', { timeout: 5000 }).click() and cy.get('.modal').should('be.visible', { timeout: 8000 }).
      C. Use cy.get('button', { timeout: 3000 }).click() and cy.get('.modal').should('be.visible', { timeout: 3000 }).
      D. Use cy.get('button').click() and cy.get('.modal').should('be.visible') with no timeouts set.

      Solution

      1. Step 1: Set command timeout for button appearance

        The button may appear after up to 4 seconds, so set command timeout slightly higher (5000 ms) to allow finding it.
      2. Step 2: Set assertion timeout for modal visibility

        The modal may take up to 7 seconds to appear, so set assertion timeout higher (8000 ms) to wait for visibility.
      3. Final Answer:

        Use cy.get('button', { timeout: 5000 }).click() and cy.get('.modal').should('be.visible', { timeout: 8000 }). -> Option B
      4. Quick Check:

        Command timeout for action, assertion timeout for condition = Use cy.get('button', { timeout: 5000 }).click() and cy.get('.modal').should('be.visible', { timeout: 8000 }). [OK]
      Hint: Set command timeout for element, assertion timeout for checks [OK]
      Common Mistakes:
      • Swapping timeout values between command and assertion
      • Setting timeouts too low causing flaky tests
      • Not setting timeouts causing premature failures
      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