Bird
Raised Fist0
Cypresstesting~5 mins

cy.session() for session caching in Cypress - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is cy.session() used for in Cypress?

cy.session() is used to cache and restore browser sessions to speed up tests by avoiding repeated login or setup steps.

Click to reveal answer
beginner
How does cy.session() improve test performance?

It saves the session state once and reuses it in later tests, so Cypress does not need to repeat login or setup actions every time.

Click to reveal answer
beginner
What are the two main arguments of cy.session()?

The first is a unique session identifier (like a username). The second is a callback function that sets up the session (like logging in).

Click to reveal answer
intermediate
True or False: cy.session() automatically clears cookies and local storage before restoring a session.

True. Cypress clears cookies, local storage, and session storage before restoring the cached session to avoid conflicts.

Click to reveal answer
intermediate
What should you do if your session setup changes and cy.session() returns stale data?

You can force Cypress to recreate the session by changing the session id or clearing the session cache.

Click to reveal answer
What is the primary benefit of using cy.session() in Cypress tests?
AAutomatically generating test data
BSpeeding up tests by caching login sessions
CRunning tests in parallel
DTaking screenshots during tests
Which of the following is NOT cleared automatically before restoring a session with cy.session()?
ABrowser Cache
BLocal Storage
CSession Storage
DCookies
What is the first argument to cy.session() typically used for?
AThe URL to visit
BThe browser type
CThe test name
DA unique session identifier
If your login process changes, how can you ensure cy.session() uses the updated session?
AUse <code>cy.reload()</code> after login
BRestart the browser manually
CChange the session id or clear the session cache
DNothing, it updates automatically
Which Cypress command is commonly used inside the cy.session() callback to set up the session?
Acy.visit() and cy.get() to perform login steps
Bcy.request() to clear cookies
Ccy.screenshot() to capture the page
Dcy.wait() to pause the test
Explain how cy.session() helps speed up Cypress tests and describe its basic usage.
Think about how you avoid logging in every time manually.
You got /4 concepts.
    Describe what happens internally when Cypress restores a session using cy.session().
    Consider what needs to be cleaned before restoring to avoid conflicts.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using cy.session() in Cypress tests?
      easy
      A. To run tests in parallel
      B. To clear cookies before each test
      C. To cache user sessions and avoid repeated login steps
      D. To generate random test data

      Solution

      1. Step 1: Understand what cy.session() does

        cy.session() caches login or setup steps so tests don't repeat them.
      2. Step 2: Identify the main benefit

        This caching speeds up tests by reusing sessions instead of logging in every time.
      3. Final Answer:

        To cache user sessions and avoid repeated login steps -> Option C
      4. Quick Check:

        Session caching = Avoid repeated logins [OK]
      Hint: Remember: cy.session() saves login to speed tests [OK]
      Common Mistakes:
      • Thinking it clears cookies instead of caching sessions
      • Confusing it with parallel test execution
      • Assuming it generates test data
      2. Which of the following is the correct syntax to create a session with cy.session()?
      easy
      A. cy.session('user', () => { cy.login() })
      B. cy.session('user', cy.login())
      C. cy.session('user', function cy.login())
      D. cy.session('user', cy.login)

      Solution

      1. Step 1: Recall cy.session() syntax

        The second argument must be a callback function that runs login steps, e.g., () => { cy.login() }.
      2. Step 2: Check each option

        Only cy.session('user', () => { cy.login() }) correctly passes a callback function. The other options pass a function reference incorrectly, execute the function immediately, or use invalid syntax.
      3. Final Answer:

        cy.session('user', () => { cy.login() }) -> Option A
      4. Quick Check:

        Callback function syntax = cy.session('user', () => { cy.login() }) [OK]
      Hint: Use arrow function for session callback: () => { ... } [OK]
      Common Mistakes:
      • Passing function call instead of function
      • Using invalid function syntax
      • Omitting the callback wrapper
      3. Given the code below, what will be the output in the test run?
      cy.session('admin', () => {
        cy.visit('/login')
        cy.get('#username').type('admin')
        cy.get('#password').type('password')
        cy.get('button[type=submit]').click()
      })
      
      cy.session('admin', () => {
        cy.visit('/dashboard')
      })
      medium
      A. The login steps run only once; second session reuses cached login
      B. Both sessions run login steps twice
      C. Second session throws an error because visit is different
      D. The test fails due to duplicate session keys

      Solution

      1. Step 1: Understand session caching behavior

        Sessions with the same key ('admin') cache the first login steps and reuse them in subsequent calls.
      2. Step 2: Analyze the second cy.session() call

        The second call with the same key skips login steps and reuses the cached session, so only the visit to '/dashboard' runs.
      3. Final Answer:

        The login steps run only once; second session reuses cached login -> Option A
      4. Quick Check:

        Same key session = cached login reused [OK]
      Hint: Same session key means login runs once only [OK]
      Common Mistakes:
      • Assuming login runs every time
      • Thinking different visits cause errors
      • Believing duplicate keys cause test failure
      4. Identify the error in the following code using cy.session():
      cy.session('user', () => {
        cy.visit('/login')
        cy.get('#user').type('test')
        cy.get('#pass').type('1234')
        cy.get('button').click()
      })
      
      cy.session('user', () => {
        cy.visit('/profile')
      })
      medium
      A. The session key 'user' is reused, causing session cache conflict
      B. The login callback does not return a promise or chain commands
      C. The second session callback should include login steps again
      D. No error; code works as expected

      Solution

      1. Step 1: Check session key usage

        Reusing the same session key 'user' is correct to cache and reuse the session.
      2. Step 2: Verify callback structure

        The callback contains Cypress commands chained properly; no need to return a promise explicitly.
      3. Step 3: Confirm second session usage

        The second session call reuses the cached session and visits '/profile' without error.
      4. Final Answer:

        No error; code works as expected -> Option D
      5. Quick Check:

        Reusing session key with proper callback = No error [OK]
      Hint: Reusing session key with proper callback is valid [OK]
      Common Mistakes:
      • Thinking session keys must be unique per call
      • Expecting explicit promise return in callback
      • Assuming login steps must repeat every time
      5. You want to speed up tests by caching sessions but notice some tests fail intermittently due to stale session data. How can you modify cy.session() usage to fix this?
      hard
      A. Use a different session key for every test to avoid caching
      B. Add a validate callback to check session validity before reuse
      C. Remove cy.session() and login every time
      D. Clear cookies manually before each test instead of using cy.session()

      Solution

      1. Step 1: Understand stale session problem

        Stale sessions cause intermittent failures because cached data may expire or become invalid.
      2. Step 2: Use validate callback in cy.session()

        The validate callback runs before reusing a session to confirm it is still valid, forcing a fresh login if needed.
      3. Step 3: Avoid other options

        Using different keys disables caching, removing benefits. Removing cy.session() slows tests. Clearing cookies manually is less efficient.
      4. Final Answer:

        Add a validate callback to check session validity before reuse -> Option B
      5. Quick Check:

        Validate callback fixes stale session issues [OK]
      Hint: Use validate callback to confirm session freshness [OK]
      Common Mistakes:
      • Disabling caching by changing keys unnecessarily
      • Ignoring session validation causing flaky tests
      • Removing session caching and slowing tests
      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