9

When I try to include all the project source code to get a more reasonable code coverage figure, I end up with

----------|----------|----------|----------|----------|----------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines |Uncovered Lines |
----------|----------|----------|----------|----------|----------------|
All files |  Unknown |  Unknown |  Unknown |  Unknown |                |
----------|----------|----------|----------|----------|----------------|

My config contains the following:

"collectCoverageFrom": [
    "<rootDir>/app_modules/",
    "<rootDir>/src/"
],    

I've also tried it without the trailing /, with **/*.js and with just a trailing *.js all to no avail.

Based on the --debug option, the path expands to the paths I want to collect coverage information from ( isn't the problem)

So what is the magic to getting more accurate coverage information?

The best docs I've been able to find come from this Github PR: https://github.com/facebook/jest/pull/1349/files


I ended up doing:

"collectCoverageFrom": [
    "**/*.js",
    "!webpack.config.js"
],

which only worked because this is part of the default config

"testPathIgnorePatterns": [
    "/node_modules/"
],

It does add a huge amount of time to the test run though.

Rick Hanlon II
  • 20,549
  • 7
  • 47
  • 53
boatcoder
  • 17,525
  • 18
  • 114
  • 178

3 Answers3

17

Look at your link very carefully:

collectCoverageFrom: {
  description: wrap(
    'relative to <rootDir> glob pattern matching the files that coverage ' +
      'info needs to be collected from.'
      ...

You can't use <rootDir>. Try:

collectCoverageFrom: [
    "**/app_modules/**",
    "**/src/**"
],
NissimL
  • 148
  • 8
robi24
  • 576
  • 7
  • 14
0

This is just an other information to add to your edited question: instead of declaring a second array:

"testPathIgnorePatterns": [
    "/node_modules/"
],

You can just keep using your collectCoverageFrom array by prepending ! to the directory you do not want to collect coverage information about:

collectCoverageFrom: [
    "!**/node_modules/**"
],
Begueradj
  • 547
  • 7
  • 19
0

you can just force de coverage with the option forceCoverageMatch : ['/.ts','/.js']

Punix81
  • 39
  • 2