メインコンテンツへスキップ

ブラウザ

はじめに

Playwrightの各バージョンは、動作するために特定のバージョンのブラウザバイナリを必要とします。これらのブラウザをインストールするには、Playwright CLIを使用する必要があります。

リリースごとに、Playwrightはサポートするブラウザのバージョンを更新し、常に最新のPlaywrightが最新のブラウザをサポートするようにします。つまり、Playwrightを更新するたびに、install CLIコマンドを再実行する必要がある場合があります。

ブラウザのインストール

Playwrightはサポートされているブラウザをインストールできます。引数なしでコマンドを実行すると、デフォルトのブラウザがインストールされます。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

引数を指定することで、特定のブラウザをインストールすることもできます。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install webkit"

サポートされているすべてのブラウザを表示

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install --help"

システム依存関係のインストール

システム依存関係は自動的にインストールできます。これはCI環境で役立ちます。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install-deps"

引数として渡すことで、単一のブラウザの依存関係をインストールすることもできます。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install-deps chromium"

install-depsinstallを組み合わせることで、ブラウザとOSの依存関係を単一のコマンドでインストールすることも可能です。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install --with-deps chromium"

公式にサポートされているオペレーティングシステムについては、システム要件を参照してください。

ブラウザの構成

PlaywrightはChromium、WebKit、Firefoxブラウザに加え、Google ChromeやMicrosoft Edgeといったブランド化されたブラウザでもテストを実行できます。エミュレートされたタブレットやモバイルデバイスでも実行可能です。選択されたデスクトップ、タブレット、モバイルデバイスの完全なリストについては、デバイスパラメータのレジストリを参照してください。

異なるブラウザでテストを実行する

特定のブラウザでテストを実行する

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
// Launch chromium, firefox or webkit.
Browser browser = playwright.chromium().launch();
Page page = browser.newPage();
// ...
}
}
}

複数のブラウザでテストを実行し、環境変数BROWSERに基づいて設定します。

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = null;
String browserName = System.getenv("BROWSER");
if (browserName.equals("chromium")) {
browser = playwright.chromium().launch();
} else if (browserName.equals("firefox")) {
browser = playwright.firefox().launch();
} else if (browserName.equals("webkit")) {
browser = playwright.webkit().launch();
}
Page page = browser.newPage();
// ...
}
}
}

Chromium

Google Chrome、Microsoft Edge、およびその他のChromiumベースのブラウザの場合、デフォルトでPlaywrightはオープンソースのChromiumビルドを使用します。Chromiumプロジェクトはブランド化されたブラウザよりも先行しているため、世界がGoogle Chrome Nを使用しているときでも、Playwrightは数週間後にGoogle ChromeおよびMicrosoft EdgeでリリースされるChromium N+1をすでにサポートしています。

Chromium: ヘッドレスシェル

Playwrightは、通常操作用のChromiumビルドと、ヘッドレスモード用の個別のChromiumヘッドレスシェルを提供しています。

ヘッドレスシェルのみでテストを実行している場合 (つまり、channelオプションが指定されていない場合。例えばCI上など)、インストール時に--only-shellを渡すことで、完全なChromiumブラウザのダウンロードを回避できます。

# only running tests headlessly
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install --with-deps --only-shell"

Chromium: 新しいヘッドレスモード

'chromium'チャネルを使用することで、新しいヘッドレスモードを選択できます。公式のChromeドキュメントに記載されているように、

一方、新しいヘッドレスモードは実際のChromeブラウザであり、より本物志向で信頼性が高く、より多くの機能を提供します。これにより、高精度のエンドツーエンドWebアプリテストやブラウザ拡張機能テストに適しています。

詳細については、issue #33566を参照してください。

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel("chromium"));
Page page = browser.newPage();
// ...
}
}
}

新しいヘッドレスモードを使用すると、ブラウザのインストール時に--no-shellオプションを使うことで、ヘッドレスシェルをダウンロードせずに済みます。

# only running tests headlessly
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install --with-deps --no-shell"

Google Chrome および Microsoft Edge

Playwrightは最新のChromiumビルドをダウンロードして使用できますが、マシンにインストールされているブランド化されたGoogle ChromeおよびMicrosoft Edgeブラウザに対して操作することもできます(Playwrightはデフォルトではそれらをインストールしないことに注意してください)。特に、現在のPlaywrightバージョンは、これらのブラウザのStableおよびBetaチャネルをサポートします。

利用可能なチャネルは、chromemsedgechrome-betamsedge-betachrome-devmsedge-devchrome-canarymsedge-canaryです。

警告

特定の企業ブラウザポリシーは、PlaywrightがGoogle ChromeおよびMicrosoft Edgeを起動および制御する能力に影響を与える可能性があります。ブラウザポリシーが適用されている環境での実行は、Playwrightプロジェクトの範囲外です。

警告

Google ChromeとMicrosoft Edgeは、通常のヘッドモードに近い新しいヘッドレスモードの実装に切り替わりました。これは、Playwrightでヘッドレス実行時にデフォルトで使用されるChromiumヘッドレスシェルとは異なるため、場合によっては動作が異なる可能性があります。詳細については、issue #33566を参照してください。

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
// Channel can be "chrome", "msedge", "chrome-beta", "msedge-beta" or "msedge-dev".
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel("msedge"));
Page page = browser.newPage();
// ...
}
}
}

Google Chrome および Microsoft Edge のインストール

Google ChromeまたはMicrosoft Edgeがマシンにインストールされていない場合、Playwrightコマンドラインツールを使用してインストールできます。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install msedge"
警告

Google ChromeまたはMicrosoft Edgeのインストールは、お使いのオペレーティングシステムのデフォルトのグローバルな場所にインストールされ、現在のブラウザのインストールを上書きします。

インストール可能なブラウザの完全なリストを表示するには、--helpオプションを付けて実行してください。

Google Chrome および Microsoft Edge を使用すべき時とそうでない時

デフォルト

ほとんどの場合、最新のChromiumとデフォルトのPlaywright設定を使用することをお勧めします。PlaywrightはブラウザのStableチャネルよりも先行しているため、今後リリースされるGoogle ChromeやMicrosoft Edgeによってサイトが壊れることがないという安心感があります。公式のChromeアップデートの前に、早期に問題を発見し、修正する十分な時間があります。

回帰テスト

とはいえ、テストポリシーでは、現在一般公開されているブラウザに対して回帰テストを実行することがしばしば求められます。この場合、安定版チャネルである"chrome"または"msedge"のいずれかを選択できます。

メディアコーデック

公式バイナリを使用してテストするもう一つの理由は、メディアコーデック関連の機能をテストするためです。Chromiumは、さまざまなライセンス上の考慮事項や合意により、Google ChromeやMicrosoft Edgeがバンドルしているすべてのコーデックを持っているわけではありません。もしあなたのサイトがこのようなコーデックに依存している場合(これは稀なケースですが)、公式チャネルを使用することをお勧めします。

エンタープライズポリシー

Google ChromeおよびMicrosoft Edgeは、機能の制限、ネットワークプロキシ、テストの妨げとなる強制的な拡張機能などを含むエンタープライズポリシーを尊重します。そのため、そのようなポリシーを使用する組織に属している場合、ローカルテストにはバンドルされたChromiumを使用するのが最も簡単であり、通常そのような制限がないボット上で安定チャネルを選択することも可能です。

Firefox

PlaywrightのFirefoxバージョンは、最近のFirefox Stableビルドに一致します。Playwrightはパッチに依存しているため、ブランド版のFirefoxでは動作しません。

基盤となるプラットフォームに大きく依存する特定の機能の可用性は、オペレーティングシステム間で異なる場合があることに注意してください。例えば、利用可能なメディアコーデックはLinux、macOS、Windows間で大きく異なります。

WebKit

PlaywrightのWebKitは、最新のWebKitメインブランチソースから派生しており、多くの場合、これらの更新がApple Safariやその他のWebKitベースのブラウザに組み込まれる前です。これにより、潜在的なブラウザの更新問題に反応する十分な時間があります。Playwrightはパッチに依存しているため、ブランド版のSafariでは動作しません。代わりに、最新のWebKitビルドを使用してテストできます。

基盤となるプラットフォームに大きく依存する特定の機能の可用性は、オペレーティングシステム間で異なる場合があることに注意してください。例えば、利用可能なメディアコーデックはLinux、macOS、Windows間で大きく異なります。Linux CIでWebKitを実行するのが通常最も費用対効果の高いオプションですが、Safariに最も近い体験を得るには、例えばビデオ再生を行う場合など、MacでWebKitを実行する必要があります。

ファイアウォールまたはプロキシの背後でインストールする

デフォルトでは、PlaywrightはMicrosoftのCDNからブラウザをダウンロードします。

企業によっては、パブリックリソースへの直接アクセスをブロックする内部プロキシを維持している場合があります。この場合、Playwrightはプロキシサーバー経由でブラウザをダウンロードするように構成できます。

HTTPS_PROXY=https://192.0.2.1 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

プロキシのリクエストがカスタムの信頼されていない認証局(CA)によって傍受され、ブラウザのダウンロード中にError: self signed certificate in certificate chainエラーが発生する場合、ブラウザをインストールする前に、NODE_EXTRA_CA_CERTS環境変数を通じてカスタムルート証明書を設定する必要があります。

export NODE_EXTRA_CA_CERTS="/path/to/cert.pem"

Playwrightブラウザアーカイブへのネットワーク接続が遅い場合、PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT環境変数で接続タイムアウトをミリ秒単位で増やすことができます。

PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

Linuxで依存関係をインストールし、プロキシを使用する必要がある場合は、rootユーザーとしてコマンドを実行するようにしてください。そうしないと、Playwrightはrootになろうとし、HTTPS_PROXYのような環境変数をLinuxパッケージマネージャーに渡しません。

sudo HTTPS_PROXY=https://192.0.2.1 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install-deps"

アーティファクトリポジトリからのダウンロード

デフォルトでは、PlaywrightはMicrosoftのCDNからブラウザをダウンロードします。

企業によっては、ブラウザバイナリをホストするために内部アーティファクトリポジトリを維持している場合があります。この場合、PlaywrightはPLAYWRIGHT_DOWNLOAD_HOST環境変数を使用してカスタムロケーションからダウンロードするように構成できます。

PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

PLAYWRIGHT_DOWNLOAD_HOSTよりも優先されるPLAYWRIGHT_CHROMIUM_DOWNLOAD_HOSTPLAYWRIGHT_FIREFOX_DOWNLOAD_HOSTPLAYWRIGHT_WEBKIT_DOWNLOAD_HOST環境変数を使用して、ブラウザごとのダウンロードホストを使用することも可能です。

PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

ブラウザバイナリの管理

PlaywrightはChromium、WebKit、FirefoxブラウザをOS固有のキャッシュフォルダにダウンロードします。

  • Windows上の%USERPROFILE%\AppData\Local\ms-playwright
  • macOS上の~/Library/Caches/ms-playwright
  • Linux上の~/.cache/ms-playwright

これらのブラウザはインストール時に数百メガバイトのディスク容量を消費します。

du -hs ~/Library/Caches/ms-playwright/*
281M chromium-XXXXXX
187M firefox-XXXX
180M webkit-XXXX

環境変数を使用してデフォルトの動作をオーバーライドできます。Playwrightをインストールする際に、特定の場所にブラウザをダウンロードするように指示します。

PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

Playwrightスクリプトを実行する際に、共有された場所でブラウザを検索するように指示します。

PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers mvn test

Playwrightは、これらのブラウザを必要とするパッケージを追跡し、Playwrightを新しいバージョンに更新する際にそれらをガベージコレクションします。

開発者は、.bashrcPLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsersをエクスポートすることで、このモードを選択できます。

ブラウザのダウンロードをスキップする

ブラウザバイナリが個別に管理されているため、ブラウザのダウンロードを完全に回避したい場合があります。

これは、インストール前にPLAYWRIGHT_SKIP_BROWSER_DOWNLOAD変数を設定することで可能です。

PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 mvn test

不要なブラウザの削除

Playwrightは、そのブラウザを使用するクライアントを追跡します。特定のバージョンのブラウザを必要とするクライアントがいなくなると、そのバージョンはシステムから削除されます。これにより、異なるバージョンのPlaywrightインスタンスを安全に使用できると同時に、使用されていないブラウザのためにディスク容量を無駄にすることもありません。

未使用のブラウザ削除をオプトアウトするには、PLAYWRIGHT_SKIP_BROWSER_GC=1環境変数を設定できます。

ブラウザのアンインストール

これにより、現在のPlaywrightインストールで使われているブラウザ(Chromium、Firefox、WebKit)が削除されます。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="uninstall"

他のPlaywrightインストールでもブラウザを削除するには、--allフラグを渡します。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="uninstall --all"