A karma reporter that uses the latest istanbul 1.x APIs (with full sourcemap support) to report coverage.
This is a reporter only and does not perform the actual instrumentation of your code. Babel users should use the istanbul babel plugin to instrument your code and webpack typescript users should use the coverage-istanbul-loader and then use this karma reporter to do the actual reporting. See the test config for an e2e example of how to combine them.
npm install karma-coverage-istanbul-reporter --save-dev
// karma.conf.js
const path = require('path');
module.exports = function(config) {
config.set({
// ... rest of karma config
// anything named karma-* is normally auto included so you probably dont need this
plugins: ['karma-coverage-istanbul-reporter'],
reporters: ['coverage-istanbul'],
coverageIstanbulReporter: {
// reports can be any that are listed here: https://github.com/istanbuljs/istanbuljs/tree/73c25ce79f91010d1ff073aa6ff3fd01114f90db/packages/istanbul-reports/lib
reports: ['html', 'lcovonly', 'text-summary'],
// base output directory. If you include %browser% in the path it will be replaced with the karma browser name
dir: path.join(__dirname, 'coverage'),
// Combines coverage information from multiple browsers into one report rather than outputting a report
// for each browser.
combineBrowserReports: true,
// if using webpack and pre-loaders, work around webpack breaking the source path
fixWebpackSourcePaths: true,
// Omit files with no statements, no functions and no branches covered from the report
skipFilesWithNoCoverage: true,
// Most reporters accept additional config options. You can pass these through the `report-config` option
'report-config': {
// all options available at: https://github.com/istanbuljs/istanbuljs/blob/73c25ce79f91010d1ff073aa6ff3fd01114f90db/packages/istanbul-reports/lib/html/index.js#L257-L261
html: {
// outputs the report in ./coverage/html
subdir: 'html'
}
},
// enforce percentage thresholds
// anything under these percentages will cause karma to fail with an exit code of 1 if not running in watch mode
thresholds: {
emitWarning: false, // set to `true` to not fail the test command when thresholds are not met
// thresholds for all files
global: {
statements: 100,
lines: 100,
branches: 100,
functions: 100
},
// thresholds per file
each: {
statements: 100,
lines: 100,
branches: 100,
functions: 100,
overrides: {
'baz/component/**/*.js': {
statements: 98
}
}
}
},
verbose: true // output config used by istanbul for debugging
}
});
};
- clover
- cobertura
- html-spa
- html
- json-summary
- json
- lcov
- lcovonly
- none
- teamcity
- text-lcov
- text-summary
- text
MIT