Simplify coverage.exclude
patterns, remove coverage.all
#6956
Labels
Milestone
coverage.exclude
patterns, remove coverage.all
#6956
Clear and concise description of the problem
Setting good defaults for
coverage.exclude
is difficult. Thecoverage.include
is even more difficult. By defaultcoverage.include
is['*']
as we don't know where users' source code are.Currently we have listed complex
coverage.exclude
pattern that includes all kinds of framework and tool specific patterns that aren't really Vitest related. We constantly get new requests to add there more tool specific files, like MSW, postcss, tailwind, etc. This is not maintainable in long run.What (most) users don't realize is that they shouldn't be using
coverage.exclude
in the first place. Instead of defining every single*.config.*
file of your project's root, you should be definingcoverage.include
.Here users shouldn't do
coverage.exclude: ['tailwind.config.js', 'postcss.config.js, 'public/mockServiceWorker.js']
. They should do justcoverage.include: ['src']
.Suggested solution
coverage.exclude
really simple - just Vitest config, Vitest workspace files, test files,node_modules
. Only Vitest related files that we control.coverage.include: ['*']
as default value. Vite/JS community lacks good conventions here.coverage.exclude
, throw an error ifcoverage.include
is not defined. At this point most users should realize that they don't need complex patterns incoverage.exclude
at all. Definingcoverage.include
is enough.If you want Vitest V2 like functionality, set 'coverage.includes: ["*"]'
. Hopefully at this point users see that they could narrow down source files here.Alternative
Alternatively we could do similar option as Jest has: https://jestjs.io/docs/configuration#collectcoveragefrom-array
Their option forces users to define
coverage.include
, as by default they havecoverage.all: false
. By default Jest shows only files that were imported by test files. Users have to define uncovered files incollectCoverageFrom
.💡 We could remove
coverage.all
and by default only show files that were imported by tests. Then ifcoverage.includes
is defined, show all covered+uncovered files that match those.Additional context
No response
Validations
The text was updated successfully, but these errors were encountered: