我的 Angular 应用程序有超过 5000 个测试用例。
在升级到 Angular 13 和 Karma 6.3、Jasmin 3.6 之前一直运行正常
升级后,我在运行“ng test”时收到此错误。
在 960000ms 超时(传输关闭)之前断开连接重新连接失败
这就是我的业力配置之后的样子
const process = require("process");
process.env.CHROME_BIN = require("puppeteer").executablePath();
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular-devkit/build-angular/plugins/karma'),
require('karma-junit-reporter')
],
client: {
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, '../coverage'),
reports: ['html', 'lcovonly','text-summary', 'cobertura'],
fixWebpackSourcePaths: true,
},
reporters: ['progress', 'kjhtml','coverage-istanbul'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
// autoWatch: true,
// browsers: ['ChromeHeadless'],
autoWatch: false,
browsers: ['ChromeHeadlessNoSandbox'],
singleRun: true,
customLaunchers: {
ChromeHeadlessNoSandbox: {
base: 'ChromeHeadless',
flags: [
'--no-sandbox',
'--disable-gpu',
'--js-flags=--max-old-space-size=80196',
'--disable-web-security'
],
},
},
browserNoActivityTimeout: 960000,
browserDisconnectTimeout: 960000,
proxies: {
'/assets/': '/base/src/assets/',
},
});
};
以及 package.json 的一部分
"jasmine-core": "~3.6.0",
"jasmine-spec-reporter": "~5.0.0",
"karma": "^6.3.13",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "^2.0.6",
"karma-jasmine": "~4.0.0",
我尝试了几乎所有的github和stackoverflow以及其他建议,与许多专家交谈过,但没有成功。
经过更多阅读后,这就是我解决问题的方法。
我确保所有测试包的版本都正确更新并且彼此兼容。
这就是现在的样子,
"jasmine-core": "4.0.1",
"jasmine-spec-reporter": "7.0.0",
"karma": "6.3.17",
"karma-chrome-launcher": "3.1.1",
"karma-coverage-istanbul-reporter": "3.0.3",
"karma-jasmine": "4.0.2"
此后,我能够运行所有测试用例。
您还可以在 karma.conf.js 中输入 concurrency: 5
module.exports = function (config) {
config.set({
// other settings...
concurrency: 5, // allow up to 5 browser instances in parallel
// other settings...
});
};
可以更改并发值来控制测试期间可以并行运行的浏览器实例的数量