Chrome for Testing

Chrome for Testing は、ウェブアプリのテストと自動化のユースケースを対象とした Chrome フレーバーです。このドキュメントでは、Chrome チームがこの必要性を感じた理由と、デベロッパーとして Chrome for Testing を利用するメリットがある具体的な例について説明します。

背景

ブラウザ テストは、手動で行うか自動で行うかにかかわらず、高品質のウェブ エクスペリエンスを作成するうえで不可欠な要素です。同時に、適切なブラウザ テスト環境をセットアップすることは非常に難しく、ウェブ デベロッパーの最大の課題として一貫して 報告されています。

自動更新: ユーザーには便利だが、デベロッパーには負担

Chrome の最も注目すべき機能の 1 つは、自動更新機能です。ユーザーは、最新のウェブ プラットフォーム機能、ブラウザ機能、バグの修正を含む、最新かつ安全なブラウザ バージョンを常に利用できることを喜んでいます。

ただし、一連のエンドツーエンド テストを実行するデベロッパーは、まったく異なる視点を持っている可能性があります。

  • テストを繰り返し実行しても一貫性のある再現可能な結果を得たいが、ブラウザの実行可能ファイルまたはバイナリが 2 回の実行の間に自動更新されると、この結果が得られない可能性がある。
  • 特定のブラウザ バージョンを固定し、そのバージョン番号をソースコード リポジトリにチェックインして、古いコミットとブランチをチェックアウトし、その時点のブラウザ バイナリに対してテストを再実行できるようにします。

自動更新されるブラウザ バイナリでは、これらの操作はできません。そのため、自動テストに通常の Chrome インストールを使用しない方がよい場合があります。これは、通常のブラウザ ユーザーにとってのメリットと、自動テストを行うデベロッパーにとってのメリットとの根本的な不一致です。

バージョン管理されたブラウザ バイナリ

自動更新以外にも、特定のバージョンの Chrome バイナリを見つけるのが難しいと感じたことがあるかもしれません。Google は、バージョン番号をユーザーが気にする必要がないように、バージョン付きの Chrome ダウンロードを意図的に提供していません。ユーザーは常にできるだけ早く最新バージョンに更新されるべきです。これはユーザーにとっては便利ですが、古い Chrome バージョンでバグレポートを再現する必要があるデベロッパーにとっては面倒です。

この問題のより具体的な例としては、ブラウザの自動化に ChromeDriver を使用する場合が挙げられます。Chrome バイナリを何らかの方法でダウンロードするだけでなく、2 つのバイナリの互換性を確保するために、対応するバージョンの ChromeDriver バイナリも必要になります。

これらの問題を解決する適切な方法がないため、多くのデベロッパーは代わりに Chromium(Chrome ではない)バイナリをダウンロードしていますが、このアプローチにはいくつかの欠点があります。まず、これらの Chromium バイナリは、すべてのプラットフォームで確実に利用できるわけではありません。第 2 に、Chrome のリリース プロセスとは別にビルドおよび公開されるため、バージョンを実際のユーザー向け Chrome リリースにマッピングすることはできません。3 つ目は、Chromium は Chrome とは異なるということです。

解決策: Chrome for Testing

これらの問題を解決するために設計された Chrome for Testing は、テストのユースケースを対象とした専用の Chrome フレーバーです。自動更新がなく、Chrome リリース プロセスに統合され、すべての Chrome リリースで利用できます。テストのユースケースに悪影響を与えずに、通常の Chrome にできるだけ近いバージョニングされたバイナリ。

Chrome for Testing のロゴ。通常の Chrome ロゴに「Test」という単語が黒い長方形で囲まれています。

Chrome for Testing を作成するために、Chromium と Chrome のコードベースに変更を加え、すべてのチャンネル(Stable、Beta、Dev、Canary)で Chrome のリリース プロセスと歩調を合わせて、これらのバイナリをビルドして一般公開されているバケットにアップロードするためのインフラストラクチャをセットアップしました。

Chrome for Testing のインフラストラクチャは、Chrome 自体を超えた興味深い機会を切り開きます。たとえば、前述の Chrome と ChromeDriver のバイナリの組み合わせを見つけるのが難しいという問題は、ChromeDriver のリリース プロセスを Chrome for Testing のインフラストラクチャに統合することで完全に解消できます。このユーザー向けの課題を解決するだけでなく、ChromeDriver のリリースを Chrome のリリースと同期させ、ChromeDriver の手動リリース プロセスをなくすこともできます。