Chrome for Testing

Mathias Bynens
Mathias Bynens

Chrome for Testing 是一种专门针对 Web 应用测试和自动化应用场景的 Chrome 版本。本文档介绍了 Chrome 团队认为需要此功能的理由,并提供了具体示例,说明了 Chrome for Testing 如何让开发者受益。

背景

无论是手动还是自动进行浏览器测试,都是打造优质网络体验的重要组成部分。与此同时,设置合适的浏览器测试环境非常困难,以至于一直 被报告为 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 for Testing 徽标,即常规 Chrome 徽标,其中包含一个黑色矩形,矩形内有“Test”字样。

为了创建 Chrome for Testing,我们对 Chromium 和 Chrome 代码库进行了更改,并设置了相应的基础设施,以便在所有渠道(稳定版、Beta 版、开发者版和 Canary 版)中,与 Chrome 发布流程同步构建这些二进制文件并将其上传到公开可用的存储分区。

围绕 Chrome for Testing 构建的基础设施可带来 Chrome 本身之外的有趣机遇。例如,通过将 ChromeDriver 发布流程集成到 Chrome for Testing 基础架构中,可以完全消除之前提到的查找匹配的 Chrome 和 ChromeDriver 二进制文件时遇到的困难。除了解决这个面向用户的痛点之外,此举还可使 ChromeDriver 版本与 Chrome 版本保持一致,并省去手动发布 ChromeDriver 的流程。