赛普拉斯测试失败,因为 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),我花了相当多的时间尝试网上提出的各种修复方法。我已经试过了:
- 增加 dev/shm
的大小
- 升级到最新版本的 drone、drone-agent 和 cypress
- 减少 numTestsKeptInMemory 设置
主要提升的修复,设置 --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
参数。
我们正在为我们的 CI 和 运行 Cypress inside 无人机使用无人机来测试我们的应用程序 (Angular 7)。
所有测试在我的本地机器上都 运行 正常,但在 CI 中测试失败,因为 Chrome 渲染器崩溃了。大约 50% 失败,即使它们真的不长也不复杂(大多数只有 5-10 行)。
我知道这是一个已知问题 (https://github.com/cypress-io/cypress/issues/350),我花了相当多的时间尝试网上提出的各种修复方法。我已经试过了:
- 增加 dev/shm 的大小
- 升级到最新版本的 drone、drone-agent 和 cypress
- 减少 numTestsKeptInMemory 设置
主要提升的修复,设置 --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
参数。