この記事では、Playwright のシャーディング機能を使用するテストの実行で Microsoft Playwright Testing サービスのレポート機能を使用する方法について学びます。
Playwright のシャーディングを使用すると、複数のマシンで同時に実行するようにテスト スイートを分割できます。 この機能を利用して、テストを並列で実行できます。
Playwright Testing のレポート機能を使用すると、シャーディングを使用したテストの実行の統合レポートを取得できます。 テストの実行の runId
がすべてのシャードで同じであることを確かめます。
重要
Microsoft Playwright Testing は現在、プレビュー段階です。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。
前提条件
アクティブなサブスクリプションが含まれる Azure アカウント。 Azure サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成してください。
エンド ツー エンドの継続的なテストを設定します。 「クイック スタート: Microsoft Playwright Testing Preview を使用してエンドツーエンドの継続的なテストを設定する」を最後まで行って、継続的インテグレーション (CI) パイプラインを設定します。
Playwright サービス構成ファイルを更新する
セットアップで playwright.service.config.ts
ファイルに runId
を追加または更新します。
export default defineConfig(
config,
getServiceConfig(config, {
runId: process.env.PLAYWRIGHT_SERVICE_RUN_ID, //Set runId for the test run
}),
);
セットアップで PLAYWRIGHT_SERVICE_RUN_ID
変数を使用して、runId
がすべてのシャードで同じままであることを確かめることができます。
変数を設定する
runId
設定は、テストの実行を区別するために Playwright Testing サービスによって識別子として使用されます。 同じ runId
を持つ複数の実行の結果は、Playwright ポータルで同じ実行に対して報告されます。
既定では、レポート機能を使用するテストの実行では、値を自分で明示的に設定しない限り、一意の runId
が自動的に生成されます。 この変数の値が複数の実行にわたって同じになっている場合、結果は、Playwright ポータルで同じ実行の中にまとめて報告されます。
ヒント
Microsoft Playwright Testing サービスで提供される、クラウドでホストされるブラウザーを使用してテストを実行する場合、この変数は設定済みである可能性があります。 上書きを回避するために、設定するのは必ず 1 回だけにしてください。
シャーディングを使用している場合、結果がまとめて報告されるように、すべてのシャードで同じ runId
が設定されていることを確認します。 変数 PLAYWRIGHT_SERVICE_RUN_ID
を使用し、すべてのシャードで同じ値を設定します。
GitHub Actions を使用してそれをパイプラインで設定する方法の例を、次に示します。
name: Playwright Tests (Microsoft Playwright Testing)
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
workflow_dispatch:
strategy:
fail-fast: false
matrix:
shardIndex: [1, 2, 3, 4]
shardTotal: [4]
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@v3
- uses: actions/setup-node@v3
with:
node-version: 18
# This step is to sign-in to Azure to run tests from GitHub Action workflow.
# You can choose how 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 }} # Required when using Microsoft Entra ID to authenticate
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 } #This Run_ID will be unique and will remain same across all shards
run: npx playwright test --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}