👌

Playwrightでログイン状態を維持してテストを実施したい

2022/12/02に公開

やりたいこと

Playwrightを使ってのログインが必要なWeb画面の自動化テスト
ブラウザはステートレスのためログイン状態を維持することが出来ない為、各テストシナリオごとに対象のサイトにログインしていたのを、ログイン処理を共通化してログイン状態を維持した状態で各シナリオのテストを実施したい。

実装

ログイン処理のテストの実装

login_test.ts
import { expect, test } from "@playwright/test";

test("サイトに事前ログイン", async ({
  page,
}) => {
    // 画面を操作してログインが完了している状態
    // ログインセッション情報をエクスポート
    await page
      .context()
      .storageState({ path: `./tmp/sessions/login-account.json` });
}

ログイン後のテストの実装

post_data.ts
import { expect, test } from "@playwright/test";

test.describe("サイトにログイン済み", () => {
  test.use({ storageState: "./tmp/sessions/login-account.json" });

  test("ログイン後テスト", async ({
    page,
  }) => {
    // ログイン後の画面状態からテストを実施できる。
  });
}

Discussion