1. ホーム
  2. cookies

[解決済み] Cypress のテスト間で Cookie / localStorage セッションを保持する。

2022-02-14 22:13:54

質問内容

で設定したクッキーやlocalStorageのトークンを保存/貼り付け/保存したい。 cy.request() そうすれば、テストのたびにカスタムコマンドを使用してログインする必要はありません。これは次のようなトークンに対して動作するはずです。 jwt (json Webトークン)は、クライアントのlocalStorageに保存されます。

どのように解決するのですか?

サイプレスから ドキュメント

Cookieの永続化について : デフォルトでは、Cypressは各テストの前に自動的にすべてのCookieをクリアして、状態が蓄積されるのを防ぎます。

Cypress.Cookies apiを使用して、テスト全体で保存する特定のCookieを設定することができます。

// now any cookie with the name 'session_id' will
// not be cleared before each test runs
Cypress.Cookies.defaults({
  preserve: "session_id"
})

ノート : Cypress v5.0以前では、設定キーは"whitelist"であり、"preserve"ではない。

localStorageの永続化について : ATMには組み込まれていませんが、ローカルストレージをクリアするメソッドがCypress.LocalStorage.clearとして公開されているので、今すぐ手動で実現することができます。

このメソッドをバックアップし、送られてきたキーに基づいてオーバーライドすることができます。

const clear = Cypress.LocalStorage.clear

Cypress.LocalStorage.clear = function (keys, ls, rs) {
  // do something with the keys here
  if (keys) {
    return clear.apply(this, arguments)
  }

}