Barebones code coverage for JavaScript, in JavaScript.
Currently only supports Jasmine.
slim-cover [...options]
Executes tests and prints coverage information. slim-cover will only report on coverage for files that are included by your test code and satisfy the configuration options. If there are .js files in your configuration that are not imported by either your tests or the code under test, coverage for those files will not be reported.
--project <directory>
Sets the project directory in which to execute tests. For example, if your Jasmine spec folder is in a subdirectory called dev, run slim-cover --project dev to execute those tests.
By default, the current working directory is considered to be the project directory.
--include <file or directory>
Specifies a file or directory to include in the coverage report. For example, slim-cover --include index.js will only report on code coverage for index.js, whereas slim-cover --include src will report on coverage for all .js files under the src directory. This option can be used as many times as needed, for example slim-cover --include index.js --include src.
By default, all .js files under the project directory are included.
--exclude <file or directory>
Specifies a file or directory to exclude from the coverage report. For example, slim-cover --exclude node_modules will report on code coverage for all .js files under the project directory except for those found under the node_modules directory. This option can be used as many times as needed, for example slim-cover --exclude spec --exclude benchmark.js.
By default, nothing is excluded.
--reporter <type>[,<destination>]
Specifies a reporter to be used to output coverage information as well as an optional file to output to. This option can be used as many times as needed, for example slim-cover --reporter terminal --reporter codecov,coverage.json. Options for each reporter can only be specified via config file.
<type> may either be the name of one of the built-in reporters or a path to a JS module which exports a custom reporter. See the Reporters section for more details.
By default, the terminal reporter is outputted to stdout. If a reporter is specified without a destination, it is outputted to stdout.
--config <file>
Specifies the location of an optional configuration file. By default, slim-cover will check for a config file called .slim-cover.json.
Options may also be specified via a configuration file. When running slim-cover via command line it will use any file called .slim-cover.json in the current directory if it exists.
Here's an example with comments detailing the equivalent command line options described above:
{
"project": ".", // --project .
"includes": [
"src" // --include src
],
"excludes": [
"node_modules" // --exclude node_modules
],
"reporters": [
{
"type": "terminal",
"destination": "coverage.txt",
"options": {
"numContextLines": 2
}
} // --reporter terminal,coverage.txt
]
}The default reporter, which can be specified as terminal in your configuration. The number of lines adjacent to lines without full coverage is configurable as numConextLines in this reporter's options.
An optional reporter which can be used to create a report compatible with codecov.io. Can be specified as codecov in your configuration.
In place of any of the above built-in reporters, a path to any JS module can be specified in your configuration to be used as a reporter. Example reporter module:
module.exports = function( coverageData, project, options, outputStream ) {
// ...
};slim-cover can be combined with jasmine and esm to test code written using ES modules. Add esm as a helper in your jasmine.json ("../node_modules/esm" worked for me) and set the "esm" field to your package.json to { "cache": false }.
Disabling this esm option is necessary because if esm caches your files before running slim-cover they will not be picked up when you run slim-cover. Additionally, if esm caches your files while running slim-cover, you will get errors when not running slim-cover because it has not been initialized.
