SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

クラウドE2Eテストを実現するMicrosoft Playwright Workspaces入門

Playwright Workspacesでマルチプラットフォーム・マルチブラウザの並列テストを実行する

クラウドE2Eテストを実現するMicrosoft Playwright Workspaces入門 第3回

 本連載では全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プリセットを使って定義します。

[リスト1]ブラウザごとのprojects定義(playwright.config.ts)
projects: [
  { name: 'chromium', use: { ...devices['Desktop Chrome'] } },
  { name: 'firefox', use: { ...devices['Desktop Firefox'] } },
  { name: 'webkit', use: { ...devices['Desktop Safari'] } },
],

 devicesは、ブラウザの種類やユーザーエージェント、ビューポートサイズなどをまとめたプリセット集です。この状態で実行すると、同じテストがブラウザの数だけ繰り返されます。HTMLレポーターで結果を開くと、各テストにプロジェクト名のバッジが付き、どの環境の結果なのかが一目で分かります。

図1:プロジェクト別に結果が表示されたHTMLレポーター
図1:プロジェクト別に結果が表示されたHTMLレポーター

 図のように、同じテスト名がchromium、firefoxと並びます。これがマトリクス実行の基本形です。

実行OSはサービス設定全体で決まる

 Playwright Workspacesは、クラウド上のブラウザをLinuxとWindowsのどちらでホストするかを選べます。ただし、ここには制約があります。

 実行OSを指定するosオプションは、playwright.service.config.tsのcreateAzurePlaywrightConfigに渡すもので、サービス設定全体に適用されます。projectごとにOSを変えることはできず、1回の実行で使えるOSはひとつだけです。

 そのため、両方を検証したい場合は実行そのものを分けます。ここでは環境変数で切り替えられるようにしておきましょう。

[リスト2]実行OSを環境変数で切り替える(playwright.service.config.ts)
// 実行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入門連載記事一覧

もっと読む

この記事の著者

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編 」他、著書多数。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/29770 2026/10/01 09:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー