| # karma-coverage |
| |
| [](https://github.com/karma-runner/karma-coverage) |
| [](https://www.npmjs.com/package/karma-coverage) [](https://www.npmjs.com/package/karma-coverage) |
| |
| [](https://travis-ci.org/karma-runner/karma-coverage) [](https://david-dm.org/karma-runner/karma-coverage) [](https://david-dm.org/karma-runner/karma-coverage#info=devDependencies) |
| |
| > Generate code coverage using [Istanbul]. |
| |
| ## Installation |
| |
| The easiest way is to install `karma-coverage` as a `devDependency`, |
| by running |
| |
| ```bash |
| npm install karma karma-coverage --save-dev |
| ``` |
| |
| ## Configuration |
| |
| For configuration details see [docs/configuration](docs/configuration.md). |
| |
| ## Examples |
| |
| ### Basic |
| |
| ```javascript |
| // karma.conf.js |
| module.exports = function(config) { |
| config.set({ |
| files: [ |
| 'src/**/*.js', |
| 'test/**/*.js' |
| ], |
| |
| // coverage reporter generates the coverage |
| reporters: ['progress', 'coverage'], |
| |
| preprocessors: { |
| // source files, that you wanna generate coverage for |
| // do not include tests or libraries |
| // (these files will be instrumented by Istanbul) |
| 'src/**/*.js': ['coverage'] |
| }, |
| |
| // optionally, configure the reporter |
| coverageReporter: { |
| type : 'html', |
| dir : 'coverage/' |
| } |
| }); |
| }; |
| ``` |
| ### CoffeeScript |
| |
| For an example on how to use with [CoffeeScript](http://coffeescript.org/) |
| see [examples/coffee](examples/coffee). For an example of how to use with |
| CoffeeScript and the RequireJS module loader, see |
| [examples/coffee-requirejs](examples/coffee-requirejs) (and also see |
| the `useJSExtensionForCoffeeScript` option in |
| [docs/configuration.md](docs/configuration.md)). |
| |
| ### Advanced, multiple reporters |
| |
| ```javascript |
| // karma.conf.js |
| module.exports = function(config) { |
| config.set({ |
| files: [ |
| 'src/**/*.js', |
| 'test/**/*.js' |
| ], |
| reporters: ['progress', 'coverage'], |
| preprocessors: { |
| 'src/**/*.js': ['coverage'] |
| }, |
| coverageReporter: { |
| // specify a common output directory |
| dir: 'build/reports/coverage', |
| reporters: [ |
| // reporters not supporting the `file` property |
| { type: 'html', subdir: 'report-html' }, |
| { type: 'lcov', subdir: 'report-lcov' }, |
| // reporters supporting the `file` property, use `subdir` to directly |
| // output them in the `dir` directory |
| { type: 'cobertura', subdir: '.', file: 'cobertura.txt' }, |
| { type: 'lcovonly', subdir: '.', file: 'report-lcovonly.txt' }, |
| { type: 'teamcity', subdir: '.', file: 'teamcity.txt' }, |
| { type: 'text', subdir: '.', file: 'text.txt' }, |
| { type: 'text-summary', subdir: '.', file: 'text-summary.txt' }, |
| ] |
| } |
| }); |
| }; |
| ``` |
| |
| ### FAQ |
| |
| #### Don't minify instrumenter output |
| |
| When using the istanbul instrumenter (default), you can disable code compaction by adding the following to your configuration. |
| |
| ```javascript |
| // karma.conf.js |
| module.exports = function(config) { |
| config.set({ |
| coverageReporter: { |
| instrumenterOptions: { |
| istanbul: { noCompact: true } |
| } |
| } |
| }); |
| }; |
| ``` |
| |
| ---- |
| |
| For more information on Karma see the [homepage]. |
| |
| |
| [homepage]: https://karma-runner.github.io |
| [Istanbul]: https://istanbul.js.org |