Cypress позволяет сохранять и восстанавливать сессию (cookies, localStorage, sessionStorage) при помощи команды
cy.session(), чтобы логин не выполнялся перед каждым it. Это ускоряет тесты и делает их стабильнее.Что еще полезного:
✅ Ускоряет тесты — логин происходит единожды, остальные кейсы используют сохранённую сессию
✅ Удобно для крупных e2e-сценариев с авторизацией
✅ Поддерживает несколько сессий по разным ключам (пример: для разных ролей пользователя)
Как настроить:
beforeEach(() => {
cy.session(['qa@example.com', '123456'], () => {
cy.visit('/login')
cy.get('input[name="email"]').type('qa@example.com')
cy.get('input[name="password"]').type('123456')
cy.get('button[type="submit"]').click()
cy.url().should('contain', '/dashboard')
}, {
cacheAcrossSpecs: false
})
cy.visit('/dashboard')
})
➡️
cy.session() — кэширует сессию по идентификатору (массив или строка)➡️ На следующий it Cypress восстановит сессию, минуя повторный логин
➡️ После
cy.session() обязательно добавляйте cy.visit(), чтобы перейти на нужную страницу 💡 Дополнительно:
— Используйте
cacheAcrossSpecs: true, чтобы сессия сохранялась между spec-файлами при запуске cypress run --browser electron (но могут быть нюансы с Chrome)— Для валидации сессии можно добавить
validate() опцию: при неуспехе — сессия пересоздаётся— Cypress.session API позволяет отслеживать и очищать, если необходимо
🐸 Библиотека тестировщика
#буст