古いヘッドレス Chrome を chrome-headless-shell としてダウンロードします

今年初めに、Chrome 112 でChrome の新しいヘッドレス モード(--headless=newの提供を発表しました。このモードでは、デベロッパーは UI を表示せずに無人環境で Chrome を実行できます。テストや自動化のユースケースに役立ちます。

このお知らせの一環として、Chrome バイナリから古いヘッドレス モードを削除する予定があることをお知らせしました。古いヘッドレスは技術的には別のブラウザであるため、この削除は理にかなっています。つまり、現在は 2 つのブラウザ バイナリを 1 つにまとめています。一方で、新旧のヘッドレス モードにはそれぞれ異なるユースケースがあることも認識しています。

  1. 古いヘッドレス モードは Chromium の //content モジュールをラップする軽量なラッパーであるため、依存関係が大幅に少なくなっています。具体的には、X11/Wayland、D-Bus を必要とせず、いくつかの点で本格的な Chrome ブラウザよりもパフォーマンスが優れています。そのため、自動スクリーンショットやウェブスクレイピングなどのユースケースに適しています。
  2. 一方、新しいヘッドレスは実際の 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 に関する皆様からのフィードバックをお待ちしております。問題が発生した場合は、ご報告ください