Bird
Raised Fist0
Cypresstesting~5 mins

Preserving state between tests in Cypress - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does 'preserving state between tests' mean in Cypress?
It means keeping certain data like cookies or local storage so tests can share the same session or user state without logging in again.
Click to reveal answer
intermediate
How can you preserve cookies between tests in Cypress?
Use cy.getCookie() and cy.setCookie() or use Cypress.Cookies.preserveOnce() inside beforeEach() hooks to keep cookies across tests.
Click to reveal answer
intermediate
What is the purpose of cy.session() in Cypress?
cy.session() helps save and restore browser session data like cookies and local storage to speed up tests and keep user state between tests.
Click to reveal answer
beginner
Why should tests avoid relying on preserved state when possible?
Because tests should be independent and repeatable. Relying on preserved state can hide bugs and make tests harder to debug.
Click to reveal answer
advanced
Which Cypress command helps preserve local storage between tests?
You can use cy.restoreLocalStorage() and cy.saveLocalStorage() with custom commands or plugins to keep local storage data between tests.
Click to reveal answer
Which Cypress command is designed to save and restore session data between tests?
Acy.reload()
Bcy.session()
Ccy.visit()
Dcy.clearCookies()
Why is preserving state between tests useful?
ATo speed up tests by avoiding repeated logins
BTo make tests dependent on each other
CTo hide bugs in the application
DTo clear all data after each test
What is a risk of relying too much on preserved state in tests?
ATests become slower
BTests may fail randomly
CTests lose independence and may hide bugs
DTests cannot run in parallel
Which of these is NOT a way to preserve state in Cypress?
ASaving cookies manually
BUsing cy.preserveOnce()
CUsing cy.session()
DUsing cy.clearLocalStorage()
To preserve local storage between tests, you should:
AUse cy.saveLocalStorage() and cy.restoreLocalStorage() custom commands
BUse cy.clearCookies()
CReload the page after each test
DAvoid using local storage
Explain how you can preserve user login state between Cypress tests and why it is helpful.
Think about saving cookies or session data to avoid logging in every test.
You got /4 concepts.
    Describe the risks of relying on preserved state between tests and how to balance it with test independence.
    Consider test reliability and debugging.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main reason to preserve state between tests in Cypress?
      easy
      A. To clear all cookies after each test
      B. To make tests dependent on each other
      C. To avoid repeating login steps and speed up test execution
      D. To disable assertions in tests

      Solution

      1. Step 1: Understand test state preservation

        Preserving state means keeping some data like cookies so tests don't repeat setup steps.
      2. Step 2: Identify the benefit

        Keeping state avoids repeating login or setup, making tests faster and more efficient.
      3. Final Answer:

        To avoid repeating login steps and speed up test execution -> Option C
      4. Quick Check:

        Preserving state = faster tests [OK]
      Hint: Preserve state to skip repeated steps and save time [OK]
      Common Mistakes:
      • Thinking tests should be dependent on each other
      • Believing preserving state clears cookies
      • Assuming preserving state disables assertions
      2. Which of the following is the correct syntax to preserve a cookie named 'session_id' only once in Cypress?
      easy
      A. Cypress.Cookies.preserveOnce('session_id')
      B. cy.preserveCookie('session_id')
      C. Cypress.preserveCookieOnce('session_id')
      D. cy.Cookies.preserve('session_id')

      Solution

      1. Step 1: Recall Cypress cookie preservation method

        The correct method to preserve cookies once is Cypress.Cookies.preserveOnce.
      2. Step 2: Match method and argument

        The method takes the cookie name as a string argument, e.g., 'session_id'.
      3. Final Answer:

        Cypress.Cookies.preserveOnce('session_id') -> Option A
      4. Quick Check:

        Preserve once = Cypress.Cookies.preserveOnce [OK]
      Hint: Use Cypress.Cookies.preserveOnce('cookieName') to keep cookies once [OK]
      Common Mistakes:
      • Using cy.preserveCookie which does not exist
      • Mixing method names like preserveCookieOnce
      • Calling preserve on cy.Cookies which is invalid
      3. Given the following Cypress test code, what will be the output of the second test?
      describe('Test Suite', () => {
        beforeEach(() => {
          Cypress.Cookies.preserveOnce('token')
        })
      
        it('Test 1: Set cookie', () => {
          cy.setCookie('token', 'abc123')
        })
      
        it('Test 2: Check cookie', () => {
          cy.getCookie('token').should('have.property', 'value', 'abc123')
        })
      })
      medium
      A. Test 2 passes because the 'token' cookie is preserved
      B. Test 2 fails because cookies are cleared between tests
      C. Test 2 throws a syntax error
      D. Test 2 passes but the cookie value is empty

      Solution

      1. Step 1: Analyze cookie preservation in beforeEach

        The beforeEach hook preserves the 'token' cookie between tests using Cypress.Cookies.preserveOnce('token').
      2. Step 2: Understand cookie setting and checking

        Test 1 sets the cookie 'token' to 'abc123'. Test 2 checks the cookie value. Since the cookie is preserved, the check passes.
      3. Final Answer:

        Test 2 fails because cookies are cleared between tests -> Option B
      4. Quick Check:

        PreserveOnce keeps cookie for next test [OK]
      Hint: Preserve cookie in beforeEach to keep it for next test [OK]
      Common Mistakes:
      • Assuming cookies clear automatically between tests
      • Thinking preserveOnce clears cookies
      • Confusing syntax causing errors
      4. You wrote this code to preserve cookies but the second test fails because the cookie is missing:
      beforeEach(() => {
        Cypress.Cookies.preserveOnce('auth_token')
      })
      
      it('Login test', () => {
        cy.setCookie('auth_token', 'xyz789')
      })
      
      it('Dashboard test', () => {
        cy.getCookie('auth_token').should('exist')
      })

      What is the likely cause of the failure?
      medium
      A. The cookie is set after the beforeEach hook runs, so it is not preserved
      B. The cookie name is misspelled in preserveOnce
      C. Cypress cannot preserve cookies between tests
      D. The assertion syntax is incorrect

      Solution

      1. Step 1: Understand when preserveOnce runs

        The beforeEach hook runs before each test, so it preserves cookies existing before the test starts.
      2. Step 2: Analyze cookie setting timing

        The cookie is set inside the first test, after beforeEach runs, so it is not preserved for the next test.
      3. Final Answer:

        The cookie is set after the beforeEach hook runs, so it is not preserved -> Option A
      4. Quick Check:

        PreserveOnce must run after cookie set [OK]
      Hint: Set cookies before preserveOnce runs to keep them [OK]
      Common Mistakes:
      • Thinking preserveOnce preserves cookies set during the test
      • Assuming Cypress can't preserve cookies
      • Blaming assertion syntax instead of timing
      5. You want to preserve multiple cookies named 'token' and 'user_id' across all tests without calling preserveOnce in every test. Which is the best way to do this in Cypress?
      hard
      A. Disable cookie clearing globally with Cypress.config
      B. Call Cypress.Cookies.preserveOnce('token', 'user_id') in each test
      C. Set cookies again in every test manually
      D. Use Cypress.Cookies.defaults({ whitelist: ['token', 'user_id'] }) in support file

      Solution

      1. Step 1: Understand preserving multiple cookies globally

        Using Cypress.Cookies.defaults with a preserve array keeps specified cookies across all tests automatically.
      2. Step 2: Compare with other options

        Calling preserveOnce in every test is repetitive. Manually setting cookies each time is inefficient. Disabling cookie clearing globally is not recommended.
      3. Final Answer:

        Use Cypress.Cookies.defaults({ whitelist: ['token', 'user_id'] }) in support file -> Option D
      4. Quick Check:

        Defaults preserve multiple cookies globally [OK]
      Hint: Use Cypress.Cookies.defaults to preserve cookies globally [OK]
      Common Mistakes:
      • Calling preserveOnce repeatedly instead of defaults
      • Manually resetting cookies each test
      • Trying to disable cookie clearing globally
      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