ブラウザ
はじめに
Playwrightの各バージョンは、動作するために特定のバージョンのブラウザバイナリを必要とします。これらのブラウザをインストールするには、Playwright CLIを使用する必要があります。
Playwrightはリリースごとにサポートするブラウザのバージョンを更新し、常に最新のPlaywrightが最新のブラウザをサポートするようにしています。つまり、Playwrightを更新するたびに、install
CLIコマンドを再実行する必要がある場合があります。
ブラウザのインストール
Playwrightはサポートされているブラウザをインストールできます。引数なしでコマンドを実行すると、デフォルトのブラウザがインストールされます。
pwsh bin/Debug/netX/playwright.ps1 install
引数を提供することで、特定のブラウザをインストールすることもできます。
pwsh bin/Debug/netX/playwright.ps1 install webkit
サポートされているすべてのブラウザを見る
pwsh bin/Debug/netX/playwright.ps1 install --help
APIによるブラウザのインストール
.NET APIを介してコマンドラインツールコマンドを実行できます
var exitCode = Microsoft.Playwright.Program.Main(new[] {"install"});
if (exitCode != 0)
{
throw new Exception($"Playwright exited with code {exitCode}");
}
システム依存関係のインストール
システム依存関係は自動的にインストールできます。これはCI環境で役立ちます。
pwsh bin/Debug/netX/playwright.ps1 install-deps
引数として渡すことで、単一のブラウザの依存関係をインストールすることもできます。
pwsh bin/Debug/netX/playwright.ps1 install-deps chromium
install-deps
とinstall
を組み合わせて、ブラウザとOSの依存関係を単一のコマンドでインストールすることも可能です。
pwsh bin/Debug/netX/playwright.ps1 install --with-deps chromium
公式にサポートされているオペレーティングシステムについては、システム要件を参照してください。
ブラウザの設定
Playwrightは、Chromium、WebKit、Firefoxブラウザ、およびGoogle ChromeやMicrosoft Edgeなどのブランドブラウザでテストを実行できます。また、エミュレートされたタブレットおよびモバイルデバイスでも実行できます。選択されたデスクトップ、タブレット、モバイルデバイスの完全なリストについては、デバイスパラメータのレジストリを参照してください。
異なるブラウザでのテスト実行
特定のブラウザでテストを実行
dotnet test -- Playwright.BrowserName=webkit
複数のブラウザまたは設定でテストを実行するには、dotnet test
コマンドを複数回呼び出す必要があります。BROWSER
環境変数を指定するか、runsettingsファイル経由でPlaywright.BrowserName
を設定できます。
dotnet test --settings:chromium.runsettings
dotnet test --settings:firefox.runsettings
dotnet test --settings:webkit.runsettings
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
</Playwright>
</RunSettings>
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
pwsh bin/Debug/netX/playwright.ps1 install --with-deps --only-shell
Chromium: 新しいヘッドレスモード
'chromium'
チャネルを使用することで、新しいヘッドレスモードを選択できます。公式のChromeドキュメントには次のように記載されています。
一方、新しいヘッドレスは実際のChromeブラウザであり、より本物で信頼性が高く、より多くの機能を提供します。これにより、高精度なエンドツーエンドのウェブアプリテストやブラウザ拡張テストにより適しています。
詳細については、issue #33566を参照してください。
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
<LaunchOptions>
<Channel>chromium</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
dotnet test -- Playwright.BrowserName=chromium Playwright.LaunchOptions.Channel=chromium
新しいヘッドレスモードでは、ブラウザのインストール時に--no-shell
オプションを使用することで、ヘッドレスシェルのダウンロードをスキップできます。
# only running tests headlessly
pwsh bin/Debug/netX/playwright.ps1 install --with-deps --no-shell
Google Chrome & Microsoft Edge
Playwrightは最新のChromiumビルドをダウンロードして使用できますが、マシン上で利用可能なブランドのGoogle ChromeおよびMicrosoft Edgeブラウザに対して操作することもできます(Playwrightはデフォルトではこれらをインストールしません)。特に、現在のPlaywrightバージョンは、これらのブラウザのStableおよびBetaチャネルをサポートします。
利用可能なチャネルは、chrome
、msedge
、chrome-beta
、msedge-beta
、chrome-dev
、msedge-dev
、chrome-canary
、msedge-canary
です。
特定のエンタープライズブラウザポリシーは、PlaywrightがGoogle ChromeおよびMicrosoft Edgeを起動および制御する能力に影響を与える可能性があります。ブラウザポリシーが適用される環境での実行は、Playwrightプロジェクトのスコープ外です。
Google ChromeおよびMicrosoft Edgeは、通常のヘッドありモードに近い新しいヘッドレスモードの実装に切り替えました。これは、ヘッドレス実行時にPlaywrightがデフォルトで使用するChromiumヘッドレスシェルとは異なるため、場合によっては異なる動作が予想されます。詳細については、issue #33566を参照してください。
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
<LaunchOptions>
<Channel>msedge</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
dotnet test -- Playwright.BrowserName=chromium Playwright.LaunchOptions.Channel=msedge
Google Chrome & Microsoft Edgeのインストール
マシンにGoogle ChromeまたはMicrosoft Edgeがインストールされていない場合、Playwrightのコマンドラインツールを使用してインストールできます。
pwsh bin/Debug/netX/playwright.ps1 install msedge
Google ChromeまたはMicrosoft Edgeのインストールは、現在のブラウザのインストールを上書きし、オペレーティングシステムのデフォルトのグローバルな場所にインストールされます。
インストール可能なブラウザの完全なリストを表示するには、--help
オプションを付けて実行してください。
Google Chrome & Microsoft Edgeを使用すべき場合とそうでない場合
デフォルト
最新のChromiumでデフォルトのPlaywright設定を使用することは、ほとんどの場合良いアイデアです。PlaywrightはブラウザのStableチャネルよりも先行しているため、今後のGoogle ChromeまたはMicrosoft Edgeのリリースがあなたのサイトを壊すことがないという安心感があります。問題発生を早期に検出し、公式のChromeアップデート前に修正する十分な時間を確保できます。
回帰テスト
とは言え、テストポリシーでは、現在一般公開されているブラウザに対して回帰テストを実行することが求められることがよくあります。この場合、安定版チャネルのいずれか、"chrome"
または"msedge"
を選択できます。
メディアコーデック
公式バイナリを使用してテストするもう1つの理由は、メディアコーデックに関連する機能をテストするためです。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はプロキシサーバーを介してブラウザをダウンロードするように設定できます。
- Bash
- PowerShell
- Batch
HTTPS_PROXY=https://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install
$Env:HTTPS_PROXY="https://192.0.2.1"
pwsh bin/Debug/netX/playwright.ps1 install
set HTTPS_PROXY=https://192.0.2.1
pwsh bin/Debug/netX/playwright.ps1 install
プロキシのリクエストがカスタムの信頼できない認証局(CA)によって傍受され、ブラウザのダウンロード中にError: self signed certificate in certificate chain
が発生する場合、ブラウザをインストールする前にNODE_EXTRA_CA_CERTS
環境変数を使用してカスタムルート証明書を設定する必要があります。
- Bash
- PowerShell
- Batch
export NODE_EXTRA_CA_CERTS="/path/to/cert.pem"
$Env:NODE_EXTRA_CA_CERTS="C:\certs\root.crt"
set NODE_EXTRA_CA_CERTS="C:\certs\root.crt"
Playwrightブラウザアーカイブへのネットワーク接続が遅い場合、PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT
環境変数で接続タイムアウトをミリ秒単位で増やすことができます。
- Bash
- PowerShell
- Batch
PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000 pwsh bin/Debug/netX/playwright.ps1 install
$Env:PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT="120000"
pwsh bin/Debug/netX/playwright.ps1 install
set PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000
pwsh bin/Debug/netX/playwright.ps1 install
依存関係をインストールする際にLinuxでプロキシを使用する必要がある場合は、rootユーザーとしてコマンドを実行するようにしてください。そうしないと、Playwrightはrootになろうとし、HTTPS_PROXY
のような環境変数をLinuxパッケージマネージャーに渡しません。
sudo HTTPS_PROXY=https://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install-deps
アーティファクトリポジトリからのダウンロード
デフォルトでは、PlaywrightはMicrosoftのCDNからブラウザをダウンロードします。
企業によっては、ブラウザのバイナリをホストするための内部アーティファクトリポジトリを維持している場合があります。この場合、PlaywrightはPLAYWRIGHT_DOWNLOAD_HOST
環境変数を使用してカスタムの場所からダウンロードするように設定できます。
- Bash
- PowerShell
- Batch
PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install
$Env:PLAYWRIGHT_DOWNLOAD_HOST="http://192.0.2.1"
pwsh bin/Debug/netX/playwright.ps1 install
set PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1
pwsh bin/Debug/netX/playwright.ps1 install
また、PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST
、PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST
、PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST
という環境変数を使用することで、ブラウザごとにダウンロードホストを設定することも可能です。これらはPLAYWRIGHT_DOWNLOAD_HOST
よりも優先されます。
- Bash
- PowerShell
- Batch
PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install
$Env:PLAYWRIGHT_DOWNLOAD_HOST="http://192.0.2.1"
$Env:PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST="http://203.0.113.3"
pwsh bin/Debug/netX/playwright.ps1 install
set PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3
set PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1
pwsh bin/Debug/netX/playwright.ps1 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をインストールする際に、特定の場所にブラウザをダウンロードするように指示します。
- Bash
- PowerShell
- Batch
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers pwsh bin/Debug/netX/playwright.ps1 install
$Env:PLAYWRIGHT_BROWSERS_PATH="$Env:USERPROFILE\pw-browsers"
pwsh bin/Debug/netX/playwright.ps1 install
set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
pwsh bin/Debug/netX/playwright.ps1 install
Playwrightスクリプトを実行する際に、共有場所でブラウザを検索するように指示します。
- Bash
- PowerShell
- Batch
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers dotnet test
$Env:PLAYWRIGHT_BROWSERS_PATH="$Env:USERPROFILE\pw-browsers"
dotnet test
set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
dotnet test
Playwrightは、これらのブラウザを必要とするパッケージを追跡し、Playwrightを新しいバージョンに更新すると、それらをガベージコレクションで回収します。
開発者は、.bashrc
でPLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers
をエクスポートすることで、このモードを選択できます。
古いブラウザの削除
Playwrightは、そのブラウザを使用するクライアントを追跡します。特定のバージョンのブラウザを必要とするクライアントがいなくなると、そのバージョンはシステムから削除されます。このようにして、異なるバージョンのPlaywrightインスタンスを安全に使用でき、同時に使用されなくなったブラウザのためにディスク容量を無駄にすることもありません。
未使用ブラウザの削除をオプトアウトするには、PLAYWRIGHT_SKIP_BROWSER_GC=1
環境変数を設定できます。
ブラウザのアンインストール
これにより、現在のPlaywrightインストールでインストールされているブラウザ(chromium、firefox、webkit)が削除されます。
pwsh bin/Debug/netX/playwright.ps1 uninstall
他のPlaywrightインストールのブラウザも削除するには、--all
フラグを渡します。
pwsh bin/Debug/netX/playwright.ps1 uninstall --all