-
Notifications
You must be signed in to change notification settings - Fork 97
Description
c8 + vitest: Some suites get covered other suites ...dont?
I'm working on modernizing and open-sourcing some platform...
It's test strategy and test suite is built of two layers:
test/e2e- end-to-end suites that useschild_process.execto run the SUT as cli in multiple scenarios.test/unit- unit-level suites that add unit-tests to cover specific code-paths which are not covered by any of the e2e scenarios.
In the old setup I used nyc, but after modernizing it to recent version of node and refactoring from require to import I could not get nyc to produce coverage for the e2e suites. Then I found about c8.
Astonishingly, c8 produced coverage for the e2e right out of the box with zero configuration.
However, evidently, I was too fast to rejoice: It does not produce coverage for the unit tests... 🫨
The opened codebase is still young and does not take long to install or run - so I hope it can be used as a reproduction scenario...
Reproduction
-
Clone
https://gitlab.com/prunjs/prun-core, use branchc8-bug-report. -
install (
npm i) -
"vanilla" run -
npm -w ecosystem/prun run cover

- Note that 3 suites have run: 1 e2e and 2 unit tests.
-
run only the e2e suites:
npm -w ecosystem/prun run cover -- test/e2e- expect: coverage numbers to be lesser than the vanilla run
- found: coverage are exactly like the "vanilla" run (i.e the "vanilla" run gathers coverage only from the e2e part)
-
run only unit tests -
npm -w ecosystem/prun run cover -- test/unit
I believe I could do a mish-mash where I ask both tools to produce coverage report in json for the parts it covers successfully, and ask either of the tools to merge them, but that would be a patch. I thought to ask here before I embark on something weird like that...
I hope it's just something silly I'm missing... donno...
🙏 thanks in advance 🙏
- Version:
10.1.2
- Platform:
Reproduced in both fedora in WSL2, with nodev20.17.0, npm `v10.8.2'Win11 pro, with nodev20.12.2, npmv10.5.0
