次の方法で共有


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

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

このクイック スタートを完了すると、Playwright テスト スイートを大規模に実行し、Playwright ワークスペースでテストのトラブルシューティングを簡単に行える CI ワークフローが完成します。

[前提条件]

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

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

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

  1. Azure アカウントで Azure portal にサインインし、ワークスペースに移動します。

  2. [ 作業の開始 ] ページを選択します。

    [作業の開始] ページに移動する方法を示すスクリーンショット。

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

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

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

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

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

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

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

    必要に応じて、playwright.service.config.ts ファイルを使用します。

  2. それに次のコンテンツを追加します。

    import { defineConfig } from '@playwright/test';
    import { createAzurePlaywrightConfig, ServiceOS } from '@azure/playwright';
    import { DefaultAzureCredential } from '@azure/identity';
    import config from './playwright.config';
    
    /* Learn more about service configuration at https://aka.ms/pww/docs/config */
    export default defineConfig(
      config,
      createAzurePlaywrightConfig(config, {
        exposeNetwork: '<loopback>',
        connectTimeout: 3 * 60 * 1000, // 3 minutes
        os: ServiceOS.LINUX,
        credential: new DefaultAzureCredential(),
      })
    );
    

    既定では、サービス構成を使用すると、クラウドでホストされているブラウザーを使用してテストを並列で実行することで、ビルド パイプラインを高速化できます。

  3. ファイルを保存してソース コード リポジトリにコミットします。

package.json ファイルを更新する

リポジトリ内の package.json ファイルを更新して、playwright Workspaces パッケージの詳細 devDependencies セクションに追加します。

"devDependencies": {
    "@azure/playwright": "latest"
}

サービス パッケージをインストールする

プロジェクトに Playwright Workspaces パッケージをインストールします。

dotnet add package Azure.Developer.Playwright.NUnit

このコマンドは、サービス パッケージの詳細を csproj セクションに追加して、プロジェクトの ItemGroup ファイルを更新します。 この変更をコミットすることを忘れないでください。

  <ItemGroup>
    <PackageReference Include="Azure.Developer.Playwright.NUnit" Version="1.0.0" />
  </ItemGroup>

サービス構成を設定する

  1. 自分のプロジェクトのルート ディレクトリに、PlaywrightServiceNUnitSetup.cs という新しいファイルを作成します。 このファイルにより、サービスを使用したクライアントの認証が容易になります。
  2. それに次のコンテンツを追加します。
using Azure.Developer.Playwright.NUnit;
using Azure.Identity;
using System.Runtime.InteropServices;
using System;

namespace PlaywrightService.SampleTests; // Remember to change this as per your project namespace

[SetUpFixture]
public class PlaywrightServiceNUnitSetup : PlaywrightServiceBrowserNUnit
{
    public PlaywrightServiceNUnitSetup() : base(
        credential: new DefaultAzureCredential(),
    )
    {
        // no-op
    }
}
  1. ファイルを保存してソース コード リポジトリにコミットします。

認証を設定する

Playwright テストを実行している CI マシンは、Playwright Workspaces サービスで認証して、ブラウザーでテストを実行できるようにする必要があります。

このサービスには、2 つの認証方法 (Microsoft Entra ID とアクセス トークン) が用意されています。 パイプラインの認証には、Microsoft Entra ID を使うことを強くお勧めします。

Microsoft Entra ID を使用して認証を設定する

GitHub Actions をお使いの場合は、GitHub OpenID Connect を使ってサービスに接続できます。 手順に従って統合を設定します。

[前提条件]

オプション 1: Microsoft Entra アプリケーション

  • Azure portalAzure CLI、または Azure PowerShell で、サービス プリンシパルを使って Microsoft Entra アプリケーションを作成します。

  • 後で GitHub Actions ワークフローで使うため、クライアント IDサブスクリプション IDディレクトリ (テナント) ID の値をコピーしておきます。

  • 前のステップで作成したサービス プリンシパルに、Owner または Contributor ロールを割り当てます。 これらのロールは、Playwright ワークスペースに割り当てる必要があります。 詳しくは、アクセスの管理方法に関する記事をご覧ください。

  • GitHub Actions により GitHub リポジトリに対して発行されたトークンを信頼するように、Microsoft Entra アプリケーションでフェデレーション ID 資格情報を構成します

オプション 2: ユーザー割り当てマネージド ID

GitHub シークレットを作成する
  • 前のステップで取得した値を、シークレットとして GitHub リポジトリに追加します。 GitHub アクション シークレットの設定に関する記事をご覧ください。 この後の手順では、これらの変数が GitHub アクション ワークフローで使われます。
GitHub シークレット ソース (Microsoft Entra アプリケーションまたはマネージド ID)
AZURE_CLIENT_ID クライアントID
AZURE_SUBSCRIPTION_ID サブスクリプション ID
AZURE_TENANT_ID ディレクトリ (テナント) ID

セキュリティを強化するため、機密性の高い値は、ワークフロー ファイルに直接含めるのではなく、GitHub Secrets を使って格納することを強くお勧めします。

アクセス トークンを使用して認証を設定します

注意事項

サービスへの認証には Microsoft Entra ID を使用することを強くお勧めします。 アクセス トークンをお使いの場合は、アクセストークンの管理方法に関する記事をご覧ください。

Playwright ワークスペースからアクセス トークンを生成し、セットアップで使用できます。 ただし、強化されたセキュリティのため、認証には Microsoft Entra ID を使用することを強くお勧めします。 アクセス トークンは便利ですが、有効期間が長いパスワードのように機能し、侵害されやすくなります。

  1. アクセス トークンを使用した認証は、既定では無効になっています。 使うには、アクセス トークン ベースの認証を有効にします

  2. アクセス トークンを使って認証を設定します

  3. アクセス トークンを CI ワークフロー シークレットに格納し、GitHub Actions ワークフローまたは Azure パイプラインの yaml ファイルでそれを使います。

シークレット名 価値
PLAYWRIGHT_SERVICE_ACCESS_TOKEN 前に作成したアクセス トークンの値を貼り付けます。

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

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

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

  2. Playwright ワークスペースで Playwright テストを実行するには、次の手順を追加します。

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

    
      # This step is to sign-in to Azure to run tests from GitHub Action workflow. 
      # Choose how to set up authentication to Azure from GitHub Actions. This is one example. 
      name: Playwright Tests (Playwright Workspaces)
      on:
        push:
          branches: [main, master]
        pull_request:
          branches: [main, master]
    
      permissions: # Required when using Microsoft Entra ID to authenticate
        id-token: write
        contents: read
    
      jobs:
        test:
          timeout-minutes: 60
          runs-on: ubuntu-latest
          steps:
            - uses: actions/checkout@v4
    
            - name: Login to Azure with AzPowershell (enableAzPSSession true)
              uses: azure/login@v2
              with:
                client-id: ${{ secrets.AZURE_CLIENT_ID }} # GitHub Open ID connect values copied in previous steps
                tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
                enable-AzPSSession: true
    
            - 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:
                # Regional endpoint for Playwright Workspaces
                PLAYWRIGHT_SERVICE_URL: ${{ secrets.PLAYWRIGHT_SERVICE_URL }}
                # PLAYWRIGHT_SERVICE_ACCESS_TOKEN: ${{ secrets.PLAYWRIGHT_SERVICE_ACCESS_TOKEN }} # Not recommended, use Microsoft Entra ID authentication. 
              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
    

Playwright NUnit CLI を使用して Playwright テストを実行するように CI ワークフロー定義を更新します。 環境変数を指定して、環境を構成します。

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

  2. Playwright ワークスペースで Playwright テストを実行するには、次の手順を追加します。

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

    on:
      push:
        branches: [ main, master ]
      pull_request:
        branches: [ main, master ]
    permissions: # Required when using AuthType as EntraId
      id-token: write
      contents: read
    jobs:
      test:
        timeout-minutes: 60
        runs-on: ubuntu-latest
          steps:
          - uses: actions/checkout@v4
        # This step is to sign-in to Azure to run tests from GitHub Action workflow. 
        # Choose how to set up authentication to Azure from GitHub Actions. This is one example. 
    
          - name: Login to Azure with AzPowershell (enableAzPSSession true) 
            uses: azure/login@v2 
            with: 
              client-id: ${{ secrets.AZURE_CLIENT_ID }} # GitHub Open ID connect values copied in previous steps
              tenant-id: ${{ secrets.AZURE_TENANT_ID }}  
              subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}  
              enable-AzPSSession: true 
    
          - name: Setup .NET
            uses: actions/setup-dotnet@v4
            with:
              dotnet-version: 8.0.x
    
          - name: Restore dependencies
            run: dotnet restore
            working-directory: path/to/playwright/folder # update accordingly
    
          - name: Build
            run: dotnet build --no-restore
            working-directory: path/to/playwright/folder # update accordingly
    
          - name: Run Playwright tests
              working-directory: path/to/playwright/folder # update accordingly
            env:
              # Regional endpoint for Playwright Workspaces
              PLAYWRIGHT_SERVICE_URL: ${{ secrets.PLAYWRIGHT_SERVICE_URL }}
              # PLAYWRIGHT_SERVICE_ACCESS_TOKEN: ${{ secrets.PLAYWRIGHT_SERVICE_ACCESS_TOKEN }} # Not recommended, use Microsoft Entra ID authentication. 
            run: dotnet test -- NUnit.NumberOfTestWorkers=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
    
  1. 変更を保存してコミットします。

    CI ワークフローがトリガーされると、Playwright テストは、クラウドでホストされているブラウザー上の Playwright ワークスペースで、20 個の並列ワーカーにわたって実行されます。 結果はサービスに発行され、Azure portal で表示できます。

注意事項

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

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

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

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

テストの実行と結果を表示する

Playwright は、すべてのテスト実行でログ、トレース、スクリーンショットなどの豊富なテスト成果物を収集できます。 CI パイプライン内でテスト成果物を表示する方法については、 Playwright のドキュメントを参照してください。

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