Bas van Dijk
Bas van Dijk

Reputation: 10713

How can I ignore a file pattern for Jest code coverage?

In my Jest tested project I have *.entity.ts files. I don't want these files to be included in my coverage test.

According to the documentation at https://facebook.github.io/jest/docs/en/configuration.html#coveragepathignorepatterns-array-string there is a coveragePathIgnorePatterns setting which you can use in the package.json

I've tried regex and file patterns but none of these just ignores the *.entity.ts files in the final report.

When I add for example "coveragePathIgnorePatterns": ["common"] my tests won't even run anymore.

Any thoughts on how I can make Jest skip the *.entity.ts in the coverage tests?

My Jest section in the package.json looks like:

{
    "moduleFileExtensions": [
        "js",
        "json",
        "ts"
    ],
    "rootDir": "src",
    "testRegex": ".spec.ts$",
    "transform": {
        "^.+\\.(t|j)s$": "ts-jest"
    },
    "coverageDirectory": "../coverage"
}

Upvotes: 94

Views: 163218

Answers (4)

Steven Scott
Steven Scott

Reputation: 11250

I use an external JSON file to hold my Jest configuration and run it from my package.json using npm: jest --config jest.config.json --no-cache

jest.config.json

{
    "collectCoverage": true,
    "collectCoverageFrom": [
        "src/**/*.ts"
    ],
    "coveragePathIgnorePatterns": [
        "node_modules",
        "test-config",
        "interfaces",
        "jestGlobalMocks.ts",
        "\\.module\\.ts",
        "<rootDir>/src/app/main.ts",
        "\\.mock\\.ts"
    ],
    "coverageDirectory": "<rootDir>/coverage/",
    "coverageThreshold": {
        "global": {
            "branches": 20,
            "functions": 30,
            "lines": 50,
            "statements": 50
        }
    },
    "mapCoverage": true,
    "preset": "jest-preset-angular",
    "setupTestFrameworkScriptFile": "<rootDir>/src/setupJest.ts",

    "transformIgnorePatterns": [
        "<rootDir>/node_modules/(?!@ionic-native|@ionic|@ngrx|angular2-ui-switch|angularfire2|jest-cli)"
    ],
    "verbose": false
}

My coverage does not include the files listed in the "coveragePathIgnorePatterns". Maybe the source line "/src/app/main.ts" is the entry you need.

Upvotes: 166

mattocaramba
mattocaramba

Reputation: 127

In my case the following rootDir jest parameter meant that the <rootDir> was the 'test' directory.

jest --rootDir=./test

Upvotes: -2

allexiusw
allexiusw

Reputation: 1744

Also you can add to your package.js the following:

... // Other data
"jest": {
    "coveragePathIgnorePatterns" : [
      "<rootDir>/src/index.js",
      "<rootDir>/src/reportWebVitals.js"
    ]
}
... // Other data

That's the only configuration you need to get it working

Upvotes: 7

Gourab Paul
Gourab Paul

Reputation: 655

You can add a ! mark in collectCoverageFrom parameter to exclude it from counting. Here any file inside a subfolder of src dir

  collectCoverage: true,
  collectCoverageFrom: ['src/**/*.ts','!src/*/filesToExclude.ts']

Upvotes: 48

Related Questions