How to setup Karma runner code coverage?

karma-runner

Solution

Apparently the karma code coverage documentation was more literal than I thought. Changing my `preprocessors` configuration to

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

(notice the preceding `**/`) did the trick. I am not sure why the syntax is different for the `files` array and the `preprocessors` object (`'tmp/scripts/**/*.js'` vs. `'**/tmp/scripts/**/*.js'`).

Problem

I am attempting to get Karma runner to generate cobertura formatted code coverage reports during a Jenkins build. I can get it to generate a coverage.xml file, but it does not actually have any coverage data. It appears (using `LOG_DEBUG`) that the coverage preprocessor is not running. The relevant pieces from my `karma.conf.js` file are: ``` files = [ JASMINE, JASMINE_ADAPTER, 'app/components/angular/angular.js', 'app/components/angular-mocks/angular-mocks.js', 'tmp/scripts/**/*.js', 'tmp/spec/**/*.js' ]; preprocessors = { 'tmp/scripts/**/*.js': 'coverage' }; // test results reporter to use // possible values: 'dots', 'progress', 'junit' reporters = ['dots', 'junit', 'coverage']; junitReporter = { outputFile: 'test-results.xml' }; coverageReporter = { type: 'cobertura', dir: 'coverage/', file: 'coverage.xml' }; ``` (The junit report is generating fine.)

Original source