node-coverage-badges v1.2.16
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", // cjs
"badges-esm": "generateBadgesEsm" // esm
},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!
12 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
10 months ago
10 months ago
9 months ago
10 months ago
10 months ago
9 months ago
9 months ago
9 months ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago