ember-cli-nacho-coverage
v1.0.2
Published
Code coverage for ember projects using Istanbul regarless what transpiler you use.
Downloads
5
Readme
ember-cli-nacho-coverage
Code coverage using Istanbul for Ember apps that works with any transpiler.
Requirements
- If using Mocha, Testem
>= 1.6.0
for which you need ember-cli> 2.4.3
- If using Mirage you need
ember-cli-mirage >= 0.1.13
- If using Pretender (even as a dependency of Mirage) you need
pretender >= 0.11.0
- If using Mirage or Pretender, you need to set up a passthrough for coverage to be written.
Installation
ember install ember-cli-nacho-coverage
Usage
Coverage will only be generated when an environment variable is true (by default COVERAGE
) and running your test command like normal.
For example:
COVERAGE=true ember test
If you want your coverage to work on both Unix and Windows, you can do this:
npm install cross-env --save-dev
and then:
cross-env COVERAGE=true ember test
When running with parallel
set to true, the final reports can be merged by using ember coverage-merge
. The final merged output will be stored in the coverageFolder
.
Configuration
Configuration is optional. Use ember-cli-build.js
, as ember-cli-nacho-coverage
.
Options
coverageEnvVar
: Defaults toCOVERAGE
. This is the environment variable that when set will cause coverage metrics to be generated.reporters
: Defaults to['lcov', 'html']
. Thejson-summary
reporter will be added to anything set here, it is required. This can be any reporters supported by Istanbul.excludes
: Defaults to['*/mirage/**/*']
. An array of globs to exclude from instrumentation. Useful to exclude files from coverage statistics.coverageFolder
: Defaults tocoverage
. A folder relative to the root of your project to store coverage results.parallel
: Defaults tofalse
. Should be set to true if parallel testing is being used, for example when using ember-exam with the--parallel
flag. This will generate the coverage reports in directories suffixed with_<random_string>
to avoid overwriting other threads reports. These reports can be joined by using theember coverage-merge
command (potentially as part of the posttest hook in yourpackage.json
).includeTranspiledSources
: Defaults to[]
. Should include a list of transpiled JavaScript source extensions to be included in the coverage instrumentation. However, the compiled output is what will be instrumented so this will only be a close approximation of the source coverage.
Example
module.exports = {
coverageEnvVar: 'COV'
}
Create a passthrough when intercepting all ajax requests in tests
To work, this addon has to post coverage results back to a middleware at /write-coverage
.
If you are using ember-cli-mirage
you should add the following:
// in mirage/config.js
this.passthrough('/write-coverage');
this.namespace = 'api'; // It's important that the passthrough for coverage is before the namespace, otherwise it will be prefixed.
If you are using ember-cli-pretender
you should add the following:
// where ever you set up the Pretender Server
var server = new Pretender(function () {
this.post('/write-coverage', this.passthrough);
});
Inspiration
This addon was inspired by ember-cli-blanket
.
The primary differences are that this addon uses Istanbul rather than Blanket for coverage and it instruments your application code as part of the build, when enabled.