Playwrightとは|仕組み・できること・Seleniumとの違いを解説
Playwright(プレイライト)とは、Microsoftが2020年に公開したオープンソースのE2E(エンドツーエンド)テスト自動化フレームワークです。英語のplaywrightは「脚本家・劇作家」を意味し、ブラウザ上の操作を台本のように記述して自動実行できます。Chromium・Firefox・WebKitの主要3エンジンに対応し、ブラウザを実際に動かしてWebアプリの動作を検証します。
この記事では、対策キーワードでもあるPlaywrightの仕組み(アーキテクチャ)を中心に、読み方や概要、できること、対応ブラウザ・言語、Seleniumとの違い、Apache-2.0ライセンスでの商用利用、最小のテストコードでの使い始め、そして採用すべき場面・向かない場面までを整理します。インストールの詳細手順やMCP・コンポーネントテストなど個別トピックは、それぞれの記事へリンクで案内します。
目次
まとめ:Playwrightの要点
先に結論です。Playwrightは、テストコード(クライアント)とPlaywright Serverが単一の永続的なWebSocket接続で双方向にやり取りし、ServerがChrome DevTools Protocol(CDP)などを通じてブラウザを直接制御する仕組みを採ります。これがSeleniumのHTTP+WebDriver方式との最大の違いで、通信が軽く、ブラウザ側からのイベントも受け取れるため待機が安定します。さらに要素操作の前に「表示・安定・操作可能・非重なり」を自動で確認するauto-waitを備え、待ち時間のコードをほぼ書かずに安定したテストが書けます。ライセンスはApache-2.0で、商用利用も含めて無料、有料プランはありません。対応言語はJavaScript/TypeScript・Python・Java・.NET、対応ブラウザはChromium・Firefox・WebKitです。以降で仕組みと使い方を具体的に見ていきます。
Playwrightとは|読み方・意味・提供元
Playwrightの読み方は「プレイライト」です。英単語としては脚本家・劇作家を指し、テストという「筋書き」をブラウザに演じさせるツール名として名付けられています。提供元はMicrosoftで、2020年に登場しました。Puppeteerの開発に携わったチームが中心となって作られた経緯があり、従来ツールの弱点だった待機の不安定さやブラウザ間の挙動差を解消することを狙っています。
用途はWebアプリのE2Eテスト自動化が中心ですが、ブラウザ操作を自動化できる性質上、画面操作の自動化やスクレイピングにも使われます。1つのAPIでChromium・Firefox・WebKitを同じように動かせるため、ブラウザごとにコードを分ける必要がほとんどありません。
Playwrightの仕組み(アーキテクチャ)
「playwright 仕組み」で最も知りたいのは、なぜ速く安定するのかという内部構造です。Playwrightはクライアント・サーバー型で、テストコードとブラウザの間にPlaywright Serverが入り、その通信に単一のWebSocketを使う点が核心です。
クライアント・サーバー構成とWebSocket単一接続
テストコード(クライアント)は、Playwright Serverへ単一の永続的なWebSocketで接続します。Serverはその指示をChromium向けのCDPや、Firefox・WebKitに対してはMicrosoftがパッチを当てたプロトコルへ変換し、ブラウザを制御します。接続を一度張ったまま軽量なフレームでコマンドをやり取りし、ブラウザ側からも「ページ読み込み完了」「コンソールエラー」などのイベントを随時プッシュできます。リクエストごとに接続するSeleniumのHTTP+WebDriver方式に比べ、往復の待ちが少なく、状態変化を取りこぼしにくいのが利点です。
ブラウザ・コンテキスト・ページの階層と分離
Playwrightは「ブラウザ → ブラウザコンテキスト → ページ」の階層で対象を扱います。ブラウザコンテキストはCookie・キャッシュ・ストレージを独立して持つ隔離されたセッションで、シークレットウィンドウのようなものです。1つのブラウザプロセスの中に複数のコンテキストを作れるため、別ユーザーでのログイン状態を同時に検証したり、テストを並行実行したりしても、状態が混ざりません。プロセスを増やさずに分離できるので起動コストが小さく、並列実行の効率が高くなります。
自動待機(auto-wait)による安定化
Playwrightはクリックや入力などの操作前に、対象要素が表示されているか・位置が安定しているか・操作可能(有効)か・他要素に重なっていないかを自動で確認します。この一連の検証はactionabilityチェックと呼ばれ、条件が満たされるまで一定時間待ってから操作します。明示的なsleepや待機コードをほぼ書かずに済むため、画面描画のタイミングに起因する不安定なテスト(flaky test)を大きく減らせます。これが「設定が少ないのに安定する」と評価される直接の理由です。
Playwrightでできること
Playwrightは単純なクリック検証にとどまらず、テストに必要な周辺機能を一通り備えます。代表的なものは次のとおりです。
- クロスブラウザテスト(Chromium・Firefox・WebKitを同一コードで実行)
- ヘッドレス実行(画面表示なしでCI上でも高速に実行)と画面表示ありの切り替え
- ネットワークの傍受・モック(APIレスポンスの差し替え)
- モバイル端末のエミュレーション(画面サイズ・UA・タッチ)
- スクリーンショット・動画・トレースによる失敗時の原因調査
- codegen(操作を記録してテストコードを自動生成)
とくにヘッドレス実行とトレースはCIでの自動テストと相性がよく、失敗したテストを後から再生して原因を追えます。ネットワークのモックは、外部APIに依存せず安定したテストを書くうえで実務上の効果が大きい機能です。
対応ブラウザ・対応言語
対応ブラウザはChromium(Chrome/Edge系)・Firefox・WebKit(Safari系)の3エンジンです。WebKitに対応するため、macOSやiOS Safariに近い挙動も検証できます。対応言語はJavaScript/TypeScript・Python・Java・.NET(C#)の4系統が公式に提供されています。Go版はコミュニティによる非公式実装で、公式サポート対象ではない点に注意してください。チームの主言語に合わせて選べるため、フロントエンドはTypeScript、バックエンド検証はPythonといった使い分けもできます。
PlaywrightとSeleniumの違い
比較検討で最も多いのがSeleniumとの違いです。両者ともブラウザ自動化ツールですが、ブラウザの制御方式が根本的に異なります。
| 観点 | Playwright | Selenium |
|---|---|---|
| 制御方式 | WebSocket+CDP等 | HTTP+WebDriver |
| 待機 | auto-wait内蔵 | 明示的な待機が必要 |
| 対応ブラウザ | Chromium/Firefox/WebKit | 主要ブラウザ+実機ドライバ |
| 提供元・登場 | Microsoft・2020年 | OSS・2004年 |
| ライセンス | Apache-2.0 | Apache-2.0 |
新規にE2Eテストを始めるなら、待機の安定性と設定の少なさからPlaywrightが扱いやすい選択です。一方で、既存のSelenium資産が大きい、対応すべきブラウザや実機環境がSelenium前提で整っている場合は、無理に移行せずSeleniumを継続する判断も合理的です。
Playwrightのライセンスと商用利用
Playwrightのライセンスはapache-2.0で、商用利用を含めて無料で使えます。規模による課金や有料プランは存在せず、フレームワーク自体に費用はかかりません。企業のプロダクト開発に組み込んでも、ライセンス費用はかかりません。
注意点として、Playwrightはテスト実行時にブラウザのバイナリ(Chromium等)をダウンロードして使います。これらも無償で利用できますが、Chromiumなど各ブラウザエンジンはそれぞれのライセンスに従います。テストの実行・配布で問題になることは通常ありません。
Playwrightの使い始め
導入は1コマンドで完了します。プロジェクトで次を実行すると、設定ファイルとサンプルテスト、必要なブラウザ一式が用意されます。
npm init playwright@latest
最小のテストは次のように書きます。ページを開き、タイトルと要素の表示を検証する例です。
import { test, expect } from '@playwright/test';
test('トップページの表示確認', async ({ page }) => {
await page.goto('https://example.com/');
await expect(page).toHaveTitle('Example Domain');
await expect(page.getByRole('heading')).toBeVisible();
});
実行は npx playwright test、操作を記録してコードを自動生成するなら npx playwright codegen example.com を使います。ディレクトリ構成や詳細な初期設定は専用記事にまとめているので、本格導入時はそちらを参照してください。手順の詳細はPlaywrightのインストールと設定方法の解説が参考になります。
Playwrightを使うべき場面・向かない場面
万能ではないため、向き不向きを押さえると導入判断がぶれません。Playwrightが効くのは、複数ブラウザで動作保証したいWebアプリのE2Eテスト、ログインや非同期描画を含む複雑な画面フロー、CIで毎回回す回帰テストです。auto-waitとトレースが、これらの「不安定になりやすいテスト」を安定させます。
逆に向かないのは、HTMLが静的でJavaScriptを介さない単純なページのスクレイピングです。この用途ではブラウザを起動するオーバーヘッドが無駄になり、HTTPクライアントでHTMLを取得する方が速く軽量です。また、検証対象がInternet Explorerなどの旧環境に限られる場合や、既存のSeleniumテスト資産が大規模で移行コストが見合わない場合も、Playwrightの採用は見送るのが現実的です。新規・複数ブラウザ・複雑フローならPlaywright、単純取得や旧環境限定なら別手段、と切り分けます。
よくある質問(FAQ)
Playwrightの読み方と意味は?
読み方は「プレイライト」です。英語のplaywrightは脚本家・劇作家を意味し、テストの筋書きをブラウザに演じさせるツールという含意があります。Microsoftが2020年に公開しました。
Playwrightの仕組みの肝は何ですか?
テストコードとPlaywright Serverを単一のWebSocketで双方向接続し、ServerがCDP等でブラウザを直接制御する点です。加えて操作前に要素の表示・安定・操作可否を確認するauto-waitにより、待機コードなしで安定したテストが実現します。
PlaywrightとSeleniumはどちらを選ぶべきですか?
新規にE2Eテストを始めるなら、待機の安定性と設定の少なさからPlaywrightが扱いやすいです。既存のSelenium資産が大きい、Selenium前提の実機環境が整っている場合は継続も合理的です。
Playwrightは商用利用でも無料ですか?
無料です。ライセンスはApache-2.0で、商用利用や規模に関わらず費用はかかりません。有料プランは存在しません。
Playwrightはどのプログラミング言語で使えますか?
JavaScript/TypeScript・Python・Java・.NET(C#)が公式に提供されています。Go版はコミュニティによる非公式実装のため、公式サポートが必要な場合は4系統から選びます。