B · CoreIntermediate50 min read
6. cy.session — fast auth without re-login
Cypress · 48 pages source format
Logging in every test wastes minutes in CI. cy.session caches authenticated state across specs while keeping tests isolated.
What you'll learn
- Session cache
- validate callback
- Multi-user sessions
Basic session
cy.session([user, pass], () => { ... login steps ... }) runs login once, restores cookies/localStorage after.
cy.session([username, password], () => {
cy.visit("/");
cy.get("[data-test=username]").type(username);
cy.get("[data-test=password]").type(password);
cy.get("[data-test=login-button]").click();
});Do this now
Wrap login in cy.session. Run suite — second spec should skip UI login.
Clear?
validate option
validate checks session still valid — re-runs setup if cookies expired.
Do this now
Add validate: () => cy.getCookie("session-token") or visit /inventory and check URL.
Clear?
Session per role
Different sessions for admin vs user — cache key includes role identifier.
Do this now
If app has roles, create cy.session for standard_user and problem_user separately.
Clear?