Playwright Workspacesでマルチプラットフォーム・マルチブラウザの並列テストを実行する
クラウドE2Eテストを実現するMicrosoft Playwright Workspaces入門 第3回
ダウンロード サンプルファイル (25.0 KB)
本連載では全4回に分けて、Microsoftが提供するクラウド型のEnd-to-End(以降「E2E」)テストサービス「Microsoft Playwright Workspaces」について紹介します。
はじめに
前回は、AzureポータルでPlaywright Workspacesのリソースを作成し、簡易TODOアプリへのE2Eテストをクラウド上のChromiumで実行しました。ただし、実行したテストは2つ、ブラウザは1種類だけです。これではクラウド実行の恩恵はほとんど感じられません。
今回は、テストの対象をブラウザ/OS/モバイルへ広げ、並列度を上げて実行時間を短縮していきます。あわせて、並列化して表面化するテストの脆さについても紹介します。
projectsでブラウザマトリクスを組む
Playwrightで「同じテストを異なる条件で回す」ための仕組みが、設定ファイルのprojectsです。まずはここを拡張します。
projectsの役割
前回のplaywright.config.tsでは、projectsにchromiumがひとつ定義されているだけでした。projectsは実行条件のセットを並べる配列で、ここに定義した数だけ、testsフォルダ配下の全テストが繰り返し実行されます。テストコードには一切手を加えず、設定だけで対象環境を増やせるのがポイントです。
各projectに付けた名前は実行ログやレポートに表示されるほか、後述するテストデータの分離にも使うため、環境が識別できるものにしておきます。
3つのブラウザエンジンへ広げる
Playwrightが標準で扱えるブラウザエンジンは、Chromium(ChromeやEdgeの基盤)、Firefox、WebKit(Safariの基盤)の3種類です。devicesプリセットを使って定義します。
projects: [
{ name: 'chromium', use: { ...devices['Desktop Chrome'] } },
{ name: 'firefox', use: { ...devices['Desktop Firefox'] } },
{ name: 'webkit', use: { ...devices['Desktop Safari'] } },
],
devicesは、ブラウザの種類やユーザーエージェント、ビューポートサイズなどをまとめたプリセット集です。この状態で実行すると、同じテストがブラウザの数だけ繰り返されます。HTMLレポーターで結果を開くと、各テストにプロジェクト名のバッジが付き、どの環境の結果なのかが一目で分かります。
図のように、同じテスト名がchromium、firefoxと並びます。これがマトリクス実行の基本形です。
実行OSはサービス設定全体で決まる
Playwright Workspacesは、クラウド上のブラウザをLinuxとWindowsのどちらでホストするかを選べます。ただし、ここには制約があります。
実行OSを指定するosオプションは、playwright.service.config.tsのcreateAzurePlaywrightConfigに渡すもので、サービス設定全体に適用されます。projectごとにOSを変えることはできず、1回の実行で使えるOSはひとつだけです。
そのため、両方を検証したい場合は実行そのものを分けます。ここでは環境変数で切り替えられるようにしておきましょう。
// 実行OSは環境変数SERVICE_OSで切り替えます(既定はLinux)
const serviceOs =
process.env.SERVICE_OS === 'windows'
? ServiceOS.WINDOWS
: ServiceOS.LINUX;
createAzurePlaywrightConfig(config, {
exposeNetwork: '<loopback>',
os: serviceOs,
// ポータル上で実行を見分けるための名前
runName: `todo-app-${serviceOs}`,
credential: new DefaultAzureCredential(),
})
runNameは、テスト実行に付ける名前です。指定しないとサービス側が自動生成したIDが使われるため、Azureポータルの実行履歴でLinux実行とWindows実行を見分けたいときは明示しておきます。
実行時は「SERVICE_OS=windows npx playwright test --config=playwright.service.config.ts」のように環境変数を与えます。PowerShellの場合は「$env:SERVICE_OS = "windows"」を先に実行してください。
この記事は参考になりましたか?
- クラウドE2Eテストを実現するMicrosoft Playwright Workspaces入門連載記事一覧
-
- Playwright Workspacesでマルチプラットフォーム・マルチブラウザの並列テ...
- Playwright Workspacesで簡易TODOアプリのクラウドE2Eテストを実施...
- 「Microsoft Playwright Workspaces」でE2Eテストの課題を解...
- この記事の著者
-
WINGSプロジェクト 秋葉 龍一(アキバ リュウイチ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
