Manuals / Cypress / Ch 6

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?

Checklist