今天,我们很高兴地宣布推出 Chrome for Testing,这是一款专门针对 Web 应用测试和自动化用例的新 Chrome 版本。本文将说明 Chrome 团队为何认为有必要推出 Chrome 测试版,并提供具体示例,说明 Chrome 测试版如何让您(开发者)受益。
背景
无论是手动还是自动进行浏览器测试,都是打造优质网络体验的重要组成部分。与此同时,设置合适的浏览器测试环境非常困难,以至于它一直被报告为 Web 开发者的主要痛点。今天,我们宣布了一项变更,希望能缓解上述部分痛点。
自动更新:对用户来说很棒,但对开发者来说很痛苦
Chrome 最显著的特点之一是能够自动更新。用户很高兴知道自己始终在运行最新且安全的浏览器版本,其中包含最新的 Web 平台功能、浏览器功能和 bug 修复。
不过,作为运行一套端到端测试的开发者,您可能会有完全不同的看法:
- 您希望在多次测试运行中获得一致且可重现的结果,但如果浏览器可执行文件或二进制文件决定在两次运行之间自行更新,则可能无法实现这一点。
- 您希望固定特定浏览器版本,并将该版本号签入源代码库,以便您签出旧提交和分支,并针对当时浏览器二进制文件重新运行测试。
如果浏览器二进制文件会自动更新,则无法实现上述任何操作。因此,您可能不想将常规 Chrome 安装用于自动化测试。这是常规浏览器用户与进行自动化测试的开发者之间的根本性不匹配。
已纳入版本控制的浏览器二进制文件
除了自动更新之外,您可能还发现很难找到特定版本的 Chrome 二进制文件。Google 有意不提供 Chrome 的版本化下载,因为用户无需关心版本号,而应尽快更新到最新版本。这对用户来说是好事,但对于需要重现旧版 Chrome 中的 bug 报告的开发者来说却很麻烦。
此问题的一个更具体的示例是,当您想使用 ChromeDriver 进行浏览器自动化时。您不仅需要以某种方式下载 Chrome 二进制文件,还需要下载相应版本的 ChromeDriver 二进制文件,以确保这两个二进制文件兼容。
由于没有好的方法来解决这些问题,我们知道许多开发者会下载 Chromium(而非 Chrome)二进制文件,尽管这种方法存在一些缺陷。首先,这些 Chromium 二进制文件并非在所有平台上都可靠可用。其次,它们是独立于 Chrome 发布流程构建和发布的,因此无法将其版本映射回面向用户的实际 Chrome 版本。第三,Chromium 与 Chrome 不同。
解决方案:Chrome for Testing
Chrome for Testing 旨在解决这些问题,是专门针对测试用例的 Chrome 版本,不会自动更新,已集成到 Chrome 发布流程中,适用于每个 Chrome 版本。一种版本化的二进制文件,尽可能接近常规 Chrome,但不会对测试用例产生负面影响。
为了创建 Chrome 测试版,我们对 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
如果您更喜欢自行构建用于下载这些二进制文件的自动化脚本,我们也能满足您的需求。我们提供 JSON API 端点,其中包含每个 Chrome 发布渠道(稳定版、Beta 版、开发者版、Canary 版)的最新可用版本。如需快速了解最新状态,请参阅 Chrome for Testing 可用性信息中心。
