今天很高興在此宣布推出 Chrome for Testing,這是專為網頁應用程式測試和自動化用途設計的全新 Chrome 版本。本文將說明 Chrome 團隊認為有必要推出這項工具的原因,並透過具體範例,說明 Chrome 測試版如何協助開發人員。
背景
無論是手動或自動進行,瀏覽器測試都是打造優質網路體驗的重要環節。同時,設定適當的瀏覽器測試環境非常困難,因此經常 回報為網頁開發人員最頭痛的問題。為此,我們今天宣布一項異動,希望有助於減輕這類困擾。
自動更新:對使用者來說很方便,但對開發人員來說很麻煩
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 程式碼集,並設定基礎架構,以便在所有管道 (穩定版、Beta 版、開發人員版和 Canary 版) 的 Chrome 發布程序中,同步建構這些二進位檔並上傳至公開可用的值區。
Chrome for Testing 的基礎架構不僅適用於 Chrome,還能帶來許多有趣的機會。舉例來說,我們先前提到,要找到相符的 Chrome 和 ChromeDriver 二進位檔有困難,但將 ChromeDriver 發布程序整合到 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
如果您想自行建構自動化指令碼來下載這些二進位檔,我們也提供相關資源。我們提供 JSON API 端點,其中包含各 Chrome 發布版本 (穩定版、Beta 版、開發人員版、Canary 版) 的最新可用版本。如要快速瞭解最新狀態,請參閱 Chrome for Testing 可用性資訊主頁。