今年初めに、Chrome 112 でChrome の新しいヘッドレス モード(--headless=new
)の提供を発表しました。このモードでは、デベロッパーは UI を表示せずに無人環境で Chrome を実行できます。テストや自動化のユースケースに役立ちます。
このお知らせの一環として、Chrome バイナリから古いヘッドレス モードを削除する予定があることをお知らせしました。古いヘッドレスは技術的には別のブラウザであるため、この削除は理にかなっています。つまり、現在は 2 つのブラウザ バイナリを 1 つにまとめています。一方で、新旧のヘッドレス モードにはそれぞれ異なるユースケースがあることも認識しています。
- 古いヘッドレス モードは Chromium の
//content
モジュールをラップする軽量なラッパーであるため、依存関係が大幅に少なくなっています。具体的には、X11/Wayland、D-Bus を必要とせず、いくつかの点で本格的な Chrome ブラウザよりもパフォーマンスが優れています。そのため、自動スクリーンショットやウェブスクレイピングなどのユースケースに適しています。 - 一方、新しいヘッドレスは実際の Chrome ブラウザであるため、より信頼性が高く、多くの機能を備えています。そのため、高精度のエンドツーエンドのウェブアプリ テストやブラウザ拡張機能のテストに適しています。
つまり、パフォーマンスと信頼性の間にはトレードオフがあります。どのヘッドレス モードが最適ですか?ユースケースによって異なります。
自動化のユースケースで Chrome の完全な機能を必要としないデベロッパーやテスターは、以前のヘッドレスを使用できます。それ以外の場合は、新しい Headless が最適な選択肢です。
デベロッパーとテスターが引き続きこの 2 つのオプションから選択できるように、古い Headless 実装がスタンドアロンの chrome-headless-shell
バイナリとして利用可能になりました。これらの新しい chrome-headless-shell
バイナリは、ユーザー向けの Chrome リリースごとに生成され、Chrome 120 以降では Chrome for Testing インフラストラクチャ経由でダウンロードできます。
chrome-headless-shell
バイナリを入手するにはどうすればよいですか?
他の Chrome for Testing バイナリと同様に、プラットフォーム用の chrome-headless-shell
をダウンロードする最も簡単な方法は、npm
を使用して利用できる @puppeteer/browsers
コマンドライン ユーティリティを使用することです。次に例を示します。
# Download the latest available `chrome-headless-shell` binary corresponding to the Stable channel.
npx @puppeteer/browsers install chrome-headless-shell@stable
# Download a specific `chrome-headless-shell` version.
npx @puppeteer/browsers install chrome-headless-shell@120.0.6098.0
chrome-headless-shell
バイナリをダウンロードするための独自の自動化スクリプトを作成する場合は、Google がサポートします。Chrome for Testing には、Chrome のリリース チャンネル(Stable、Beta、Dev、Canary)ごとに利用可能な最新バージョンの JSON API エンドポイントが用意されています。最新のステータスの概要については、Chrome for Testing の提供状況ダッシュボードをご覧ください。
フィードバック
chrome-headless-shell
に関する皆様からのフィードバックをお待ちしております。問題が発生した場合は、ご報告ください。