Search code examples
angularjskarma-runnerkarma-jasminekarma-coverage

Karma-coverage always giving 404 not found response


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.


Solution

  • 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/'
            }
    
        });
    };