次の方法で共有


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

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

このクイックスタートを終えると、Microsoft Playwright Testing で Playwright テスト スイートを大規模に実行し、テストの簡単なトラブルシューティングに役立つ CI ワークフローができあがります。

重要

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

前提条件

サービス リージョン エンドポイントの 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. それに次のコンテンツを追加します。

    import { defineConfig } from '@playwright/test';
    import { getServiceConfig, ServiceOS } from '@azure/microsoft-playwright-testing';
    import config from './playwright.config';
    
    /* Learn more about service configuration at https://aka.ms/mpt/config */
    export default defineConfig(
      config,
      getServiceConfig(config, {
        exposeNetwork: '<loopback>',
            timeout: 30000,
        os: ServiceOS.LINUX,
            useCloudHostedBrowsers: true
      }),
      {
        /* 
        Playwright Testing service reporter is added by default.
        This will override any reporter options specified in the base playwright config.
        If you are using more reporters, please update your configuration accordingly.
        */
        reporter: [['list'], ['@azure/microsoft-playwright-testing/reporter']],
      }
    );
    

    既定では、サービス構成により、次のことが可能になります。

    • クラウドホステッド ブラウザーを使用してテストを並列で実行することで、ビルド パイプラインを高速化します。
    • サービスに発行されたテスト結果と成果物には簡単にアクセスできるため、トラブルシューティングが簡単になります。

    ただし、これらの機能のいずれか、または両方を使用することを選択できます。 サービス機能の使用方法に関するページを参照し、要件に応じてサービス構成ファイルを更新します。

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

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

リポジトリの package.json ファイルを更新して、Microsoft Playwright Testing サービス パッケージに関する詳細を devDependencies セクションに追加します。

"devDependencies": {
    "@azure/microsoft-playwright-testing": "^1.0.0-beta.3"
}

Playwright 構成で成果物を有効にする

プロジェクトの playwright.config.ts ファイルで、必要な成果物をすべて収集していることを確認します。

  use: {
    trace: 'on-first-retry',
    video:'retain-on-failure',
    screenshot:'on'
  },

サービス構成を設定する

  1. 自分のプロジェクトのルート ディレクトリに、PlaywrightServiceSetup.cs という新しいファイルを作成します。 このファイルにより、サービスを使用したクライアントの認証が容易になります。

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

    using Azure.Developer.MicrosoftPlaywrightTesting.NUnit;
    using NUnit.Framework;
    
    namespace PlaywrightTests; // Remember to change this as per your project namespace
    
    [SetUpFixture]
    public class PlaywrightServiceSetup : PlaywrightServiceNUnit { };
    
  3. ファイルを保存してソース コード リポジトリにコミットします。

プロジェクトの .csproj ファイルを更新する

リポジトリの csproj ファイルを更新して、Microsoft Playwright Testing サービス パッケージに関する詳細を ItemGroup セクションに追加します。

  <ItemGroup>
    <PackageReference Include="Azure.Developer.MicrosoftPlaywrightTesting.NUnit" Version="1.0.0-beta.2" />
  </ItemGroup>

プロジェクトの .runsettings ファイルを追加または更新します。

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

  1. 新しい .runsettings ファイルを作成します。

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

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

    <?xml version="1.0" encoding="utf-8"?>
    <RunSettings>
        <TestRunParameters>
            <!-- The below parameters are optional -->
            <Parameter name="Os" value="linux" />
            <!--<Parameter name="RunId" value="sample-run-id1" />-->
            <Parameter name="ServiceAuthType" value="EntraId" />
            <Parameter name="UseCloudHostedBrowsers" value="true" />
            <Parameter name="AzureTokenCredentialType" value="DefaultAzureCredential" />
            <!--<Parameter name="ManagedIdentityClientId" value="{clientId-value}" />-->
            <Parameter name="EnableGitHubSummary" value="false" />
            <!--<Parameter name="ExposeNetwork" value="*" />-->
        </TestRunParameters>
      <!-- NUnit adapter -->  
      <NUnit>
        <!-- Adjust parallel workers, parallel worker would also be bound by number of unit test files -->
        <NumberOfTestWorkers>10</NumberOfTestWorkers>
      </NUnit>
      <!-- General run configuration -->
      <RunConfiguration>
        <EnvironmentVariables>
          <!-- For debugging selectors, it's recommend to set the following environment variable -->
            <!--<DEBUG>pw:api*</DEBUG>--> 
        </EnvironmentVariables>
      </RunConfiguration>
      <!-- Playwright -->  
      <Playwright>
        <BrowserName>chromium</BrowserName>
        <ExpectTimeout>5000</ExpectTimeout>
        <LaunchOptions>
          <Headless>false</Headless>
          <!--Channel>msedge</Channel-->
        </LaunchOptions>
      </Playwright>
        <LoggerRunSettings>
            <Loggers>
                <!--microsoft playwright testing service logger for reporting -->
                <Logger friendlyName="microsoft-playwright-testing" enabled="True" />
                <!--could enable any logger additionally -->
                <Logger friendlyName="trx" enabled="false" />
            </Loggers>
        </LoggerRunSettings>
    </RunSettings>
    

    このファイルの設定により、次のことを行うことができます。

    • クラウドホステッド ブラウザーを使用してテストを並列で実行することで、ビルド パイプラインを高速化します。
    • 迅速なトラブルシューティングのために、テスト結果と成果物をサービスに発行します。

    ただし、これらの機能のいずれか、または両方を使用することを選択できます。 サービス機能の使用方法に関するページを参照し、要件に応じてサービス構成ファイルを更新します。

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

Playwright セットアップで成果物を有効にする

スクリーンショット、ビデオ、トレースなどの成果物を Playwright でキャプチャできるようにします。

これらのアーティファクトを収集したら、TestContext に添付し、テスト レポートで使用できるようにします。 詳細については、NUnit のサンプル プロジェクトに関するページを参照してください

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

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

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

  2. 次の手順を追加して、Microsoft Playwright Testing で 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. 
    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 }} 
        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 Microsoft Playwright Testing
        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
    

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

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

  2. 次の手順を追加して、Microsoft Playwright Testing で 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 }} 
              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 Microsoft Playwright Testing
              PLAYWRIGHT_SERVICE_URL: ${{ secrets.PLAYWRIGHT_SERVICE_URL }}
              PLAYWRIGHT_SERVICE_RUN_ID: ${{ github.run_id }}-${{ github.run_attempt }}-${{ github.sha }}
            run: dotnet test --settings:.runsettings --logger "microsoft-playwright-testing" -- 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 ワークフローがトリガーされると、クラウドでホストされているブラウザー上の Microsoft Playwright Testing ワークスペースで、20 個の並列ワーカーを使って、Playwright テストが実行されます。 収集された結果と成果物はサービスに発行され、サービス ポータルで表示できます。

Note

レポート機能は、既存のワークスペースに対して既定で有効になっています。 これは段階的にロールアウトされ、数日かかる予定です。 エラーを回避するには、先に進む前に、ワークスペースの Rich diagnostics using reporting 設定がオンになっていることを確認します。 詳細については、「ワークスペースのレポートを有効にする」を参照してください。

注意事項

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

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

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

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

Playwright ポータルでテストの実行と結果を表示する

Playwright ポータルで CI パイプラインのトラブルシューティングができるようになりました。

  1. テスト実行が完了すると、Playwright ポータルへのリンクが生成されます。 このリンクを開いて、詳細なテスト結果と関連する成果物を表示します。 ポータルには次のような重要な情報が表示されます。

    • CI ビルドの詳細
    • 全体的なテスト実行の状態
    • テスト実行に関連するコミット ID

    テスト実行のテストの一覧を示すスクリーンショット。

  2. Playwright ポータルには、トラブルシューティングに必要なすべての情報が表示されます。 次のことを実行できます。

    • 再試行を切り替える。
    • 詳細なエラー ログ、テスト手順、および添付された成果物 (スクリーンショットやビデオなど) を表示する。
    • 詳細な分析のためにトレース ビューアーに直接移動する。

    テストのプレビューを示すスクリーンショット。

  3. トレース ビューアーを使用すると、テスト実行の手順を視覚的に確認できます。 次のことを実行できます。

    • タイムラインを使用して個々の手順にカーソルを合わせて、各アクションの前後のページの状態を確認する。
    • 手順の詳細なログ、DOM スナップショット、ネットワーク アクティビティ、エラー、コンソール出力を調べる。

    トレース ビューアーを示すスクリーンショット。

ヒント

Microsoft Playwright Testing サービス機能は、それだけで使用できます。 クラウドでホストされているブラウザー機能を使わずにテスト結果をポータルに発行でき、クラウドでホストされているブラウザーのみを使って、テスト結果を発行せずにテスト スイートを高速化することもできます。 詳細については、「サービス機能の使用方法」を参照してください。

Note

発行したテスト結果と成果物は、サービスに 90 日間保持されます。 その後、自動的に削除されます。

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