Skip to content
Latchkey

Playwrightとは?エンドツーエンドのブラウザテストツール

Playwrightはブラウザ自動化とエンドツーエンドテストのツールで、実際のChromium、Firefox、WebKitブラウザを操作し、ユーザーが体験するとおりにWebアプリをテストします。

Playwrightは、人が使うのと同じようにアプリをテストします。実際のブラウザでクリックし、入力し、ナビゲートするのです。すべての主要なエンジンをサポートし、要素が準備できるまで自動的に待機し、悪名高いほどflakyなエンドツーエンドテストをより信頼できるものにするよう作られています。

Playwrightとは何か

PlaywrightはMicrosoftによるエンドツーエンドのテストフレームワークかつブラウザ自動化ライブラリです。単一のAPIを通じてChromium、Firefox、WebKitを制御し、複数の言語(JavaScript、Python、Java、.NET)をサポートし、並列化、tracing、スクリーンショットを備えたtest runnerを含んでいます。

auto-waitingと信頼性

flakyなE2Eテストの大きな原因は、ページが準備できる前に操作してしまうことです。Playwrightは操作する前に要素が表示され、有効化され、安定するまでauto-waitingし、web-firstなアサーションは合格するかタイムアウトするまでリトライします。失敗時のtracingや動画といった機能により、残ったflakeの診断がはるかに容易になります。

テストの例

テストはページをナビゲートし、アサーションを行います。

A minimal Playwright test
import { test, expect } from "@playwright/test";

test("homepage has title", async ({ page }) => {
  await page.goto("https://example.com");
  await expect(page).toHaveTitle(/Example/);
});

CI/CDでの役割

CIでは、Playwrightはbuildまたはdeployされたアプリに対してエンドツーエンドテストを実行し、失敗時にゼロ以外の終了コードを返します。ブラウザテストは重く、ブラウザのバイナリをインストールし、並列で実行され、遅くてflakyになりがちです。より高速なマネージドrunnerで実行し、job間でshardし、一時的な失敗にauto-retryを使うことで、E2Eステージを高速かつ信頼できる状態に保てます。

代替ツール

Cypressは開発者体験が優れた人気のE2Eツールですが、アーキテクチャは異なります。Seleniumは長年確立されてきた、言語に依存しない標準です。Playwrightは複数エンジンのサポート、auto-waiting、組み込みの並列化とtracingで際立っています。

重要なポイント

  • Playwrightは実際のChromium、Firefox、WebKitブラウザを操作してE2Eテストを行います。
  • auto-waitingとリトライするアサーションがflakinessを減らします。
  • E2Eの実行は重いため、shardして分割し、auto-retryを使ってCIを高速に保ちましょう。

関連ガイド