为什么 Angular 应用程序的测试应该使用 Chrome 的 --no-sandbox 选项

Why should tests of an Angular application use the --no-sandbox option of Chrome

提问人:Raedwald 提问时间:4/18/2019 更新时间:10/27/2020 访问量:5882

问:

有关测试 Angular 的信息包括一个示例配置(Karma 和 Protractor),其中它禁用了 Chrome 浏览器的沙盒:

browsers: ['Chrome'],
customLaunchers: {
  ChromeHeadlessCI: {
    base: 'ChromeHeadless',
    flags: ['--no-sandbox']
  }
},

const config = require('./protractor.conf').config;

config.capabilities = {
  browserName: 'chrome',
  chromeOptions: {
    args: ['--headless', '--no-sandbox']
  }
};

exports.config = config;

为什么呢?为什么不让沙盒保持启用状态?这样做有充分的理由吗?测试是否需要正常运行?

Angular Google-Chrome 量角器 Karma-Runner

评论


答:

3赞 Nathaniel C 4/19/2019 #1

我不确定为什么示例代码会禁用沙盒,但就其价值而言,我们将它留在测试套件中,一切都很好。我们过去常常像示例一样指定,但将其删除作为此问题的解决方法,该问题在测试完成后会使孤立的 chrome 进程运行。--no-sandbox

2赞 snowpeak 10/27/2020 #2

这是使用容器进行测试的原因之一。

沙盒 出于安全原因,Google Chrome 无法提供 在基于容器的环境中运行时的沙盒。自 在基于容器的环境中使用 Chrome,传递 --no-sandbox 标记到 Chrome 可执行文件

google-chrome 无法移动到新命名空间