シナリオ間でログイン状態を引き継ぐ方法

Prev Next

概要

本ページでは、テストプランにおいて最初のシナリオでログイン操作を行い、その認証情報(CookieやToken)を後続のシナリオに引き継ぐ手順について説明します。この設定を行うことで、複数のシナリオでログイン状態を維持したままテストを実行できます。

前提条件

本手順を実施するには、開発担当者に、ログイン状態の維持に必要なCookie名や属性情報(Domain、Path、Secure等)を確認してください。

手順

1. ワークスペース変数の作成

ワークスペース変数の作成 を参考に、認証情報を保存する変数を作成します。(例: AUTH_TOKEN)

2. ログイン用シナリオの作成(認証情報の取得)

テストプランの最初に実行するシナリオを作成し、認証情報を取得して手順1で作成したワークスペース変数に保存します。

  1. 新しいシナリオ を作成し、ログイン操作を記録します。

  2. シナリオエディタで ステップを挿入 をクリックし、 Playwrightコードステップ を選択します。

  3. 以下のコードを参考に、認証情報を取得して値を返すコードを入力します。

    const cookies = await page.context().cookies();
    // ※具体的なCookie名は開発担当者にご確認ください
    const sessionCookie = cookies.find(c => c.name === 'COOKIE_NAME');
    // 後続ステップで利用するため値を返します
    return sessionCookie ? sessionCookie.value : '';
    
  4. 追加したステップの下で、再度 ステップを挿入 をクリックし、 ワークスペース変数を上書きする を選択します。

  5. 上書きする変数 で、手順1で作成した変数を選択します。

  6. 上書き値 の入力方法として 他のステップの結果 を選択します。

  7. 参照先として、直前の「Playwrightコードステップ」を選択します。

  8. 保存 をクリックします。

3. 後続シナリオの作成(認証情報の利用)

認証情報を利用する後続のシナリオを作成します。

  1. 新しいシナリオを作成します。

  2. シナリオの最初のステップとして ステップを挿入 をクリックし、 Playwrightコードステップ を追加します。

  3. 以下のコードを参考に、Cookieをセットしてページへアクセスするコードを入力します。 ※ {{AUTH_TOKEN}} の部分は、手順1で作成した変数名に合わせて記述してください。

    await context.addCookies([
      {
        name: 'COOKIE_NAME',      // 実際のCookie名
        value: '{{AUTH_TOKEN}}',  // ワークスペース変数名を指定
        domain: 'example.com',    // テスト対象ドメイン
        path: '/',
        httpOnly: true,           // 実際の属性に合わせて設定
        secure: true,             // httpsの場合はtrue
        sameSite: 'Lax'           // 実際の属性に合わせて設定
      }
    ]);
    // ログイン状態でアクセスしたいURLを指定
    await page.goto('https://example.com/dashboard/target_page');
    

4. テストプランの設定

シナリオをテストプランに追加し、変数の引き継ぎを有効にします。

  1. テストプラン 画面を開き、新しいテストプランを作成(または既存を編集)します。

  2. 手順2で作成した「ログイン用シナリオ」を最初に追加します。

  3. 手順3で作成した「後続シナリオ」を順番に追加します。

  4. テストプラン設定で 上書きされた変数の値を後続のシナリオに引き継ぐ にチェックを入れます。

  5. 保存 をクリックします。

留意点

  • アプリケーションへの依存: 本手順はアプリケーションの認証仕様に依存します。IP制限、トークンの有効期限、二要素認証(2FA)などが設定されている場合、この方法では対応できない可能性があります。

  • 実行順序の制約: 変数の引き継ぎを確実に行うため、並列実行設定は使用せず、シナリオの実行順序を固定してください。