SHOEISHA iD

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

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

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

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

Playwright Workspacesで簡易TODOアプリのクラウドE2Eテストを実施する

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

Microsoft Entra ID認証と初回テストのクラウド実行

 設定が整いました。最後に、認証を済ませてテストをクラウドで実行してみましょう。

Microsoft Entra IDによる認証

 Playwright Workspacesの既定かつ推奨の認証方式は、Microsoft Entra IDによる認証です。テストを実行するマシンから、Azure CLIでサインインします。

[リスト6]Azure CLIでのサインイン
az login

 複数のEntra IDテナントに所属している場合は、ワークスペースが属するテナントへサインインする必要があります。その際は「az login --tenant <テナントID>」のようにテナントを明示してください。設定ファイルで指定した「DefaultAzureCredential」が、このサインイン情報を自動的に利用して認証を行います。

テストコードの確認

 今回のテストは、各テストで共通して使うログイン操作をヘルパー関数「login」に切り出したうえで、(1)ログイン後にTODO一覧画面へ遷移すること、(2)TODOの追加と削除ができること、の2本を用意しています。いずれもOSS Playwrightの書き方そのままで、クラウド実行のための特別な記述は必要ありません。

 まずは、共通のloginヘルパーと、ログイン後の遷移を確認するテストを見てみましょう。

[リスト7]ログインのE2Eテスト(tests/todo.spec.ts)
import { test, expect } from '@playwright/test';

// ログイン操作を共通化するヘルパー
async function login(page) {
  await page.goto('/');
  await page.getByLabel('ユーザー名').fill('demo');
  await page.getByLabel('パスワード').fill('passw0rd');
  await page.getByRole('button', { name: 'ログイン' }).click();
}

test('正しい資格情報でログインするとTODO画面が表示される', async ({ page }) => {
  await login(page);
  // ログイン後にTODO一覧の見出しが表示されることを確認
  await expect(page.getByRole('heading', { name: 'TODO一覧' })).toBeVisible();
});

 要素の操作に使っている「getByLabel」「getByRole」は、前回紹介したLocator APIです。ラベルやロールといった意味のある属性で要素を指し示すため、画面構造が多少変わっても壊れにくいテストになります。

 続いて、TODOの追加と削除を検証するテストです。先ほどのloginヘルパーを再利用し、フォームからの追加(一覧への表示)と、削除ボタンによる消去を順に確認します。

[リスト8]追加・削除のE2Eテスト(tests/todo.spec.ts)
test('TODOを追加・削除できる', async ({ page }) => {
  await login(page);

  // 追加
  await page.getByPlaceholder('やることを入力').fill('記事を執筆する');
  await page.getByRole('button', { name: '追加' }).click();
  await expect(page.getByText('記事を執筆する')).toBeVisible();

  // 削除
  await page.getByRole('button', { name: '削除' }).click();
  await expect(page.getByText('記事を執筆する')).toHaveCount(0);
});

 入力欄は「getByPlaceholder」でプレースホルダー文言を手がかりに取得しています。削除の確認では「toHaveCount(0)」を使い、対象の要素が一覧から完全に消えたことを検証している点がポイントです。

クラウドでのテスト実行

 それでは、クラウドのブラウザでテストを実行します。設定ファイルとして、先ほど生成したplaywright.service.config.tsを指定する点がポイントです。

[リスト9]クラウドでのテスト実行
npx playwright test --config=playwright.service.config.ts --workers=20

 「--workers」で並列度を指定できます。今回はテストが少数のため効果は限定的ですが、テスト件数が多いほどクラウド並列の恩恵が大きくなります。

 なお無料トライアル中は実行分の消費に注意し、まずは少数のテストで動作を確認するとよいでしょう。実行が完了すると、ターミナルに結果が表示されます。

Azureポータルでの結果確認

 実行したテストの結果は、Azureポータルのワークスペース画面に集約されます。左側メニューの「ブラウザーセッション」内の「ブラウザーアクティビティログ」の一覧から該当の実行を開くと、テストの成否やブラウザの種類、所要時間などを確認できます。

図5:Azureポータル上のテスト実行結果
図5:Azureポータル上のテスト実行結果

 このように、ローカルで書いたテストをそのままクラウドのブラウザで実行し、その結果をポータルで一元的に確認できました。これがPlaywright Workspacesの基本的な利用の流れです。

まとめ

 今回は、AzureポータルでのPlaywright Workspacesリソースの作成から、@azure/playwrightによるプロジェクトの初期化、Microsoft Entra ID認証、そして初回テストのクラウド実行までを、簡易TODOアプリを題材に一通り体験しました。ローカルで書いたOSS Playwrightのテストを、設定ファイルを切り替えるだけでクラウド実行できる手軽さを実感いただけたのではないでしょうか。

 次回は、今回動かした1本のテストを起点にブラウザ/OSのマトリクスやモバイルエミュレーションへと対象を広げ、「--workers」による大規模並列実行で実行時間を短縮する方法について紹介する予定です。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
クラウド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/28916 2026/07/27 08:00

イベント

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

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

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

メールバックナンバー