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

Mathias Bynens
Mathias Bynens

很高興在此宣布,我們推出了 Chrome for Testing,這是專為網頁應用程式測試和自動化用途而推出的全新 Chrome 變種版本。本文將說明 Chrome 團隊為何認為這是必要措施,並舉例說明 Chrome for Testing 對開發人員有何助益。

背景

瀏覽器測試是打造高品質網路體驗的關鍵要素,無論是以手動或自動方式執行都一樣。與此同時,要設定適合的瀏覽器測試環境並不容易,必須持續 反映這是網頁程式開發人員最容易遇到的難題。我們今天宣布了一項改變,希望能夠緩解這類疼痛。

自動更新:對使用者而言相當便利,對開發人員來說也很實用

Chrome 最著名的功能之一,就是自動更新。使用者很高興知道自己搭載的最新版瀏覽器是最新的,包括新世代 Web Platform 功能、瀏覽器功能和錯誤修正。

不過,如果您是執行一系列端對端測試的開發人員,可能會擁有截然不同的觀點:

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

自動更新的瀏覽器二進位檔無法做到這點。因此,建議您不要使用一般安裝的 Chrome 來進行自動化測試。這主要是針對一般瀏覽器使用者對使用者有益,以及開發人員執行自動化測試的做法。

版本化瀏覽器二進位檔

在自動更新的情況下,您也可能覺得很難找到特定版本的 Chrome 二進位檔。Google 會刻意不提供版本 Chrome 下載功能,因為使用者無需擔心版本號碼,所以一律能盡快更新至最新版本。這對使用者來說非常實用,但如果開發人員在舊版 Chrome 中重現錯誤報告,我們也相當麻煩。

具體的例子就是,當你想使用 ChromeDriver 執行瀏覽器自動化作業時,就可能遇到這個問題。您不僅要下載 Chrome 二進位檔,還需有對應版本的 ChromeDriver 二進位檔,確保兩個二進位檔相容。

由於這些問題沒有很好的解決方式,我們知道許多開發人員會改為下載 Chromium (非 Chrome) 二進位檔,但這個方法有一些缺陷。首先,並非所有平台都能穩定取得這些 Chromium 二進位檔。第二,這類軟體與 Chrome 發布程序是分開建構及發布,因此無法將版本對應至實際向使用者顯示的 Chrome 版本。第三,Chromium 和 Chrome 不同。

解決方案:Chrome for Testing

為解決這些問題,Chrome for Testing 是專為測試用途所設計的 Chrome 版本,並未自動更新,而是整合至 Chrome 發布程序,因此適用於所有 Chrome 版本。在不影響測試用途的前提下,盡可能使用接近一般 Chrome 的版本式二進位檔。

為打造 Chrome for Testing,我們已對 Chromium 和 Chrome 程式碼集進行變更,並設定基礎架構,方便您運用 Chrome 發布程序來建立及上傳這些二進位檔,並上傳至所有發布版本 (穩定版、Beta 版、開發人員版和 Canary 版)。

Chrome for Testing 的基礎架構為 Chrome 本身帶來許多有趣的機會。舉例來說,我們先前提到尋找相符的 Chrome 和 ChromeDriver 二進位檔,只要將 ChromeDriver 發布程序整合至 Chrome for 測試基礎架構,就可以完全排除這類問題。除瞭解決這個使用者遇到的問題外,這項做法還能讓 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 可用性資訊主頁