Skip to content

Commit

Permalink
feat(coverage): add reportOnFailure option
Browse files Browse the repository at this point in the history
  • Loading branch information
AriPerkkio committed May 26, 2023
1 parent 56b9927 commit f9c29d1
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 0 deletions.
9 changes: 9 additions & 0 deletions docs/config/index.md
Expand Up @@ -778,6 +778,15 @@ The reporter has three different types:

Since Vitest 0.31.0, you can check your coverage report in Vitest UI: check [Vitest UI Coverage](/guide/coverage#vitest-ui) for more details.

#### coverage.reportOnFailure

- **Type:** `boolean`
- **Default:** `true`
- **Available for providers:** `'c8' | 'istanbul'`
- **CLI:** `--coverage.reportOnFailure`, `--coverage.reportOnFailure=false`

Generate coverage report even when tests fail.

#### coverage.skipFull

- **Type:** `boolean`
Expand Down
1 change: 1 addition & 0 deletions packages/vitest/src/defaults.ts
Expand Up @@ -33,6 +33,7 @@ export const coverageConfigDefaults: ResolvedCoverageOptions = {
cleanOnRerun: true,
reportsDirectory: './coverage',
exclude: defaultCoverageExcludes,
reportOnFailure: true,
reporter: [['text', {}], ['html', {}], ['clover', {}], ['json', {}]],
// default extensions used by c8, plus '.vue' and '.svelte'
// see https://github.com/istanbuljs/schema/blob/master/default-extension.js
Expand Down
3 changes: 3 additions & 0 deletions packages/vitest/src/node/core.ts
Expand Up @@ -692,6 +692,9 @@ export class Vitest {
}

private async reportCoverage(allTestsRun: boolean) {
if (!this.config.coverage.reportOnFailure && this.state.getCountOfFailedTests() > 0)
return

if (this.coverageProvider) {
this.logger.log(c.blue(' % ') + c.dim('Coverage report from ') + c.yellow(this.coverageProvider.name))
await this.coverageProvider.reportCoverage({ allTestsRun })
Expand Down
8 changes: 8 additions & 0 deletions packages/vitest/src/types/coverage.ts
Expand Up @@ -77,6 +77,7 @@ type FieldsWithDefaultValues =
| 'reportsDirectory'
| 'exclude'
| 'extension'
| 'reportOnFailure'

export type ResolvedCoverageOptions<T extends Provider = Provider> =
& CoverageOptions<T>
Expand Down Expand Up @@ -208,6 +209,13 @@ export interface BaseCoverageOptions {
* @default false
*/
thresholdAutoUpdate?: boolean

/**
* Generate coverage report even when tests fail.
*
* @default true
*/
reportOnFailure?: boolean
}

export interface CoverageIstanbulOptions extends BaseCoverageOptions {
Expand Down
1 change: 1 addition & 0 deletions test/coverage-test/test/configuration-options.test-d.ts
Expand Up @@ -105,6 +105,7 @@ test('provider module', () => {
extension: ['string'],
reporter: [['html', {}], ['json', { file: 'string' }]],
reportsDirectory: 'string',
reportOnFailure: true,
}
},
clean(_: boolean) {},
Expand Down

0 comments on commit f9c29d1

Please sign in to comment.