Simon Lomax
Simon Lomax

Reputation: 8972

Karma coverage always shows 100%

My karma.conf.js files looks like this :

// Karma configuration
// Generated on Tue Jun 11 2013 14:14:12 GMT+0100 (GMT Daylight Time)


// base path, that will be used to resolve files and exclude
basePath = '';


// list of files / patterns to load in the browser
files = [
    JASMINE,
    JASMINE_ADAPTER,
    '../Scripts/angular/angular.js',
    '../Scripts/angular/restangular/underscore-min.js',
    '../Scripts/angular/restangular/restangular-min.js',
    '../Scripts/angular/angular-*.js',
    '../Scripts/angular/angular-test/angular-*.js',
    '../Scripts/angular/angular-ui/*.js',
    '../Scripts/angular/angular-strap/*.js',
    '../Scripts/angular/angular-http-auth/*.js',
    '../uifw/scripts/ui-framework-angular.js',
    '../app/app.js',
    '../app/**/*.js',
    'unit/**/*.js'
];


// list of files to exclude
exclude = [
  '../Scripts/angular/angular-test/angular-scenario.js'
];

preprocessors = {
  '**/../app/**/*.js': 'coverage'
};



coverageReporter = {
    type: 'html',
    dir: 'coverage/'
};


// test results reporter to use
// possible values: 'dots', 'progress', 'junit'
reporters = ['progress', 'coverage'];


// web server port
port = 9876;


// cli runner port
runnerPort = 9100;


// enable / disable colors in the output (reporters and logs)
colors = true;


// level of logging
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
logLevel = LOG_DEBUG;


// enable / disable watching file and executing tests whenever any file changes
autoWatch = true;


// Start these browsers, currently available:
// - Chrome
// - ChromeCanary
// - Firefox
// - Opera
// - Safari (only Mac)
// - PhantomJS
// - IE (only Windows)
browsers = ['Chrome'];


// If browser does not capture in given timeout [ms], kill it
captureTimeout = 60000;


// Continuous Integration mode
// if true, it capture browsers, run tests and exit
singleRun = false;

My folder structure looks like this :

Root
 |__ App
 |__ Scripts
 |__ Tests
 |__ .... other folders

Karma.conf.js is located inside the tests folder. Karma start karma.conf.j is run from within the tests folder.

My tests run and a coverage folder is created, but coverage always shows 100%.

Coverage

What am I doing wrong?

EDIT:

In fact it turned out to be a simple answer. the preprocessors = { '**/../app/**/*.js': 'coverage' }; no longer needs to be prefixed with **

See this for more details

Upvotes: 5

Views: 3137

Answers (3)

Megamind
Megamind

Reputation: 161

Set up webpack with istanbul-instrumenter-loader got me on the right track. { test: /\.ts/, include: helpers.root('src', 'app'), loader: 'istanbul-instrumenter-loader', enforce: 'post' }

Upvotes: 2

Metareven
Metareven

Reputation: 842

To me it seems like your problem is that you are unable to find any of the files you are trying to generate coverage for. Your report does say that 0/0 lines are ran, 0/0 statements and so on.

I had a similar problem that was caused by me using lower case letters instead of upper case ones and it seems you might have the same problem as you have a folder named "App" but you reference it with "app" in the config. See if you can get it to work by writing **/../App/**/*.js': 'coverage'

Also I am not sure but I think you should write ../App/**/*.js': 'coverage' instead of **/../App/**/*.js': 'coverage'

Upvotes: 0

zs2020
zs2020

Reputation: 54504

You need to set ANGULAR_SCENARIO_ADAPTER. Karma doesn't use JASMINE_ADAPTER.

Upvotes: 0

Related Questions