Chrome for Testing:可靠下载,实现浏览器自动化

Mathias Bynens
Mathias Bynens

今天,我们非常高兴地宣布推出 Chrome for Testing,这一全新 Chrome 版本专门针对 Web 应用测试和自动化用例而设计。本文将解释 Chrome 团队认为有必要实现这一点的原因,并详细举例说明 Chrome for Testing 可令开发者受益的具体示例。

背景

无论是手动测试还是自动测试,浏览器测试都是打造优质网络体验的重要一环。同时,设置完善的浏览器测试环境也是众所周知的困难,以至于一直 报告为 Web 开发者的顶级痛点。今天,我们宣布一项改进,希望能够缓解部分客户痛苦。

自动更新:对用户有益,对开发者来说很麻烦

Chrome 最引人注目的功能之一是自动更新。用户非常高兴地知道自己运行的是最新且安全的浏览器版本,该版本包含最新的 Web 平台功能、浏览器功能,并随时都能修复问题。

但是,作为运行一系列端到端测试的开发者,您可能会有完全不同的视角:

  • 您希望在重复的测试运行期间获得一致且可重现的结果,但如果浏览器可执行文件或二进制文件决定在两次运行之间自行更新,这种情况可能不会发生。
  • 您希望将特定的浏览器版本固定并检查该版本号,以便从该时间点签出旧的提交和分支,并针对浏览器二进制文件重新运行测试。

如果使用自动更新的浏览器二进制文件,这一切都无法实现。因此,您可能不想使用常规的 Chrome 安装进行自动化测试。这正是对常规浏览器用户有益与有益于进行自动化测试的开发者的根本不匹配。

有版本控制的浏览器二进制文件

除了自动更新之外,您也可能发现很难找到特定版本的 Chrome 二进制文件。Google 有意不提供有版本控制的 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

如果您希望构建自己的自动化脚本来下载这些二进制文件,我们也为您提供了相应的帮助。我们会提供 JSON API 端点,其中包含每个 Chrome 发布渠道(稳定版、Beta 版、开发者版、Canary 版)的最新可用版本。要快速了解最新状态,请访问 Chrome for Testing 可用性信息中心