HeadlessChrome 与 Chrome 83 与 Karma 断开连接

Pie*_*BJX 7 headless-browser karma-runner google-chrome-headless

Karma我使用、Sinon和执行一些单元测试Mocha。它运行良好,一个月来,我在运行这些单元测试时遇到了一些问题。我的 HeadlessChrome 出现错误。事实上,它显示了这个错误:

HeadlessChrome 83.0.4103 (Windows 10.0.0) ERROR
Disconnected, because no message in 30000 ms.
Run Code Online (Sandbox Code Playgroud)

我有这个业力配置:

module.exports = function (config) {
  config.set({
    // Others configs
    ...
    port: 9876,
    browsers: ['ChromeHeadlessNoSandbox'],
    customLaunchers: {
      ChromeHeadlessNoSandbox: {
        base: 'ChromeHeadless',
        flags: [
          '--no-sandbox', // required to run without privileges in docker
          '--user-data-dir=/tmp/chrome-test-profile',
          '--disable-web-security'
        ]
      }
    },
    captureTimeout: 10000,
    plugins: [
      'karma-mocha', 'karma-mocha-reporter', 'karma-junit-reporter', 'karma-chrome-launcher',
      'karma-typescript', 'karma-html-reporter'
    ]
  });
};

Run Code Online (Sandbox Code Playgroud)

我找到了两种方法来修复它:

  • 降级到版本 81。
  • 在浏览器中打开 localhost:9876 中的页面。
  • 更改 karma 配置(浏览器和标志属性):
module.exports = function (config) {
  config.set({
    // Others configs
    ...
    port: 9876,
    browsers: ['Chrome'],
    flags: [
      '--no-sandbox', // required to run without privileges in docker
      '--user-data-dir=/tmp/chrome-test-profile',
      '--disable-web-security'
    ],
    captureTimeout: 10000,
    plugins: [
      'karma-mocha', 'karma-mocha-reporter', 'karma-junit-reporter', 'karma-chrome-launcher',
      'karma-typescript', 'karma-html-reporter'
    ]
  });
};
Run Code Online (Sandbox Code Playgroud)

我怎样才能再次使用 ChromeHeadless ?事实上,这很好,因为所有单元测试都在后台运行,而现在它打开浏览器,执行测试并关闭它。

小智 3

我们对我的工作也有同样的惊讶。我们的测试从 6 月底开始失败,当时是新的 Chrome 83 稳定版本。

他们肯定破坏了一些东西,您可以在这里跟进:https://bugs.chromium.org/p/chromium/issues/detail ?id=1090988

编辑:

因此,为了正确回答,如果您可以返回到 Chrome 83 之前的版本,那么现在就可以解决这个问题。但是,我不知道我们这边的情况,我需要找到一个新的 docker 镜像,这不太好。