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 的發布程序分開建構與發布,因此無法將版本對應至使用者實際使用的 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 之外的有趣機會。舉例來說,我們先前提到尋找相符的 Chrome 和 ChromeDriver 二進位檔,便可藉由將 Chrome 雲端硬碟發布程序整合至 Chrome for Testing 基礎架構而完全消除。除瞭解決這個面向使用者的問題之外,這也讓 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 可用性資訊主頁