1.2.16 • Published 3 months ago

node-coverage-badges v1.2.16

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

node-coverage-badges

Open in Visual Studio Code Github workflow Quality Gate Status Maintainability Rating Security Rating Reliability Rating Coverage Coverage Lines of Code Technical Debt Code Smells Bugs Vulnerabilities Duplicated Lines (%) npm bundle size Last commit

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.

BadgeDescription
BranchesPercentage of DD-paths followed during tests
FunctionsPercentage of functions executed within tests
LinesPercentage of lines covered by tests
StatementsPercentage of statements executed within tests
Jest coverageAverage 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!

1.2.0

6 months ago

1.2.8

5 months ago

1.2.7

5 months ago

1.2.6

5 months ago

1.2.5

5 months ago

1.2.4

5 months ago

1.2.3

5 months ago

1.2.2

6 months ago

1.2.1

6 months ago

1.2.9

5 months ago

1.2.12

4 months ago

1.2.13

4 months ago

1.2.10

5 months ago

1.2.11

5 months ago

1.2.16

3 months ago

1.2.14

3 months ago

1.2.15

3 months ago

1.1.1

11 months ago

1.0.2

1 year ago

1.1.0

12 months ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.11

1 year ago

1.0.10

1 year ago

1.0.12

12 months ago

1.0.1

1 year ago