Vitest supports Native code coverage via c8
and instrumented code coverage via istanbul
.
Since Vitest v0.22.0
Both c8
and istanbul
support are optional. By default, c8
will be used.
You can select the coverage tool by setting test.coverage.provider
to either c8
or istanbul
:
// vite.config.ts import { defineConfig } from 'vitest/config' export default defineConfig({ test: { coverage: { provider: 'istanbul' // or 'c8' }, }, })
// vite.config.ts import { defineConfig } from 'vitest/config' export default defineConfig({ test: { coverage: { provider: 'istanbul' // or 'c8' }, }, })
When you start the Vitest process, it will prompt you to install the corresponding support package automatically.
Or if you prefer to install them manually:
# For c8 npm i -D @vitest/coverage-c8 # For istanbul npm i -D @vitest/coverage-istanbul
# For c8 npm i -D @vitest/coverage-c8 # For istanbul npm i -D @vitest/coverage-istanbul
To test with coverage enabled, you can pass the --coverage
flag in CLI.
{ "scripts": { "test": "vitest", "coverage": "vitest run --coverage" } }
{ "scripts": { "test": "vitest", "coverage": "vitest run --coverage" } }
To configure it, set test.coverage
options in your config file:
// vite.config.ts import { defineConfig } from 'vitest/config' export default defineConfig({ test: { coverage: { reporter: ['text', 'json', 'html'], }, }, })
// vite.config.ts import { defineConfig } from 'vitest/config' export default defineConfig({ test: { coverage: { reporter: ['text', 'json', 'html'], }, }, })
It's also possible to provide your custom coverage provider by passing an object to the test.coverage.provider
:
// vite.config.ts import { defineConfig } from 'vitest/config' import CustomCoverageProvider from 'my-custom-coverage-provider' export default defineConfig({ test: { coverage: { provider: CustomCoverageProvider() }, }, })
// vite.config.ts import { defineConfig } from 'vitest/config' import CustomCoverageProvider from 'my-custom-coverage-provider' export default defineConfig({ test: { coverage: { provider: CustomCoverageProvider() }, }, })
Please refer to the type definition for more details.
© 2021-Present Anthony Fu
© 2021-Present Matias Capeletto
Licensed under the MIT License.
https://vitest.dev/guide/coverage.html