堅牢で高品質なウェブ アプリケーションを構築するには、ブラウザの自動テストが不可欠です。継続的インテグレーション(CI)のエンドツーエンド スイートの実行、ブラウザ リリース全体での回帰テストの実施、ブラウザ操作の自動化など、Chrome はデベロッパーとテスト自動化エンジニア向けに設計された専用のツールと実行モードのスイートを提供します。
この概要では、Chrome の自動化とテストのエコシステムのコアプロダクトである Chrome for Testing、ChromeDriver、Puppeteer、および Chrome ヘッドレス モード を紹介し、これらのプロダクトを組み合わせて使用して、信頼性が高く再現可能なテスト ワークフローを実現する方法について説明します。
Chrome for Testing
Chrome for Testing は、ウェブアプリのテストと自動化のユースケースを対象とした専用の Chrome フレーバーです。
エンドツーエンドのテスト スイートや継続的インテグレーション(CI)パイプラインを実行する場合、テストを繰り返すたびに一貫した再現可能な結果が必要になることがよくあります。Chrome for Testing では、標準のブラウザ インストールに依存するのではなく、テスト環境用に特定の Chrome バージョンをダウンロードして固定できます。
主な機能
- オンデマンドのバージョン付きダウンロード: 特定のバージョン付き Chrome バイナリにアクセスできるため、常に選択した正確なバージョンに対してテストできます。
- チャンネル間のペアのバイナリ: すべてのチャンネル(Stable 、Beta 、Dev 、Canary )の Chrome リリースごとに、Chrome for Testing は、関連する ChromeDriver バイナリとペアになった Chrome バイナリと、自動テストで引き続き使用するユーザー向けの古い Chrome ヘッドレス シェル(
chrome-headless-shell)を提供します。 - 簡単なダウンロードの自動化: バイナリは、
@puppeteer/browsersコマンドライン ユーティリティを使用して簡単にダウンロードできます。また、可用性ダッシュボードからクエリすることもできます。
詳細
ChromeDriver
ChromeDriver は、W3C WebDriver 標準と双方向 WebDriver BiDi プロトコルを実装するオープンソースのスタンドアロン サーバーです。WebDriver ベースのテスト フレームワーク(Selenium、WebDriverIO、Nightwatch など)と Chrome ブラウザのブリッジとして機能します。
主な機能
- W3C WebDriver と WebDriver BiDi のサポート: クラシック WebDriver 自動化コマンドと、WebDriver BiDi を介したリアルタイムの双方向通信の両方をサポートし、イベントの迅速なリスニング、ネットワーク モニタリング、ログのインターセプトを実現します。
- Chrome for Testing と同時にリリース: ChromeDriver のリリースは、Chrome for Testing インフラストラクチャに直接統合されています。Chrome for Testing のバージョンごとに、対応する ChromeDriver のバージョンが同時にリリースされるため、バージョンの不一致による問題が解消されます。
詳細
操り人形師
Puppeteer は、Google が開発した JavaScript ライブラリで、Chrome DevTools Protocol(CDP)または WebDriver BiDi を介して Chrome を制御する高レベルの API を提供します。
主な機能
- セットアップ不要の自動化: Puppeteer は、デフォルトで互換性のある Chrome for Testing バイナリを自動的にダウンロードし、すぐに使用できるブラウザの自動化を可能にします。
- Chrome の完全な制御: スクリーンショットのキャプチャ、PDF の生成、フォーム送信の自動化、ネットワーク リクエストのインターセプト、UI テストの実行を、ヘッドフル モードまたはヘッドレス モードで簡単に行えます。
詳細
Chrome ヘッドレス モード
Chrome ヘッドレス モードでは、ユーザー インターフェースを表示せずに、無人環境で Chrome を実行できます。コマンドラインで --headless フラグを渡すと、Chrome はサーバー環境、コンテナ、CI/CD パイプラインでクリーンに実行されます。
主な機能
- 統合されたブラウザ エンジン: 最新のヘッドレス モード(
--headless)は、ヘッドフル Chrome とまったく同じブラウザ実装を共有します。 - 豊富な自動化とデバッグ機能: スクリーンショットのキャプチャ、PDF の生成、リモート デバッグ、仮想画面の構成をサポートしています。
詳細
例: これらのプロダクトを組み合わせて使用する
一般的な自動テストまたは継続的インテグレーション(CI)ワークフローでは、これらのプロダクトが連携して、再現可能な無人テスト環境を提供します。
- ブラウザ バイナリ(Chrome for Testing): 特定のバージョンに固定された Chrome for Testing バイナリを使用すると、実行間でテスト結果が決定論的になります。
- 実行モード(Chrome ヘッドレス モード): そのバイナリをヘッドレス モード (
--headless)で実行すると、グラフィック表示なしで、サーバー、コンテナ、CI パイプラインでテストがクリーンに実行されます。 - 自動化ドライバ(Puppeteer または ChromeDriver): Puppeteer などの自動化ライブラリ、または WebDriver BiDi を介して接続された他のテスト フレームワークを使用して、ブラウザを操作します。
Puppeteer はこれらの要素を自動的に接続します。インストールすると、互換性のある Chrome for Testing バイナリがダウンロードされ、デフォルトでヘッドレス モード で起動します。
W3C WebDriver フレームワーク(Selenium や WebdriverIO など)を使用する場合は、Chrome for Testing と ChromeDriver のバイナリの対応するペアを自動的にダウンロードし、--headless フラグを渡して UI なしで実行できます。