Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
osher opened this issue Oct 16, 2024 · 2 comments
Open

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

osher opened this issue Oct 16, 2024 · 2 comments

Comments

@osher
Copy link

osher commented Oct 16, 2024

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
@osher
Copy link
Author

osher commented Oct 22, 2024

@bcoe - I'd really appreciate it if you could take a look, or direct me to who can help

Thanks for all the good work! :)

@cenfun
Copy link
Contributor

cenfun commented Oct 23, 2024

You should use vitest coverage directly instead of c8 + vitest

vitest run --coverage

or c8 + mocha (or node test runner)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants