[6a3a178] | 1 | # karma-coverage
|
---|
| 2 |
|
---|
| 3 | [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/karma-runner/karma-coverage)
|
---|
| 4 | [![npm version](https://img.shields.io/npm/v/karma-coverage.svg?style=flat-square)](https://www.npmjs.com/package/karma-coverage) [![npm downloads](https://img.shields.io/npm/dm/karma-coverage.svg?style=flat-square)](https://www.npmjs.com/package/karma-coverage)
|
---|
| 5 |
|
---|
| 6 | [![Build Status](https://img.shields.io/travis/karma-runner/karma-coverage/master.svg?style=flat-square)](https://travis-ci.org/karma-runner/karma-coverage) [![Dependency Status](https://img.shields.io/david/karma-runner/karma-coverage.svg?style=flat-square)](https://david-dm.org/karma-runner/karma-coverage) [![devDependency Status](https://img.shields.io/david/dev/karma-runner/karma-coverage.svg?style=flat-square)](https://david-dm.org/karma-runner/karma-coverage#info=devDependencies)
|
---|
| 7 |
|
---|
| 8 | > Generate code coverage using [Istanbul].
|
---|
| 9 |
|
---|
| 10 | ## Installation
|
---|
| 11 |
|
---|
| 12 | The easiest way is to install `karma-coverage` as a `devDependency`,
|
---|
| 13 | by running
|
---|
| 14 |
|
---|
| 15 | ```bash
|
---|
| 16 | npm install karma karma-coverage --save-dev
|
---|
| 17 | ```
|
---|
| 18 |
|
---|
| 19 | ## Configuration
|
---|
| 20 |
|
---|
| 21 | For configuration details see [docs/configuration](docs/configuration.md).
|
---|
| 22 |
|
---|
| 23 | ## Examples
|
---|
| 24 |
|
---|
| 25 | ### Basic
|
---|
| 26 |
|
---|
| 27 | ```javascript
|
---|
| 28 | // karma.conf.js
|
---|
| 29 | module.exports = function(config) {
|
---|
| 30 | config.set({
|
---|
| 31 | files: [
|
---|
| 32 | 'src/**/*.js',
|
---|
| 33 | 'test/**/*.js'
|
---|
| 34 | ],
|
---|
| 35 |
|
---|
| 36 | // coverage reporter generates the coverage
|
---|
| 37 | reporters: ['progress', 'coverage'],
|
---|
| 38 |
|
---|
| 39 | preprocessors: {
|
---|
| 40 | // source files, that you wanna generate coverage for
|
---|
| 41 | // do not include tests or libraries
|
---|
| 42 | // (these files will be instrumented by Istanbul)
|
---|
| 43 | 'src/**/*.js': ['coverage']
|
---|
| 44 | },
|
---|
| 45 |
|
---|
| 46 | // optionally, configure the reporter
|
---|
| 47 | coverageReporter: {
|
---|
| 48 | type : 'html',
|
---|
| 49 | dir : 'coverage/'
|
---|
| 50 | }
|
---|
| 51 | });
|
---|
| 52 | };
|
---|
| 53 | ```
|
---|
| 54 | ### CoffeeScript
|
---|
| 55 |
|
---|
| 56 | For an example on how to use with [CoffeeScript](http://coffeescript.org/)
|
---|
| 57 | see [examples/coffee](examples/coffee). For an example of how to use with
|
---|
| 58 | CoffeeScript and the RequireJS module loader, see
|
---|
| 59 | [examples/coffee-requirejs](examples/coffee-requirejs) (and also see
|
---|
| 60 | the `useJSExtensionForCoffeeScript` option in
|
---|
| 61 | [docs/configuration.md](docs/configuration.md)).
|
---|
| 62 |
|
---|
| 63 | ### Advanced, multiple reporters
|
---|
| 64 |
|
---|
| 65 | ```javascript
|
---|
| 66 | // karma.conf.js
|
---|
| 67 | module.exports = function(config) {
|
---|
| 68 | config.set({
|
---|
| 69 | files: [
|
---|
| 70 | 'src/**/*.js',
|
---|
| 71 | 'test/**/*.js'
|
---|
| 72 | ],
|
---|
| 73 | reporters: ['progress', 'coverage'],
|
---|
| 74 | preprocessors: {
|
---|
| 75 | 'src/**/*.js': ['coverage']
|
---|
| 76 | },
|
---|
| 77 | coverageReporter: {
|
---|
| 78 | // specify a common output directory
|
---|
| 79 | dir: 'build/reports/coverage',
|
---|
| 80 | reporters: [
|
---|
| 81 | // reporters not supporting the `file` property
|
---|
| 82 | { type: 'html', subdir: 'report-html' },
|
---|
| 83 | { type: 'lcov', subdir: 'report-lcov' },
|
---|
| 84 | // reporters supporting the `file` property, use `subdir` to directly
|
---|
| 85 | // output them in the `dir` directory
|
---|
| 86 | { type: 'cobertura', subdir: '.', file: 'cobertura.txt' },
|
---|
| 87 | { type: 'lcovonly', subdir: '.', file: 'report-lcovonly.txt' },
|
---|
| 88 | { type: 'teamcity', subdir: '.', file: 'teamcity.txt' },
|
---|
| 89 | { type: 'text', subdir: '.', file: 'text.txt' },
|
---|
| 90 | { type: 'text-summary', subdir: '.', file: 'text-summary.txt' },
|
---|
| 91 | ]
|
---|
| 92 | }
|
---|
| 93 | });
|
---|
| 94 | };
|
---|
| 95 | ```
|
---|
| 96 |
|
---|
| 97 | ### FAQ
|
---|
| 98 |
|
---|
| 99 | #### Don't minify instrumenter output
|
---|
| 100 |
|
---|
| 101 | When using the istanbul instrumenter (default), you can disable code compaction by adding the following to your configuration.
|
---|
| 102 |
|
---|
| 103 | ```javascript
|
---|
| 104 | // karma.conf.js
|
---|
| 105 | module.exports = function(config) {
|
---|
| 106 | config.set({
|
---|
| 107 | coverageReporter: {
|
---|
| 108 | instrumenterOptions: {
|
---|
| 109 | istanbul: { noCompact: true }
|
---|
| 110 | }
|
---|
| 111 | }
|
---|
| 112 | });
|
---|
| 113 | };
|
---|
| 114 | ```
|
---|
| 115 |
|
---|
| 116 | ----
|
---|
| 117 |
|
---|
| 118 | For more information on Karma see the [homepage].
|
---|
| 119 |
|
---|
| 120 |
|
---|
| 121 | [homepage]: http://karma-runner.github.com
|
---|
| 122 | [Istanbul]: https://istanbul.js.org
|
---|