赛普拉斯错误“自动化客户端已断开连接。无法继续运行测试。” 在 Docker 中运行时

Nic*_*las 3 testing end-to-end docker reactjs cypress

在 Docker 容器中运行 Cypress 测试套件时出现以下错误:

自动化客户端已断开连接。无法继续运行测试。

使用此命令,在cypress/browsers:node12.6.0-chrome75容器中运行:

cypress run --browser=chrome

Nic*_*las 5

这似乎是在 shm 空间耗尽时发生的。

默认情况下,Docker 创建一个/dev/shm共享内存空间为 64MB 的容器。这对于 Chrome 来说通常太小,可能会导致 Chrome 崩溃。

我找到了两个选项来解决这个问题:

  1. 禁用以下功能的使用/dev/shm
// cypress/plugins/index.js

module.exports = (on, config) => {
  // ref: https://docs.cypress.io/api/plugins/browser-launch-api.html#Usage
  on('before:browser:launch', (browser = {}, args) => {
    if (browser.name === 'chrome') {
      args.push('--disable-dev-shm-usage')
      return args
    }

    return args
  })
}
Run Code Online (Sandbox Code Playgroud)
  1. /dev/shm增加容器中的大小:

运行容器docker run --shm-size=1gb(或任何你想要的大小)