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 istanbul-instrumenter-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'], // any of these options are valid: https://github.com/istanbuljs/istanbuljs/blob/aae256fb8b9a3d19414dcf069c592e88712c32c6/packages/istanbul-api/lib/config.js#L33-L39 coverageIstanbulReporter: { // reports can be any that are listed here: https://github.com/istanbuljs/istanbuljs/tree/aae256fb8b9a3d19414dcf069c592e88712c32c6/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 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/aae256fb8b9a3d19414dcf069c592e88712c32c6/packages/istanbul-reports/lib/html/index.js#L135-L137 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 // `instrumentation` is used to configure Istanbul API package. instrumentation: { // To include `node_modules` code in the report. 'default-excludes': false } } }); };
MIT