npm

Ready to take your JavaScript development to the next level? Meet npm Enterprise - the ultimate in enterprise JavaScript.Learn more »

jasmine-istanbul-reporter

0.0.0 • Public • Published

jasmine-istanbul-reporter

Build Status

what

Jasmine report plugin that scrapes test pages for istanbul coverage stats and writes them to a set of files for eventual conversion to LCOV, Cobertura, etc.

why

Because nothing else like this exists, as far as I could find. The biggest thing here is that this works for the weird niche of Jasmine + Selenium with no ties to build tools like Protractor, Karma, Grunt or Gulp. If you're using those tools, you may be best off to use what is already built for those, as those employ nice techniques like coverage ports, etc.

how

Simple adds in a Jasmine report hook that saves the Istanbul __coverage__ variable to a file after every spec finishes. To get around functions in tests that may wipe out the __coverage__ variable, it lets you provide a list of functions to wrap in a coverage preservation hook to get around this.

To use it, provide it with some options:

  • outputPath - defaults to '.' - this will save a bunch of uuid.v4() named json files to that directory
  • functionBindingList - an array of objects of the form { 'methodName' : parentObject } these will be re-bound with a decorator/wrapper that preserves coverage across their call. This may be re-worked some day to provide an easier syntax
  • driver - a selenium-webdriver.WebDriver implementation, such as Chrome, Firefox, etc. This is usually avaiable if you're setting up a Jasmine reporter.

example

Here is a brief example of setting up the reporter with Jasmine to dump files in a directory called coverage and wrap a function called page.clearVariables. A driver is also provided from out of the ether.

var JasmineIstanbulReporter = require('jasmine-istanbul-reporter');
...
jasmine.getEnv().addReporter(new JasmineIstanbulReporter({
  outputPath: './coverage',
  functionBindingList: [{'clearVariables': page}],
  driver: browser.driver
}));

You could then scrape in all of the coverage/*.json files using Istanbul to provide a human or machine readable report (HTML, LCOV, etc.).

istanbul report --include=coverage/*.json

TODO

  • as this reporter is called as a synchronous utility, there is definitely some concern with this. for instance, a recent fix had to do a sync write to file, as sometimes these were getting interrupted halfway through the write. heavily leaning towards converting all calls to sync.
  • the tests are an absolute mess right.

install

npm i jasmine-istanbul-reporter

Downloadsweekly downloads

90

version

0.0.0

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability