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

时间:2019-04-18 14:43:51

标签: angular google-chrome protractor karma-runner

关于testing 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;

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

2 个答案:

答案 0 :(得分:2)

我不确定示例代码为何禁用沙箱,但是对于它的价值,我们将其保留在测试套件中,一切都很好。我们曾经像示例一样指定--no-sandbox,但是将其删除作为this issue的解决方法,该方法使孤立的chrome进程在测试完成后仍在运行。

答案 1 :(得分:1)

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

Sandboxing出于安全原因,Google Chrome无法提供 沙箱在基于容器的环境中运行时。至 在基于容器的环境中使用Chrome,并通过--no-sandbox 标记为chrome可执行文件

google-chrome Failed to move to new namespace