Code coverage with Testacular and Jasmine
Setting up the coverage reporter
Testacular (version >= 0.5.3) has a coverage reporter to generate differnent formats of coverage reports (lcov, html, text,..).
To set it up, you can either init a new testacular.conf.js with
$ testacular init
(or use your existing testacular.conf.js) and edit it to preprocess ("instrument") the javascript files for coverage discovery and add the "coverage" reporter like this:
preprocessors = {
'**/app/assets/javascripts/*.js': 'coverage',
...
}
reporters = ['progress', 'coverage'];
Be really careful with the "preprocessors" option, because it uses minimatch in a certain way, that requires the "**/" to be at the very beginning of each path you specify. Running testacular with --log-level debug
tells you which files have or haven't been picked up by the preprocessor, if you're in doubt.
For more options see the testacular wiki page for the coverage reporter on GitHub
Pitfall: Manual browser mode
If you get weird results or errors thrown at you, check the browser setting:
browsers = [];
means that you need to manually point your browser to http://localhost:SOMEPORT and testacular will execute within that browser.
For some reason I couldn't nail down, this screws you up big time.
Don't do it. Be a good boy, specify your browsers there, such as
browsers = ['Chrome', 'Firefox'];
and you'll be good.
Written by Martin Naumann
Related protips
7 Responses
Any ideas how to test code coverage on Coffeescript projects? I've been using instanbul with karma for quite a long time but it doesn't seem they're going to add .coffee support soon.
@paprikkastudio :
did you try to add a preprocessor in karma.conf.js :
preprocessors = {
'**/app/**/*.js': 'coverage',
'**/*.coffee': 'coffee'
};
</pre>
@laurentroger yeah, I have, but thanks for taking the time answering me. Turned out to be an npm issue. Now everything works pretty well.
hey I have the same problem that I can't use the coffescript with coverage could you please share the solution !
hey I have the same problem that I can't use the coffescript with coverage could you please share the solution !
@mohitleo9 : can you describe your problem on stackoverflow and send back the link ?