Local storage lets websites save small bits of data on your browser. Managing it in tests helps check if data is saved or cleared correctly.
Local storage management in Cypress
cy.window().then(win => { // Get local storage item const item = win.localStorage.getItem('key') // Set local storage item win.localStorage.setItem('key', 'value') // Remove local storage item win.localStorage.removeItem('key') // Clear all local storage win.localStorage.clear() })
Use cy.window() to access the browser's window object where local storage lives.
Always perform local storage actions inside then() to ensure Cypress waits for the window object.
cy.window().then(win => { win.localStorage.setItem('theme', 'dark') })
cy.window().then(win => { const theme = win.localStorage.getItem('theme') expect(theme).to.equal('dark') })
cy.window().then(win => { win.localStorage.removeItem('theme') })
cy.window().then(win => {
win.localStorage.clear()
})This test visits a page, saves a local storage item, checks it, removes it, and confirms it is gone.
describe('Local Storage Management Test', () => { it('should save, read, and clear local storage', () => { cy.visit('https://example.cypress.io') // Save item cy.window().then(win => { win.localStorage.setItem('user', 'Alice') }) // Check saved item cy.window().then(win => { const user = win.localStorage.getItem('user') expect(user).to.equal('Alice') }) // Remove item cy.window().then(win => { win.localStorage.removeItem('user') }) // Confirm removal cy.window().then(win => { const user = win.localStorage.getItem('user') expect(user).to.be.null }) }) })
Local storage is shared per domain, so tests on different sites have separate storage.
Use cy.clearLocalStorage() as a shortcut to clear storage if preferred.
Remember local storage stores only strings, so convert objects with JSON.stringify() and JSON.parse().
Local storage holds small data in the browser for a website.
Cypress uses cy.window() to access and manage local storage.
Tests can save, read, remove, and clear local storage to check app behavior.
Practice
Solution
Step 1: Understand local storage role
Local storage is used by browsers to save small data like user preferences or tokens persistently.Step 2: Connect with Cypress testing
Cypress can access this storage to verify or manipulate data during tests.Final Answer:
To store small amounts of data persistently for a website -> Option BQuick Check:
Local storage = persistent small data [OK]
- Confusing local storage with server-side storage
- Thinking local storage runs code
- Mixing local storage with styling or network
Solution
Step 1: Recall Cypress commands for browser objects
To access the browser's window object, Cypress providescy.window().Step 2: Understand local storage access
Local storage is a property of the window object, socy.window()is used to reach it.Final Answer:
cy.window() -> Option DQuick Check:
Access window with cy.window() [OK]
- Using non-existent commands like cy.getLocalStorage()
- Confusing cy.document() with window object
- Assuming cy.localStorage() exists
cy.window().then(win => {
win.localStorage.setItem('user', 'Alice');
const user = win.localStorage.getItem('user');
cy.wrap(user).should('equal', 'Alice');
});Solution
Step 1: Analyze localStorage set and get
The code sets 'user' key to 'Alice' in localStorage, then retrieves it correctly.Step 2: Check assertion correctness
The assertion checks if retrieved value equals 'Alice', which is true, so test passes.Final Answer:
Test will pass because 'user' is set and retrieved correctly -> Option CQuick Check:
Set and get localStorage works, test passes [OK]
- Assuming localStorage is inaccessible in Cypress
- Thinking setItem syntax is wrong
- Expecting undefined instead of stored value
cy.window().then(win => {
win.localStorage.clear;
});Solution
Step 1: Check localStorage clear usage
localStorage.clear is a function and must be called with parentheses: clear()Step 2: Identify missing parentheses error
The code uses clear without parentheses, so it does not execute the function.Final Answer:
Missing parentheses to call clear method -> Option AQuick Check:
Call clear() with parentheses to clear storage [OK]
- Forgetting parentheses when calling functions
- Thinking clear needs a key argument
- Assuming cy.window() can't access localStorage
Solution
Step 1: Save token in localStorage correctly
Using cy.window().then(win => win.localStorage.setItem('token', 'abc123')) correctly sets the token.Step 2: Reload and verify token presence
After cy.reload(), accessing localStorage via cy.window().then and asserting with expect ensures token is still 'abc123'.Step 3: Evaluate other options
cy.window().then(win => win.localStorage.setItem('token', 'abc123')); cy.reload(); cy.window().its('localStorage.token').should('equal', 'abc123'); uses incorrect property access for localStorage token; cy.setLocalStorage('token', 'abc123'); cy.reload(); cy.getLocalStorage('token').should('equal', 'abc123'); uses non-existent commands; cy.window().then(win => win.localStorage.clear()); cy.reload(); cy.window().its('localStorage.token').should('be.null'); clears storage and checks for null, which is not the goal.Final Answer:
Use cy.window() to set, reload, then check with expect -> Option AQuick Check:
Set, reload, then assert with cy.window() and expect [OK]
- Using wrong localStorage property access
- Using non-existent Cypress commands
- Clearing storage instead of verifying token
Ready to prove it?
Pass the test and this pattern moves unknown
