node-coverage-badges
v1.1.1
Published
Generating coverage badges from jest
Downloads
334
Readme
node-coverage-badges
Generating coverage badges from jest coverage report.
⚡ Badges for everyone
This package uses shields.io to created coverage badges from a coverage json summary file generated by your favorite test runner.
| Badge | Description | | ----------------------------------------------- | ---------------------------------------------- | | | Percentage of DD-paths followed during tests | | | Percentage of functions executed within tests | | | Percentage of lines covered by tests | | | Percentage of statements executed within tests | | | Average of the above coverage percentages |
⚡ Github action
If you want to integrate this to your CI/CD, you have a github action available for this.
⚡ Requirements
You need a test runner to generate the report summary file. For example vitest or jest.
⚡ Setup
🔶 Install
npm i -D node-coverage-badges
# or
yarn add -D node-coverage-badges
# or
pnpm i -D node-coverage-badges
🔶 Test runner configuration
You will need to add json-summary to coverage reporters in your test runner config.
🧿 vitest
vite config
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
coverage: {
reporter: ['json-summary'],
// ...
},
},
});
🧿 jest
jest config
module.exports = {
coverageReporters: ["json-summary"];
// ...
};
⚡ Usage
You have two ways to generate coverage badges: cli and node. Both will create a folder where .svg files will be written.
🔶 Cli
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
🔶 Node
You can generate badges from a summary file or raw values in node.
🧿 Generate badges from a summary file
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');
})();
You can also directly import the effect, if you use Effect:
import { generateBadgesEffect } from 'node-coverage-badges';
const task = Effect.gen(function* () {
//...
const result = yield* generateBadgesEffect();
});
The function signature is the following:
const generateBadgesEffect: (
coverageSummaryPath?: string,
outputPath?: string,
logo?: string,
) => Effect.Effect<boolean, FsError | AxiosError, never>;
🧿 Generate badges from raw values
import { generateBadgesFromValues } from 'node-coverage-badges';
(async () => {
const rawValues = {
total: {
branches: {
pct: 25,
},
functions: {
pct: 40,
},
lines: {
pct: 30,
},
statements: {
pct: 70,
},
},
};
await generateBadgesFromValues(rawValues, './badges', 'vitest');
})();
Effect signature is the following:
const generateBadgesFromValuesEffect: (
summaryValues: CoverageSummaryValue,
outputPath?: string,
logo?: string,
) => Effect.Effect<boolean, FsError | AxiosError, never>;
⚡ Thanks
Big thanks to Shield for this awesome tool!