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

Rae*_*ald 5 google-chrome karma-runner protractor angular

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

browsers: ['Chrome'],
customLaunchers: {
  ChromeHeadlessCI: {
    base: 'ChromeHeadless',
    flags: ['--no-sandbox']
  }
},
Run Code Online (Sandbox Code Playgroud)

和

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

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

exports.config = config;
Run Code Online (Sandbox Code Playgroud)

但为什么?为什么不启用沙箱?这样做有充分的理由吗?测试是否有必要正常运行?

Shi*_*gGo 2

如果您使用容器进行测试,这是原因之一。

沙箱出于安全原因,Google Chrome 在基于容器的环境中运行时无法提供沙箱。要在基于容器的环境中使用 Chrome,请将 --no-sandbox 标志传递给 chrome 可执行文件

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