クイック スタート: Microsoft Playwright Testing Preview を使用してエンドツーエンドの継続的なテストを設定する

このクイックスタートでは、Microsoft Playwright Testing Preview を使用してエンドツーエンドの継続的なテストを設定し、コードのコミットごとに異なるブラウザーとオペレーティング システムで Web アプリが正しく実行されることを検証します。 GitHub Actions、Azure Pipelines、その他の CI プラットフォームなどの継続的インテグレーション (CI) ワークフローに Playwright テストを追加する方法について学習します。

このクイックスタートを完了すると、Microsoft Playwright Testing を使用して Playwright テスト スイートを大規模に実行する CI ワークフローが完成します。

重要

Microsoft Playwright Testing は現在、プレビュー段階です。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

前提条件

  • GitHub アカウント。 GitHub アカウントがない場合は、無料で作成できます
  • Playwright テスト仕様と GitHub Actions ワークフローを含む GitHub リポジトリ。 リポジトリを作成する場合は、「新しいリポジトリの作成」を参照してください。
  • GitHub Actions ワークフロー。 GitHub Actions の概要に関するヘルプが必要な場合は、最初のワークフローの作成に関するページを参照してください

サービス アクセス トークンを構成する

Microsoft Playwright Testing では、アクセス トークンを使用して、ユーザーがサービスで Playwright テストを実行することを承認します。 Playwright ポータルでサービス アクセス トークンを生成してから、サービス構成ファイルでアクセス トークンを指定できます。

アクセス トークンを生成し、CI ワークフロー シークレットとして格納するには、次の手順を行います。

  1. Azure アカウントを使用して、Playwright ポータルにサインインします。

  2. ワークスペース設定アイコンを選択し、[アクセス トークン] ページに移動します。

    Screenshot that shows the access tokens settings page in the Playwright Testing portal.

  3. [新しいトークンの生成] を選択して、CI ワークフロー用の新しいアクセス トークンを作成します。

  4. アクセス トークンの詳細を入力し、[トークンの生成] を選択します。

    Screenshot that shows setup guide in the Playwright Testing portal, highlighting the 'Generate token' button.

    Screenshot that shows how to copy the generated access token in the Playwright Testing portal.

  5. ワークフロー定義でクリア テキストでトークンを指定しないように、アクセス トークンを CI ワークフロー シークレットに格納します。

    1. GitHub リポジトリに移動し、[設定]>[シークレットと変数]>[アクション] を選びます。

    2. [New repository secret](新しいリポジトリ シークレット) を選択します。

    3. シークレットの詳細を入力し、[シークレットの追加] を選択して CI/CD シークレットを作成します。

      パラメーター
      名前 PLAYWRIGHT_SERVICE_ACCESS_TOKEN
      Value 前にコピーしたワークスペース アクセス トークンを貼り付けます。
    4. [OK] 選択してワークフロー シークレットを作成します。

サービス リージョン エンドポイントの URL を取得する

サービス構成では、リージョン固有のサービス エンドポイントを指定する必要があります。 エンドポイントは、ワークスペースの作成時に選択した Azure リージョンによって異なります。

サービス エンドポイント URL を取得し、CI ワークフロー シークレットとして格納するには、次の手順を行います。

  1. Azure アカウントを使用して、Playwright ポータルにサインインします。

  2. ワークスペースのホーム ページで、[セットアップ ガイドの表示] 選択します。

    ヒント

    複数のワークスペースがある場合は、ページの上部にあるワークスペース名を選んで別のワークスペースに切り替え、[すべてのワークスペースの管理] を選択できます。

  3. [セットアップのリージョン エンドポイントの追加] で、サービス エンドポイント URL をコピーします。

    エンドポイント URL は、ワークスペースの作成時に選択した Azure リージョンと一致します。

  4. サービス エンドポイント URL を CI ワークフロー シークレットに格納します。

    シークレット名
    PLAYWRIGHT_SERVICE_URL 前にコピーしたエンドポイント URL を貼り付けます。

サービス構成ファイルを追加する

クラウドでホストされているブラウザーで Playwright テストを実行するようにまだ構成していない場合は、リポジトリにサービス構成ファイルを追加します。 次の手順では、Playwright CLI でこのサービス構成ファイルを指定します。

  1. playwright.config.ts ファイルと共に新しいファイル playwright.service.config.ts を作成します。

    必要に応じて、サンプル リポジトリplaywright.service.config.ts ファイルを使用します。

  2. 次の内容を追加します。

    /*
    * This file enables Playwright client to connect to remote browsers.
    * It should be placed in the same directory as playwright.config.ts.
    */
    
    import { defineConfig } from '@playwright/test';
    import config from './playwright.config';
    import dotenv from 'dotenv';
    
    // Define environment on the dev box in .env file:
    //  .env:
    //    PLAYWRIGHT_SERVICE_ACCESS_TOKEN=XXX
    //    PLAYWRIGHT_SERVICE_URL=XXX
    
    // Define environment in your GitHub workflow spec.
    //  env:
    //    PLAYWRIGHT_SERVICE_ACCESS_TOKEN: ${{ secrets.PLAYWRIGHT_SERVICE_ACCESS_TOKEN }}
    //    PLAYWRIGHT_SERVICE_URL: ${{ secrets.PLAYWRIGHT_SERVICE_URL }}
    //    PLAYWRIGHT_SERVICE_RUN_ID: ${{ github.run_id }}-${{ github.run_attempt }}-${{ github.sha }}
    
    dotenv.config();
    
    // Name the test run if it's not named yet.
    process.env.PLAYWRIGHT_SERVICE_RUN_ID = process.env.PLAYWRIGHT_SERVICE_RUN_ID || new Date().toISOString();
    
    // Can be 'linux' or 'windows'.
    const os = process.env.PLAYWRIGHT_SERVICE_OS || 'linux';
    
    export default defineConfig(config, {
      // Define more generous timeout for the service operation if necessary.
      // timeout: 60000,
      // expect: {
      //   timeout: 10000,
      // },
      workers: 20,
    
      // Enable screenshot testing and configure directory with expectations.
      // https://learn.microsoft.com/azure/playwright-testing/how-to-configure-visual-comparisons
      ignoreSnapshots: false,
      snapshotPathTemplate: `{testDir}/__screenshots__/{testFilePath}/${os}/{arg}{ext}`,
      
      use: {
        // Specify the service endpoint.
        connectOptions: {
          wsEndpoint: `${process.env.PLAYWRIGHT_SERVICE_URL}?cap=${JSON.stringify({
            // Can be 'linux' or 'windows'.
            os,
            runId: process.env.PLAYWRIGHT_SERVICE_RUN_ID
          })}`,
          timeout: 30000,
          headers: {
            'x-mpt-access-key': process.env.PLAYWRIGHT_SERVICE_ACCESS_TOKEN!
          },
          // Allow service to access the localhost.
          exposeNetwork: '<loopback>'
        }
      },
      // Tenmp workaround for config merge bug in OSS https://github.com/microsoft/playwright/pull/28224
      projects: config.projects? config.projects : [{}]
    });
    
  3. ファイルを保存してソース コード リポジトリにコミットします。

ワークフロー定義を更新する

Playwright CLI を使用して Playwright テストを実行するように CI ワークフロー定義を更新します。 Playwright CLI の入力パラメーターとしてサービス構成ファイルを渡します。 環境変数を指定して、環境を構成します。

  1. CI ワークフロー定義を開きます

  2. 次の手順を追加して、Microsoft Playwright Testing で Playwright テストを実行します。

    次の手順では、GitHub Actions または Azure Pipelines のワークフローの変更について説明します。 同様に、他の CI プラットフォームで Playwright CLI を使用して、Playwright テストを実行できます。

    - name: Install dependencies
      working-directory: path/to/playwright/folder # update accordingly
      run: npm ci
    
    - name: Run Playwright tests
      working-directory: path/to/playwright/folder # update accordingly
      env:
        # Access token and regional endpoint for Microsoft Playwright Testing
        PLAYWRIGHT_SERVICE_ACCESS_TOKEN: ${{ secrets.PLAYWRIGHT_SERVICE_ACCESS_TOKEN }}
        PLAYWRIGHT_SERVICE_URL: ${{ secrets.PLAYWRIGHT_SERVICE_URL }}
        PLAYWRIGHT_SERVICE_RUN_ID: ${{ github.run_id }}-${{ github.run_attempt }}-${{ github.sha }}
      run: npx playwright test -c playwright.service.config.ts --workers=20
    
    - name: Upload Playwright report
      uses: actions/upload-artifact@v3
      if: always()
      with:
        name: playwright-report
        path: path/to/playwright/folder/playwright-report/ # update accordingly
        retention-days: 10
    
  3. 変更を保存してコミットします。

    CI ワークフローがトリガーされると、Playwright テストは、20 の並列ワーカーにわたって、クラウドでホストされているブラウザー上の Microsoft Playwright Testing ワークスペースで実行されます。

注意事項

Microsoft Playwright Testing では、テストの合計分数に基づいて課金されます。 初めてのユーザーの場合、または無料試用版の使用を開始している場合は、完全なテスト スイートの代わりに大規模な 1 つのテストを実行することで、無料のテスト時間を使い果たさないようにすることができます。

テストが正常に実行されたことを検証したら、サービスでさらに多くのテストを実行することで、テストの負荷を徐々に増やすことができます。

サービスで 1 つのテストを実行するには、次のコマンド ラインを使用します。

npx playwright test {name-of-file.spec.ts} --config=playwright.service.config.ts

クラウドでホストされているブラウザーで Playwright テストを大規模に実行するように、エンド ツー エンドの継続的なテスト ワークフローを正常に設定できました。