小编All*_*oon的帖子

运行无头 Chromium 浏览器会引发错误“无法读取 DnsConfig”(在 Docker 容器内)

我的目标:
使用 Karma/Jasmine 在我的 Angular 6 应用程序(在 Docker 容器内运行)上运行单元测试。为了运行这些测试,我似乎需要一个网络浏览器。所以看起来 Chromium headless 是一个不错的选择。我已经通过我的 Dockerfile 将它与一堆其他库一起安装了,但是在 Docker 容器内运行我的测试失败(在它之外运行测试工作正常)。

错误:

23 02 2019 04:28:08.884:ERROR [launcher]: ChromiumHeadless stdout: 
23 02 2019 04:28:08.884:ERROR [launcher]: ChromiumHeadless stderr: [0223/042808.557529:WARNING:dns_config_service_posix.cc(326)] Failed to read DnsConfig.
[0223/042808.591436:FATAL:udev_loader.cc(38)] Check failed: false.
Run Code Online (Sandbox Code Playgroud)

实际上打开浏览器(http://localhost:9876/)然后运行测试仍然会导致无头失败,但测试会显示在浏览器中。很高兴看到这些测试,但如果我希望这些单元测试最终作为 CI 或其他东西的一部分运行,那么帮助不大。

我的猜测是我实际上可能不需要 DNS 工作(它确实从 stderr 输出中说警告),但我不确定如何禁用它。

以下是 Karma 测试运行程序中的当前浏览器配置:

browsers: ['ChromeHeadlessCustom'],
customLaunchers: {
  ChromeHeadlessCustom: {
    base: 'ChromiumHeadless',
    flags: [
      '--no-sandbox',
      '--allow-insecure-localhost',
      '--homepage=about:blank',
      '--no-first-run',
      '--headless',
      '--disable-software-rasterizer',
      '--disable-gpu',
      '--disable-translate',
      '--disable-extensions',
      '--disable-setuid-sandbox',
      '--remote-debugging-port=9876'
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

唯一重要的标志是headless和 …

chromium docker karma-jasmine angular

6
推荐指数
1
解决办法
6043
查看次数

标签 统计

angular ×1

chromium ×1

docker ×1

karma-jasmine ×1