Generating coverage badges from jest coverage report.
This package uses shields.io to created coverage badges from a coverage json summary file generated by your favorite test runner.
If you want to integrate this to your CI/CD, you have a github action available for this.
You need a test runner to generate the report summary file. For example vitest or jest.
npm i -D node-coverage-badges
# or
yarn add -D node-coverage-badges
# or
pnpm i -D node-coverage-badges
You will need to add json-summary to coverage reporters in your test runner config.
vite config
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
coverage: {
reporter: ['json-summary'],
// ...
},
},
});
jest config
module.exports = {
coverageReporters: ["json-summary"];
// ...
};
You have two ways to generate coverage badges: cli and node. Both will create a folder where .svg files will be written.
You can add a script to your package.json like so:
"scripts": {
"badges": "generateBadges"
},
The generateBadges
function accepts three optional arguments to specify:
- a custom path for the input json summary file.
- a custom path for the output path.
- a simple icon slug to specify a custom badge icon.
# will generate badges from './coverage/coverage-summary.json' in './badges' (default)
yarn generateBadges
# will generate badges from './myModule/coverage-summary.json' in './cool' folder.
yarn generateBadges -c ./myModule/coverage-summary.json -o ./cool
# will generate badges from './myModule/coverage-summary.json' in './cool' folder using the vitest icon.
yarn generateBadges -c ./myModule/coverage-summary.json -o ./cool -l vitest
Another way is to directly use the package:
import { generateBadges } from 'node-coverage-badges';
(async () => {
// will generate badges from './coverage/coverage-summary.json' in './badges' (default)
await generateBadges();
})();
The function optionally accepts two arguments to specify a custom path for the json summary file and the output path:
import { generateBadges } from 'node-coverage-badges';
(async () => {
// will generate badges from './myModule/coverage-summary.json' in './cool' using the jest icon.
await generateBadges('./myModule/coverage-summary.json', './cool', 'jest');
})();
Big thanks to Shield for this awesome tool!