Playwright 1.0がリリースされた。Chromium、Firefox、WebKitといったブラウザエンジンをベースとする全ブラウザで、その自動化をサポートする。
Playwrightと同種のものには、ChromiumベースのブラウザのみをサポートするPuppeteerや、やや当てにならず厄介だと多くの人に思われているWebDriverがある。
PlaywrightはNode.jsを利用しており、npm経由で利用できる。
npm i playwright
以下に、非常にシンプルなPlaywrightの使用例をあげる。3つの主要なブラウザでウェブサイトを閲覧し、それぞれでスクリーンショットを保存する。
const playwright = require('playwright');
(async () => {
for (const browserType of ['chromium', 'firefox', 'webkit']) {
const browser = await playwright[browserType].launch();
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('http://whatsmyuseragent.org/');
await page.screenshot({ path: `example-${browserType}.png` });
await browser.close();
}
})();
Playwrightは非同期でイベント駆動型のアーキテクチャによって、不安定なタイムアウトの仕組みに依存することなく、UIが準備できるのを自動的に待機する。Playwrightでは、DOMの変更、ネットワークリクエスト、そのほか非同期な変更を待機することができる。
Playwrightはテストを迅速かつ効率的に行うため、単一のブラウザコンテキスト内で複数のウェブビューとコンテキスト動作によって、テストを並行に実行することができる。他にも、実際のユーザー体験をテストするためのモバイル環境、ジオロケーション、ロケールのエミュレーションなどの機能がある。
また重要な機能として、Webコンポーネント、ネットワークアクティビティ、ファイルのアップロードとダウンロード、フレーム横断およびタブ横断のアクティビティ、ネイティブ入力、Webワーカーなどを自動化してテストすることもできる。
現在のところ、Playwrightにはインストール時に自動でダウンロードされるWebKitとFirefoxのカスタムパッチビルドが必要だ。これらのパッチをFirefoxとWebKitの将来のバージョンに組み込むため、彼らとの協業が進んでいる。
PlaywrightはApache 2ライセンスで利用可能なオープンソースソフトウェアだ。開発者はPlaywright getting started guideに従おう。Playwrightを試すためのTry Playwrightプレイグラウンドや、テストランナーの使用例もある。
Microsoftのオープンソース行動規範に従い、Playwrightコントリビューションガイドラインに沿ったコントリビューションが歓迎されている。