我使用Karma
,Sinon
和Mocha
进行了一些单元测试。运行良好,有一个月的时间,我在运行这些单元测试时遇到了一些问题。我的HeadlessChrome错误。确实,它显示了此错误:
HeadlessChrome 83.0.4103 (Windows 10.0.0) ERROR
Disconnected, because no message in 30000 ms.
我有以下业力配置:
module.exports = function (config) {
config.set({
// Others configs
...
port: 9876,
browsers: ['ChromeHeadlessNoSandbox'],
customLaunchers: {
ChromeHeadlessNoSandbox: {
base: 'ChromeHeadless',
flags: [
'--no-sandbox', // required to run without privileges in docker
'--user-data-dir=/tmp/chrome-test-profile',
'--disable-web-security'
]
}
},
captureTimeout: 10000,
plugins: [
'karma-mocha', 'karma-mocha-reporter', 'karma-junit-reporter', 'karma-chrome-launcher',
'karma-typescript', 'karma-html-reporter'
]
});
};
我发现了两种修复方法:
module.exports = function (config) {
config.set({
// Others configs
...
port: 9876,
browsers: ['Chrome'],
flags: [
'--no-sandbox', // required to run without privileges in docker
'--user-data-dir=/tmp/chrome-test-profile',
'--disable-web-security'
],
captureTimeout: 10000,
plugins: [
'karma-mocha', 'karma-mocha-reporter', 'karma-junit-reporter', 'karma-chrome-launcher',
'karma-typescript', 'karma-html-reporter'
]
});
};
如何再次使用ChromeHeadless?确实,这很不错,因为所有单元测试都在后台运行,而现在它打开浏览器,执行测试并关闭它。
答案 0 :(得分:2)
我们对我的工作也感到惊讶。我们的测试从6月底开始失败,该测试是Chrome 83的新稳定版本。
他们肯定破坏了某些东西,您可以在这里继续:https://bugs.chromium.org/p/chromium/issues/detail?id=1090988
编辑:
因此,为了正确回答,如果您可以返回到Chrome 83之前的版本,那么现在可以修复它。但是,我不知道这件事,我需要找到一个新的docker镜像,这不好。
答案 1 :(得分:0)
我已经检查了问题,我们可以改用puppeteer
的Chrome容器来解决此问题!
查看https://github.com/karma-runner/karma-chrome-launcher#headless-chromium-with-puppeteer的方法!
那样,我们依靠Chrome的开发团队提供的更稳定的功能。
请注意,这样做npm install
会在每个人的计算机上安装一个新的Chrome二进制文件,但同时还要确保每个测试都针对同一版本。