每次我重新运行 Karma 时,它都会打开一个新的 Chrome 窗口,尽管屏幕上已经有一个并且其中的 URL 相同。
如何让 Karma runner 重用浏览器窗口以及是否打开了适当的选项卡 - 重用此选项卡?
每次我重新运行 Karma 时,它都会打开一个新的 Chrome 窗口,尽管屏幕上已经有一个并且其中的 URL 相同。
如何让 Karma runner 重用浏览器窗口以及是否打开了适当的选项卡 - 重用此选项卡?
在配置中,设置
browsers = [];
我来到这里,同时在不同的背景下寻找相同的问题。
在运行测试时,有些情况下 Karma 会立即打开 2 个选项卡,因此所有测试都运行两次。通常这不应该是一个问题,但在我们的例子中,这会导致一些意外的延迟和零星的故障。
事实上,为了防止这种不需要的行为,应该在 Karma 配置中添加以下内容:
restartOnFileChange: true
根据 Karma 的规范,这迫使跑步者停止当前执行并开始新的执行,从而有效地重用相同的当前选项卡。
默认行为 ,restartOnFileChange: false
导致在当前执行继续运行时开始新的执行,从而有效地产生 2 个同时运行的选项卡。
在 config.set({...}) 块中添加以下行:
restartOnFileChange: false,
这是一个保证。
使用该行,每当您保存文件/文件时,浏览器都会自动REFRESH本身而不是重新打开.
以防万一,下面是我完整的 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')
],
client: {
jasmine: {
random: false
},
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, 'coverage'),
reports: ['html', 'lcovonly', 'text-summary'],
fixWebpackSourcePaths: true
},
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
restartOnFileChange: false,
});
};
在块中,我自己添加了以下内容:
jasmine: {
random: false
},
这使您的“it”块按照与您的规范文件中相同的顺序显示;
和
restartOnFileChange: false,
谁的功能是你想要的,我已经在上面提到过。
您可以在项目的 src/coverage/index.html 中打开代码覆盖率文件。
注意:有时 chrome 在您保存文件后不会自动刷新。您只需手动刷新它,整个测试就会重新开始。很简单。