Chrome for Testingでバージョン問題を打開せよ!

Seleniumやるかー、そろそろ作りこむかーと思っていたところ、とあるニュースを発見。

Chrome for Testing: reliable downloads for browser automation

(Chrome for Testing:ブラウザ自動化のための信頼性の高いダウンロードサービス)

だと・・・?

スポンサーリンク

Chrome for Testingとは?

公式の情報を拝借します。

Today we’re happy to announce Chrome for Testing, a new Chrome flavor that specifically targets web app testing and automation use cases. This article explains why the Chrome team felt this was needed, and walks through concrete examples where Chrome for Testing might benefit you as a developer.

https://developer.chrome.com/blog/chrome-for-testing/

本日、Chrome for Testingを発表します。Chromeの新しい機能で、特にWebアプリのテストと自動化のユースケースをターゲットにしています。

この記事では、Chromeチームがなぜこの機能が必要だと考えたのか、そしてChrome for Testingが開発者にとってどのようなメリットがあるのか、具体的な例を挙げて説明しています。

背景

Browser testing is a vital component of creating a high-quality web experience, regardless of whether it is done manually or automatically. At the same time, setting up an adequate browser testing environment is notoriously difficult, so much so that it’s consistentlyreported as a top web developer pain point. Today, we’re announcing a change that hopefully eases some of this pain.

https://developer.chrome.com/blog/chrome-for-testing/

ブラウザテストは、手動か自動かを問わず、高品質なWebエクスペリエンスを実現するために不可欠な要素です。その一方で、適切なブラウザテスト環境を構築することは非常に困難であり、ウェブ開発者の悩みの種として常に報告されているほどです。

今日、私たちは、この苦痛を少しでも和らげることができるような変更を発表します。

ブラウザテストは素晴らしいが、それを管理構築するのはとてつもない手間であるため、何とかしたいという気持ちは世界共通で間違いなかった。

まあ動かすだけなら、楽っちゃ楽なのがブラウザ自動テスト・・・

自動更新:ユーザーには素晴らしいが、開発者には苦痛

One of Chrome’s most notable features is its ability to auto-update. Users are happy to know they’re running an up-to-date and secure browser version including modern Web Platform features, browser features, and bug fixes at all times.

https://developer.chrome.com/blog/chrome-for-testing/

Chromeの最も顕著な特徴の1つは、自動更新機能です。最新のWebプラットフォーム機能、ブラウザ機能、バグフィックスを含む最新かつ安全なブラウザバージョンを常に実行していることは、ユーザーにとって嬉しいことです。

However, as a developer running a suite of end-to-end tests you might have an entirely different perspective:

https://developer.chrome.com/blog/chrome-for-testing/

しかし、エンドツーエンドテストを実施する開発者としては、全く異なる視点を持っているかもしれません。

You want consistent, reproducible results across repeated test runs—but this may not happen if the browser executable or binary decides to update itself in between two runs.

https://developer.chrome.com/blog/chrome-for-testing/

テストを繰り返し実行することで、一貫した再現性のある結果を得たいが、ブラウザの実行ファイルやバイナリが2回の実行の間にアップデートされた場合、それが実現できないかもしれない。

You want to pin a specific browser version and check that version number into your source code repository, so that you can check out old commits and branches and re-run the tests against the browser binary from that point in time.

https://developer.chrome.com/blog/chrome-for-testing/

特定のブラウザのバージョンを特定し、そのバージョン番号をソースコードリポジトリに登録することで、古いコミットやブランチをチェックアウトし、その時点のブラウザバイナリに対してテストを再実行できるようにしたいのです。

None of this is possible with an auto-updating browser binary. As a result, you may not want to use your regular Chrome installation for automated testing. This is the fundamental mismatch between what’s good for regular browser users versus what’s good for developers doing automated testing.

https://developer.chrome.com/blog/chrome-for-testing/

自動更新されるブラウザのバイナリでは、このようなことは不可能です。その結果、自動テストに通常のChromeのインストールを使用したくない場合があります。これは、通常のブラウザユーザーにとって良いことと、自動テストを行う開発者にとって良いこととの間の根本的なミスマッチです。

ブラウザが自動更新されることにより、WebDriverのバージョンと不一致になってしまい、エラーするというのは日常茶飯事で、初めてこの問題に遭遇したときの「どうすりゃいいんだ・・・!!」感は相当のもの。

この問題にはいくつか解決策があるけど、当ブログでは、

「自力でWebDriverを自動更新する!!」

というマッチョな精神で取り組んでいたりする↓↓↓

バージョンアップしたブラウザのバイナリ

Auto-update aside, you might also have found it hard to find a Chrome binary with a specific version. Google intentionally doesn’t make versioned Chrome downloads available, since users shouldn’t have to care about version numbers—they should always get updated to the latest version as soon as possible. This is great for users, but painful for developers needing to reproduce a bug report in an older Chrome version.

https://developer.chrome.com/blog/chrome-for-testing/

自動アップデートはともかく、特定のバージョンを持つChromeバイナリを見つけるのが難しいということもあるかもしれません。なぜなら、ユーザーはバージョン番号を気にする必要がなく、常に最新のバージョンにできるだけ早くアップデートする必要があるからです。これはユーザーにとってはありがたいことですが、古いバージョンのChromeでバグレポートを再現する必要がある開発者にとってはつらいことです。

A more specific example of this problem is when you want to use ChromeDriver for browser automation. Not only do you have to download a Chrome binary somehow, you also need a correspondingly-versioned ChromeDriver binary to ensure the two binaries are compatible.

https://developer.chrome.com/blog/chrome-for-testing/

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

Due to there being no good way to solve these issues, we know that many developers download to Chromium (not Chrome) binaries instead, although this approach has some flaws. First, these Chromium binaries are not reliably available across all platforms. Second, they are built and published separately from the Chrome release process, making it impossible to map their versions back to real user-facing Chrome releases. Third, Chromium is different from Chrome.

https://developer.chrome.com/blog/chrome-for-testing/

これらの問題を解決する良い方法がないため、多くの開発者が代わりにChromium(Chromeではない)バイナリをダウンロードしていることが分かっていますが、この方法にはいくつかの欠点があります。第一に、これらのChromiumバイナリは、すべてのプラットフォームで確実に利用できるわけではありません。第二に、ChromiumバイナリはChromeのリリースプロセスとは別に構築、公開されているため、そのバージョンを実際のユーザー向けChromeリリースに対応させることができないことである。第三に、ChromiumはChromeとは異なるものである。

これがより深刻で、常に最新バージョンのブラウザでテストしたいわけではなく、

「問題が発生する可能性のある特定のバージョンでテストがし辛い」

という課題を孕んでいた。

WebDriverは各バージョン保存していれば何とかなるが、ブラウザ側は困難。

過去のバージョンで更新を止めるインストーラーがあるかはわからないが、

過去バージョンがDLできるWebDriverに対し、インストーラーは常に最新版のみ更新されるので、インストーラーをそろえて~というのは現実的じゃない。

その他の解決策:テスト用Chrome

Designed to solve these problems, Chrome for Testing is a dedicated flavor of Chrome targeting the testing use case, without auto-update, integrated into the Chrome release process, made available for every Chrome release. A versioned binary that’s as close to regular Chrome as possible without negatively affecting the testing use case.

https://developer.chrome.com/blog/chrome-for-testing/

これらの問題を解決するために設計されたChrome for Testingは、テスト用途をターゲットとした専用のChromeフレーバーで、自動更新はなく、Chromeのリリースプロセスに統合され、Chromeのリリースごとに利用できるようになります。バージョン管理されたバイナリで、テスト用途に悪影響を与えることなく、通常のChromeに限りなく近い形で提供されます。

To create Chrome for Testing, we’ve landed changes to the Chromium and Chrome codebases and set up infrastructure to build and upload these binaries to a publicly available bucket in lockstep with the Chrome release process across all channels (Stable, Beta, Dev, and Canary).

https://developer.chrome.com/blog/chrome-for-testing/

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

The infrastructure around Chrome for Testing unlocks interesting opportunities beyond Chrome itself. For example, the difficulties we previously mentioned around finding a matching Chrome and ChromeDriver binary can be completely eliminated by integrating the ChromeDriver release process into the Chrome for Testing infrastructure. In addition to solving this user-facing pain point, this also aligns ChromeDriver releases with Chrome’s, and eliminates the manual ChromeDriver release process.

https://developer.chrome.com/blog/chrome-for-testing/

Chrome for Testingのインフラは、Chromeそのものにとどまらない興味深い機会を解き放ちます。例えば、ChromeとChromeDriverのバイナリが一致しないといった問題は、ChromeDriverのリリースプロセスをChrome for Testingのインフラに統合することで完全に解消することができます。このようなユーザー側の悩みを解決するだけでなく、ChromeDriverのリリースとChromeのリリースを一致させ、手動で行っていたChromeDriverのリリースプロセスをなくすことができます。

問題解決をするための施策は「Chrome for Testing」が満たしているらしい。

Chrome for Testingのバイナリを入手するには?

The easiest way to download Chrome for Testing binaries for your platform is by using our @puppeteer/browsers command-line utility, available via npm. Here are some examples:

https://developer.chrome.com/blog/chrome-for-testing/

お使いのプラットフォーム用のChrome for Testingバイナリをダウンロードする最も簡単な方法は、npm経由で利用できる@puppeteer/browsersコマンドラインユーティリティを使用することです。以下はその例です:

# Download the latest available Chrome for Testing binary corresponding to the Stable channel.
npx @puppeteer/browsers install chrome@stable

# Download a specific Chrome for Testing version.
npx @puppeteer/browsers install chrome@116.0.5793.0

# Download the latest available ChromeDriver version corresponding to the Canary channel.
npx @puppeteer/browsers install chromedriver@canary

# Download a specific ChromeDriver version.
npx @puppeteer/browsers install chromedriver@116.0.5793.0

If you prefer to build your own automated scripts for downloading these binaries, we’ve got you covered. We offer JSON API endpoints with the latest available versions per Chrome release channel (Stable, Beta, Dev, Canary). To get a quick overview of the latest status, consult the Chrome for Testing availability dashboard.

https://developer.chrome.com/blog/chrome-for-testing/

これらのバイナリをダウンロードするための自動化されたスクリプトを独自に構築することをお望みの場合、私たちはあなたをサポートしています。Chromeのリリースチャンネル(Stable、Beta、Dev、Canary)ごとに、最新の利用可能なバージョンのJSON APIエンドポイントを提供しています。最新の状況を簡単に把握するには、Chrome for Testingの可用性ダッシュボードを参照してください。

コードはJSONで、これは扱ったことがないので勉強しなきゃな、、、

一度試してみて、後日記事にまとめてみようと思ってる。

ちなみに、、、

Chrome for Testing has been created purely for browser automation and testing purposes, and is not suitable for daily browsing.

https://developer.chrome.com/blog/chrome-for-testing/

Chrome for Testingは、純粋にブラウザの自動化とテストのために作成されたものであり、日常的なブラウジングには適していません。

とあり、完全に開発者用のツールみたい。

スポンサーリンク
おすすめの記事