Cypress 测试失败,因为 Chrome Renderer 在 CI 中崩溃(使用无人机)

tom*_*ler 5 google-chrome drone angular cypress

我们将无人机用于 CI 并在无人机内运行 Cypress 来测试我们的应用程序(Angular 7)。

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

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

  • 增加 dev/shm 的大小
  • 升级到最新版本的无人机、无人机代理和柏树
  • 减少 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(Chrome 任务管理器说页面消耗大约 50-80mb),所以也许我们的问题实际上是其他问题?

如果我在这里遗漏了一些东西,任何人都可以提供更多提示吗?

tom*_*ler 5

我们能够通过/dev/shm完全禁用 Chrome 的使用来解决这个问题,方法是将它添加到我们的plugins/index.js-file 中。

从赛普拉斯第 4 版语法开始:

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

  return launchOptions
})

Run Code Online (Sandbox Code Playgroud)

直到 Cypress 版本 3 语法:

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

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