Chrome for Testing:透過可靠的下載方式自動進行瀏覽器自動化

馬蒂亞斯.拜恩斯 (Mathias Bynens)
Mathias Bynens

我們很高興在此宣布 Chrome for Testing 這項新式 Chrome 版本,專為網頁應用程式測試和自動化用途所設計。本文將說明 Chrome 團隊為何覺得需要這麼做,並詳細說明 Chrome for Testing 對開發人員的助益。

背景

無論是手動或自動執行,瀏覽器測試都是打造高品質網路體驗的關鍵要素。另一方面,設定完善的瀏覽器測試環境並不是件容易的事,因此我們更持續 回報為網頁程式開發人員最棘手的問題點。我們今天要宣布一項變更,希望能減輕這些問題。

自動更新:這對使用者來說非常實用,這對開發人員來說很麻煩

Chrome 最顯著的功能之一就是能夠自動更新。使用者之所以會感到開心,是因為他們目前搭載的是最新、安全的瀏覽器版本,包括現代 Web Platform 功能、瀏覽器功能,以及修正錯誤。

不過,執行一系列端對端測試的開發人員可能會以完全不同的觀點:

  • 您希望重複執行測試時能保持一致且可重現的結果,但如果瀏覽器執行檔或二進位檔決定在兩次執行之間自行更新,就可能發生這種情況。
  • 您想要固定特定的瀏覽器版本,並在原始碼存放區中檢查該版本編號,這樣就可以查看舊的修訂版本和分支版本,並從該時間點重新對瀏覽器二進位檔執行測試。

但是自動更新瀏覽器二進位檔並不會發生上述情況。因此,您可能不想使用一般安裝的 Chrome 自動進行測試。這就是一般瀏覽器使用者和自動化測試的優點。

版本化瀏覽器二進位檔

除了自動更新之外,您可能會發現特定版本的 Chrome 二進位檔難以找到。Google 刻意不開放使用者下載 Chrome 版本,因為使用者不必費心管理版本編號,而是會盡快將 Chrome 更新至最新版本。對使用者來說,這項功能非常實用,但如果開發人員需要在舊版 Chrome 中重現錯誤報告,就會感到非常麻煩。

舉例來說,如果您想使用 ChromeDriver 自動執行瀏覽器自動化動作,就屬於這種情況。除了透過某種方式下載 Chrome 二進位檔時,您還需要取得相對應的版本 ChromeDriver 二進位檔,確保兩個二進位檔相容。

由於目前無法解決這些問題,不過許多開發人員會改為下載 Chromium (而非 Chrome) 二進位檔,但這個做法有一些瑕疵。首先,這些 Chromium 二進位檔並非在所有平台都能穩定存取。其次,這類 API 會與 Chrome 的發布程序分開建構和發布,因此無法將版本對應至實際面向使用者的 Chrome 版本。第三,Chromium 與 Chrome 不同。

解決方案:Chrome for Testing

Chrome for Testing 是專為解決這些問題所設計的 Chrome 專用版本,以測試用途為目標,不需要自動更新,並且已整合至 Chrome 發布程序,可在每個 Chrome 版本中取得。版本二進位檔與一般 Chrome 相近,且不會對測試用途造成負面影響。

為了建立 Chrome for Testing,我們已對 Chromium 和 Chrome 程式碼集做出變更,並設定基礎架構,將這些二進位檔建構並上傳到公開的值區,同時在所有版本 (穩定版、Beta 版、開發人員版和 Canary 版) 進行 Chrome 發布程序。

Chrome for Testing 的基礎架構可發掘 Chrome 本身以外的有趣商機。舉例來說,只要將 ChromeDriver 發布程序整合至 Chrome for Testing 基礎架構,即可完全解決我們先前提及的 Chrome 和 ChromeDriver 二進位檔的難題。除瞭解決這類使用者面臨的問題外,這也可以讓 ChromeDriver 版本與 Chrome 的版本保持一致,並省去手動發布 ChromeDriver 的程序。

如何取得 Chrome for Testing 二進位檔?

如要下載適用於平台的 Chrome for Testing 二進位檔,最簡單的方法就是使用 @puppeteer/browsers 指令列公用程式 (透過 npm 取得)。例子如下:

# 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

如果您想自行建立自動化指令碼來下載這些二進位檔,不妨參考我們提供的說明。我們為每個 Chrome 發布版本 (穩定版、Beta 版、開發人員版、 Canary 版) 提供 JSON API 端點。如要快速瞭解最新狀態,請參閱 Chrome for Testing 適用情形資訊主頁