Spec-Zone.ru › Cypress

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')
Console log when debugging cookies

Отключить подробную отладочную информацию

По умолчанию Cypress будет выводить в лог объект куки, что позволяет проверить все его свойства. Однако вам может не потребоваться такой уровень детализации, и вы можете отключить его.

Cypress.Cookies.debug(true, { verbose: false })

Теперь, когда Cypress выводит в лог куки, они будут содержать только name и value.

Console log cookies with debug

Отладка будет включена до тех пор, пока вы ее явно не отключите.

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

См. также

  • cy.clearCookie()
  • cy.clearCookies()
  • cy.getCookie()
  • cy.getCookies()
  • cy.setCookie()

© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/cypress-api/cookies

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API