I'm trying to make some unit-tests for my angular SPA. I made some with Karma, and they work pretty well, but then i decided to install karma-coverage to see tests coverage. And i already waste a lot of time trying to see this report. I installed karma-coverage and now my package.json looks like:
"dependencies": {
"angular-mocks": "^1.5.6",
"jasmine-core": "^2.4.1",
"karma": "^0.13.22",
"karma-chrome-launcher": "^1.0.1",
"karma-coverage": "^1.0.0",
"karma-firefox-launcher": "^1.0.0",
"karma-jasmine": "^1.0.2",
"karma-ng-html2js-preprocessor": "^1.0.0"
}
Note: I've already tried different karma and karma-coverage, but result was the same. My karma.conf.js
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'bower_components/angular/angular.js',
'bower_components/angular-resource/angular-resource.js',
'bower_components/angular-route/angular-route.js',
'bower_components/angular-sanitize/angular-sanitize.js',
'node_modules/angular-mocks/angular-mocks.js',
'**/*.module.js',
'**/**/*.module.js',
'*!(.module|.spec).js',
'!(bower_components|node_modules)/**/*!(.module|.spec).js',
'**/**/*.spec.js',
'**/*.html'
],
exclude: [
],
preprocessors: {
'**/*.js': ['coverage'],
'**/*.html': ['ng-html2js']
},
coverageReporter:{
type:'html',
dir:'coverage/'
},
reporters: ['progress', 'coverage'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['Chrome'],
singleRun: false,
concurrency: Infinity
})
};
Note: I've tried, different preprocessors settings, different coverageReporter settings.
But result is always the same: i trying to open http://localhost:9876/coverage/ or http://localhost:9876/coverage/index.html and getting 404 not found. I even tried to change dir property on C:/Dev/coverage/ but directory wasn't created. Karma tests running correct, but i cannot get coverage report.
After several more hours i fixed it. Don't actually know it works, but it seems, that i should set true autoWatch. Here is my karma.conf.js
//jshint strict: false
module.exports = function(config) {
config.set({
basePath: './',
files: [
'bower_components/angular/angular.js',
'bower_components/angular-resource/angular-resource.js',
'bower_components/angular-route/angular-route.js',
'bower_components/angular-sanitize/angular-sanitize.js',
'node_modules/angular-mocks/angular-mocks.js',
'bower_components/jquery/dist/jquery.min.js',
'**/*.module.js',
'**/**/*.module.js',
'*!(.module|.spec).js',
'!(bower_components|node_modules)/**/*!(.module|.spec).js',
'**/**/*.spec.js',
'**/*.html'
],
autoWatch: true,
frameworks: ['jasmine'],
browsers: ['Chrome'],
plugins: [
'karma-chrome-launcher',
'karma-jasmine',
'karma-coverage',
'karma-ng-html2js-preprocessor'
],
reporters: ['progress', 'coverage'],
preprocessors: {
'**/*.html': ['ng-html2js'],
'!(bower_components|node_modules)/**/!(*spec).js': ['coverage']
},
coverageReporter: {
type : 'html',
dir : 'coverage/'
}
});
};