赛普拉斯测试失败,因为 Chrome 渲染器在 CI 中崩溃(使用无人机)

Cypress tests failing because Chrome Renderer is crashing in CI (using drone)

我们正在为我们的 CI 和 运行 Cypress inside 无人机使用无人机来测试我们的应用程序 (Angular 7)。

所有测试在我的本地机器上都 运行 正常,但在 CI 中测试失败,因为 Chrome 渲染器崩溃了。大约 50% 失败,即使它们真的不长也不复杂(大多数只有 5-10 行)。

我知道这是一个已知问题 (https://github.com/cypress-io/cypress/issues/350),我花了相当多的时间尝试网上提出的各种修复方法。我已经试过了:

主要提升的修复,设置 --ipc=host 目前不适用于无人机 (https://discourse.drone.io/t/does-drone-support-ipc-host-option/1049)。

我实际上有点困惑,因为原始票证明确指出 When running headlessly on very long and memory intense applications we are seeing renderer crashes with Docker. 我很确定我们的应用程序既不符合 very long 也不符合 memory intense (页面消耗大约 50 -80mb 表示 Chrome 任务管理器),所以也许我们的问题实际上是其他问题?

如果我在这里遗漏了什么,谁能给我更多提示?

我们可以通过完全禁用 Chrome 对 /dev/shm 的使用来解决这个问题,方法是将其添加到我们的 plugins/index.js 文件中。

来自 Cypress 版本 4 语法:

on('before:browser:launch', (browser, launchOptions) => {
  if (browser.name === 'chrome') {
    launchOptions.args.push('--disable-dev-shm-usage')
  }

  return launchOptions
})

直到 Cypress 版本 3 语法:

on('before:browser:launch', (browser = {}, args) => {
  if (browser.name === 'chrome') {
    args.push('--disable-dev-shm-usage')
  }
  return args
})

来源:https://github.com/cypress-io/cypress/issues/350#issuecomment-574072211

如果您的 CI 环境是 运行 赛普拉斯测试运行器和 docker 图像中的浏览器,您可以指定 --ipc=host 参数以使用主机系统的IPC 命名空间。

检查您的 CI 环境的具体细节,了解如何在 运行 您的图像时包含此参数。

这是在 Cypress 上跟踪的一个已知问题 Github 问题作为工单 #350: https://github.com/cypress-io/cypress/issues/350


很遗憾,目前不支持从 Drone 设置 --ipc=host 参数。