Angular 8 - Headless Chrome 运行 两次,第二次失败
Angular 8 - Headless Chrome running twice and failing second time
本地我的测试用例运行宁 Chrome,没问题。我想 运行 我的构建服务器 (Microsoft Azure) 上的测试用例。
在我的服务器构建中,测试用例 运行ning 两次。我只想 运行 他们一次。
我将配置作为 HeadlessChrome 传递。这些是我的配置。
在package.json文件中,
"test": "ng test --code-coverage --watch=false --browsers ChromeHeadless",
我的karma.conf.js文件,
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
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')
],
// customLaunchers: {
// 'ChromeHeadless_Sandbox': {
// base: 'ChromeHeadless',
// flags: [
// '--no-sandbox',
// ],
// debug: true
// },
// },
client:{
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, 'coverage'), reports: [ 'html', 'lcovonly' ],
fixWebpackSourcePaths: true
},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
browsers: ['ChromeHeadless'],
autoWatch: false,
concurrency: Infinity,
singleRun: true, // Karma captures browsers, runs the tests and exits
});
};
错误:
共有131个测试用例。 8 个被跳过,剩下的正确通过。它 运行 是第二次,但没有用。服务器将所有测试用例显示为失败。
我一直在探索 Whosebug 和 Github 上类似问题的所有答案,但测试用例仍然 运行ning 两次。两次都是 运行ning for HeadlessChrome 这很好,但它应该 运行 一次然后退出。
PS - 还有一些我正在测试和尝试不同方法的注释代码。
请帮忙。我哪里做错了?我怎样才能使测试用例 运行ning 只做一次?
我找到了解决方案。
问题是 angular.json 文件中的多个项目。
我在 angular.json 的“项目”中提到了三个项目。一个是我的应用程序,另一个是“app-e2e”,第三个是外部项目。当你 运行 Karma 时,它 运行 是所有三个项目中的测试用例文件。
对于最后一个外部项目,有 karma 配置但没有测试用例,这就是它失败的原因。
对于我来说,这第三个项目不需要,所以我把它从angular.json中删除并删除,然后Karma测试用例运行成功。
本地我的测试用例运行宁 Chrome,没问题。我想 运行 我的构建服务器 (Microsoft Azure) 上的测试用例。
在我的服务器构建中,测试用例 运行ning 两次。我只想 运行 他们一次。
我将配置作为 HeadlessChrome 传递。这些是我的配置。
在package.json文件中,
"test": "ng test --code-coverage --watch=false --browsers ChromeHeadless",
我的karma.conf.js文件,
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
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')
],
// customLaunchers: {
// 'ChromeHeadless_Sandbox': {
// base: 'ChromeHeadless',
// flags: [
// '--no-sandbox',
// ],
// debug: true
// },
// },
client:{
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, 'coverage'), reports: [ 'html', 'lcovonly' ],
fixWebpackSourcePaths: true
},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
browsers: ['ChromeHeadless'],
autoWatch: false,
concurrency: Infinity,
singleRun: true, // Karma captures browsers, runs the tests and exits
});
};
错误:
共有131个测试用例。 8 个被跳过,剩下的正确通过。它 运行 是第二次,但没有用。服务器将所有测试用例显示为失败。
我一直在探索 Whosebug 和 Github 上类似问题的所有答案,但测试用例仍然 运行ning 两次。两次都是 运行ning for HeadlessChrome 这很好,但它应该 运行 一次然后退出。
PS - 还有一些我正在测试和尝试不同方法的注释代码。
请帮忙。我哪里做错了?我怎样才能使测试用例 运行ning 只做一次?
我找到了解决方案。
问题是 angular.json 文件中的多个项目。
我在 angular.json 的“项目”中提到了三个项目。一个是我的应用程序,另一个是“app-e2e”,第三个是外部项目。当你 运行 Karma 时,它 运行 是所有三个项目中的测试用例文件。
对于最后一个外部项目,有 karma 配置但没有测试用例,这就是它失败的原因。
对于我来说,这第三个项目不需要,所以我把它从angular.json中删除并删除,然后Karma测试用例运行成功。