[2023/10/19] Mac M1 安装 Chrome for Testing

1,263 阅读4分钟

背景

浏览器测试是创建高质量 Web 体验的重要组成部分,无论是手动还是自动完成。与此同时,建立一个足够的浏览器测试环境是出了名的困难,以至于它一直被 认为是 Web 开发人员的首要痛点。今天,我们宣布一项改变,希望能减轻一些痛苦。

自动更新:对用户来说很好,但对开发者来说却很痛苦

Chrome 最显着的功能之一是它的自动更新能力。用户很高兴知道他们正在运行最新且安全的浏览器版本,包括现代 Web 平台功能、浏览器功能和始终错误修复。

然而,作为运行一套端到端测试的开发人员,您可能会有完全不同的观点:

  • 您希望在重复的测试运行中获得一致、可重现的结果,但如果浏览器可执行文件或二进制文件决定在两次运行之间更新自身,则可能不会发生这种情况。
  • 您想要固定特定的浏览器版本并将该版本号检查到源代码存储库中,以便您可以检查旧的提交和分支,并从该时间点开始针对浏览器二进制文件重新运行测试。

对于自动更新的浏览器二进制文件来说,这一切都是不可能的。因此,您可能不想使用常规的 Chrome 安装进行自动化测试。这是对普通浏览器用户有利的内容与对进行自动化测试的开发人员有利的内容之间的根本不匹配。

版本化的浏览器二进制文件

除了自动更新之外,您可能还发现很难找到具有特定版本的 Chrome 二进制文件。Google 故意不提供版本控制的 Chrome 下载,因为用户不必关心版本号,他们应该尽快更新到最新版本。这对于用户来说非常有用,但对于需要在旧版 Chrome 版本中重现错误报告的开发人员来说却很痛苦。

此问题的一个更具体的示例是当您想要使用 ChromeDriver 进行浏览器自动化时。您不仅需要以某种方式下载 Chrome 二进制文件,还需要相应版本的 ChromeDriver 二进制文件以确保这两个二进制文件兼容。

由于没有好的方法来解决这些问题,我们知道许多开发人员转而下载Chromium(而不是 Chrome)二进制文件,尽管这种方法存在一些缺陷。首先,这些 Chromium 二进制文件并非在所有平台上都可靠可用。其次,它们是与 Chrome 发布流程分开构建和发布的,因此无法将其版本映射回真正面向用户的 Chrome 版本。第三,Chromium与Chrome不同。

解决方案:Chrome 用于测试

Chrome for Test 旨在解决这些问题,是专门针对测试用例的 Chrome 风格,无需自动更新,集成到 Chrome 发布流程中,适用于每个 Chrome 版本。版本控制的二进制文件尽可能接近常规 Chrome,不会对测试用例产生负面影响。

为了创建用于测试的 Chrome,我们对 Chromium 和 Chrome 代码库进行了更改,并设置了基础设施来构建这些二进制文件并将其上传到公开可用的存储桶,与所有渠道(稳定版、测试版、开发版和开发版)的 Chrome 发布流程保持同步。金丝雀)。

Chrome 测试周围的基础设施释放了 Chrome 本身以外的有趣机会。例如,我们之前提到的寻找匹配的 Chrome 和ChromeDriver二进制文件的困难可以通过将 ChromeDriver 发布流程集成到 Chrome 测试基础设施中来完全消除。除了解决这个面向用户的痛点之外,这还使 ChromeDriver 版本与 Chrome 保持一致,并消除了手动 ChromeDriver 发布过程。

重点

Chrome for Testing 版本下载链接:Chrome for Testing

电脑信息:MacBook Pro (13-inch, M1, 2020)芯片 M1

下载成功后进入对应目录执行语句如下(path 为对应电脑的路径):

sudo xattr -cr /path/ctf/Google Chrome for Testing.app

binary_location:

"path/ctf/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing"

相关提示

if browser_name == 'chrome':
    options.binary_location = dir_config.binary_location
    driver = driver_class(options=options)
    return driver