Skip to content

c8 + vitest: Some suites get covered other suites ...dont? #545

@osher

Description

@osher

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 uses child_process.exec to 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

  1. Clone https://gitlab.com/prunjs/prun-core, use branch c8-bug-report.

  2. install (npm i)

  3. "vanilla" run - npm -w ecosystem/prun run cover
    image

    • Note that 3 suites have run: 1 e2e and 2 unit tests.
  4. 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)
  5. run only unit tests - npm -w ecosystem/prun run cover -- test/unit

    • expect: some coverage to be produced
    • found: The only covered file is vitest.config.js... no coverage is reported for any of the project files
      image

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 node v20.17.0, npm `v10.8.2'
  • Win11 pro, with node v20.12.2, npm v10.5.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions