关于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;
但是为什么?为什么不让沙箱保持启用状态?有充分的理由这样做吗?测试是否必须正常运行?
答案 0 :(得分:2)
我不确定示例代码为何禁用沙箱,但是对于它的价值,我们将其保留在测试套件中,一切都很好。我们曾经像示例一样指定--no-sandbox
,但是将其删除作为this issue的解决方法,该方法使孤立的chrome进程在测试完成后仍在运行。
答案 1 :(得分:1)
这是使用容器进行测试的原因之一。
Sandboxing出于安全原因,Google Chrome无法提供 沙箱在基于容器的环境中运行时。至 在基于容器的环境中使用Chrome,并通过--no-sandbox 标记为chrome可执行文件