Cypress.Cookies
Cookies.preserveOnce() и Cookies.defaults() позволяют контролировать поведение куки Cypress.
Cookies.debug() позволяет генерировать логи в консоль всякий раз, когда изменяются какие-либо куки.
Cypress автоматически очищает все куки перед каждым тестом, чтобы предотвратить накопление состояния.
Вы можете воспользоваться Cypress.Cookies.preserveOnce() или даже сохранить куки по их имени, чтобы сохранить значения между несколькими тестами. Это позволяет сохранить сессии через несколько тестов.
Синтаксис
Cypress.Cookies.debug(enable, options)
Cypress.Cookies.preserveOnce(names...)
Cypress.Cookies.defaults(options)
Аргументы
enable (Булево)
Включить отладку куки.
names
Имена куки, которые нужно сохранить. Можно передать неограниченное количество аргументов.
options (Объект)
Установить значения по умолчанию для всех куки, например, сохранять набор куки, чтобы обойти их очистку перед каждым тестом.
Примеры
Отладка
Выводить логи при создании, изменении или удалении значений куки
Включив отладку, Cypress автоматически будет генерировать логи в консоль, когда он устанавливает или очищает значения куки. Это полезно для понимания того, как Cypress очищает куки перед каждым тестом, а также для визуализации того, как обращаться с сохранением куки между тестами.
Cypress.Cookies.debug(true) // now Cypress will log when it alters cookies
cy.clearCookie('foo')
cy.setCookie('foo', 'bar')
Отключить подробную отладочную информацию
По умолчанию Cypress будет выводить в лог объект куки, что позволяет проверить все его свойства. Однако вам может не потребоваться такой уровень детализации, и вы можете отключить его.
Cypress.Cookies.debug(true, { verbose: false })
Теперь, когда Cypress выводит в лог куки, они будут содержать только name и value.
Отладка будет включена до тех пор, пока вы ее явно не отключите.
Cypress.Cookies.debug(false) // now debugging is turned off
Сохранение
Сохранение куки между тестами
Cypress предоставляет интерфейс для автоматического сохранения куки для нескольких тестов. По умолчанию Cypress автоматически очищает все куки перед началом каждого нового теста.
Очищая куки перед каждым тестом, вы гарантируете, что всегда начинаете с чистого состояния. Начало с чистого состояния предотвращает зависимость ваших тестов друг от друга и ситуации, когда изменение чего-либо в вашем приложении в одном тесте влияет на другой тест.
Наиболее распространенный случай использования сохранения куки — предотвращение необходимости входа в приложение перед каждым отдельным тестом. Это проблема, если большая часть каждого теста тратится на вход пользователя.
Вы можете использовать Cypress.Cookies.preserveOnce() для сохранения куки между тестами.
Вероятно, существуют лучшие способы сделать это, но в данный момент это не хорошо документировано. Каждое приложение отличается, и нет универсального решения. Пока что, если вы используете куки на основе сессий, этот метод будет работать.
describe('Dashboard', () => {
before(() => {
// log in only once before any of the tests run.
// your app will likely set some sort of session cookie.
// you'll need to know the name of the cookie(s), which you can find
// in your Resources -> Cookies panel in the Chrome Dev Tools.
cy.login()
})
beforeEach(() => {
// before each test, we can automatically preserve the
// 'session_id' and 'remember_token' cookies. this means they
// will not be cleared before the NEXT test starts.
//
// the name of your cookies will likely be different
// this is an example
Cypress.Cookies.preserveOnce('session_id', 'remember_token')
})
it('displays stats', () => {
// ...
})
it('can do something', () => {
// ...
})
it('opens a modal', () => {
// ...
})
})
Значения по умолчанию
Установка глобальных значений по умолчанию для куки
Вы можете изменить глобальные значения по умолчанию и сохранить набор куки, которые всегда будут сохраняться между тестами.
Любые внесенные вами изменения вступят в силу немедленно для всех последующих тестов.
Отличное место для размещения этой конфигурации — ваш файл
cypress/support/index.js, так как он загружается перед оценкой каких-либо файлов тестов.
preserve принимает:
- Строка
- Массив
- Регулярное выражение
- Функция
Сохранение строки
// now any cookie with the name 'session_id' will
// not be cleared before each test runs
Cypress.Cookies.defaults({
preserve: 'session_id',
})
Сохранение массива
// now any cookie with the name 'session_id' or 'remember_token'
// will not be cleared before each test runs
Cypress.Cookies.defaults({
preserve: ['session_id', 'remember_token'],
})
Сохранение регулярного выражения
// now any cookie that matches this RegExp
// will not be cleared before each test runs
Cypress.Cookies.defaults({
preserve: /session|remember/,
})
Сохранение функции
Cypress.Cookies.defaults({
preserve: (cookie) => {
// implement your own logic here
// if the function returns truthy
// then the cookie will not be cleared
// before each test runs
},
})
История
| Версия | Изменения |
|---|---|
| 5.0.0 | Переименовано whitelist параметр на preserve
|
| 0.16.1 |
Добавлен параметр {verbose: false} |
| 0.16.0 | Убрана поддержка Cypress.Cookies.get, Cypress.Cookies.set и Cypress.Cookies.remove
|
| 0.12.4 |
Добавлен API Cypress.Cookies |
См. также
© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/cypress-api/cookies