Code coverage for Jest

jest example
jest typescript
jest environment variables
npm jest
jest describe
ts-jest
babel-jest
jest-environment-node

Is there a way to have code coverage in the Javascript Jest testing framework that is built on top of Jasmine?

The internal framework does not print out the code coverage it gets. I've also tried using Istanbul, blanket and JSCover, but none of them work.

When using Jest 21.2.1, I can see code coverage at the command line and create a coverage directory by passing --coverage to the Jest script. Below are some examples:

I tend to install Jest locally, in which case the command might look like this:

npx jest --coverage

I assume (though haven't confirmed), that this would also work if I installed Jest globally:

jest --coverage

The very sparse docs are here

When I navigated into the coverage/lcov-report directory I found an index.html file that could be loaded into a browser. It included the information printed at the command line, plus additional information and some graphical output.

Jest · Delightful JavaScript Testing, This uses V8's builtin code coverage rather than one based on Babel. It is not as well tested, and it has also improved in the last few releases of Node. Using the  When using Jest 21.2.1, I can see code coverage at the command line and create a coverage directory by passing --coverage to the Jest script. Below are some examples: I tend to install Jest locally, in which case the command might look like this:

UPDATE: 7/20/2018 - Added links and updated name for coverageReporters.

UPDATE: 8/14/2017 - This answer is totally outdated. Just look at the Jest docs now. They have official support and documentation about how to do this.

@hankhsiao has got a forked repo where Istanbul is working with Jest. Add this to your dev dependencies

 "devDependencies": {
     "jest-cli": "git://github.com/hankhsiao/jest.git"
 }

Also make sure coverage is enabled in your package.json jest entry and you can also specify formats you want. (The html is pretty bad ass).

 "jest": {
     "collectCoverage": true,
     "coverageReporters": ["json", "html"],
 }

See Jest documentation for coverageReporters (default is ["json", "lcov", "text"])

Or add --coverage when you invoke jest.

Configuring Jest · Jest, js extension. This is how jest is able to find all the test files to be executed. Let's understand the above code. Here we are testing add function  Jest can collect code coverage information from entire projects, including untested files. Easy Mocking Jest uses a custom resolver for imports in your tests, making it simple to mock any object outside of your test’s scope.

Jan 2019: Jest version 23.6

For anyone looking into this question recently especially if testing using npm or yarn directly

Currently, you don't have to change the configuration options

As per jest official website, you can do the following to generate coverage reports:

1- For npm:

You must put -- before passing the --coverage argument of jest

npm test -- --coverage

if you try invoking the --coverage directly without the -- it won't work

2- For yarn:

You can pass the --coverage argument of jest directly

yarn test --coverage

React Testing using Jest along with code coverage report, After you write the tests run the command npm run jest-coverage. This will create coverage folder in the root directory. /coverage/icov-report/index. html has the html view of code coverage. Let’s explore how to see the total code coverage for the entire application. For this we will need to make some configuration changes. Open jest.config.json and add the following content

Alright, ignore my previous answer as someone told me it did not resolve the problem.

New Answer:

1) Check the latest jest (v 0.22): https://github.com/facebook/jest

2) The facebook team puts the istanbul as part of the coverage report and you can use it directly.

3) After executing jest, you can get coverage report on console and under the root folder set by jest, you will find the coverage report in json and html format.

4) FYI, if you install from npm, you might not get the latest version; so try the github first and make sure the coverage is what you need.


Old Answer:

Got the same problem as well. Short answer is: Istanbul and Jest are NOT working together.

Check the following pages for greater details:

https://github.com/facebook/jest/issues/101

jest uses contextify which runs JS scripts in a V8 context in native code thus bypassing all of istanbul's require and vm.runInThisContext hooks. So istanbul cover will not work since standard hookable node.js functions are not being used and pre-instrumenting files will not help either since every test runs in its own sandbox and there is no global in which to stash the coverage object.

@Ciro Costa: The config.collectCoverage is NOT working, as it's a 'TODO' function. Please check the source code.

Code coverage for Jest, How to test JavaScript code with Jest? In this Jest tutorial we'll cover only unit testing, but at the end of the article you'll find resources for the  Jest comes pre-packaged with the ability to track code coverage for the modules you're testing, but it takes a little extra work to make it track untested files as well. Let's look at what Jest can do for you, what you have to do yourself, and how to setup code coverage thresholds so you can work to improving the code coverage numbers for your projects.

If you are having trouble with --coverage not working it may also be due to having coverageReporters enabled without 'text' or 'text-summary' being added. From the docs: "Note: Setting this option overwrites the default values. Add "text" or "text-summary" to see a coverage summary in the console output." Source

Jest Tutorial for Beginners: Getting Started With JavaScript Testing, Jest comes pre-packaged with the ability to track code coverage for the modules you're testing, but it takes a little extra work to make it track untested files as well  Code coverage - Wikipedia. Code coverage is usually used as a quality metric for software eg. “Our code has to have 80%+ test coverage”. Gathering test coverage with Jest is as simple as using the --coverage flag on invocation. This post goes through how to ignore files, functions, lines and statements from coverage in Jest using

Track project code coverage with Jest from @kentcdodds on , Your app's code coverage is a metric you can use to see what percentage of the code is currently covered by unit tests. It's a useful tool you can  The problem is, the standard tools for implementing ES2015 code coverage with Jest make it hard to see at a glance if you have 100% code coverage or not because of some issues with the way Jest tells Babel to do the transformations by default, the way Babel transforms the code and implements the auxiliaryCommentBefore option and the way that

Understanding code coverage with Jest · Emma Goto, js application. Enabling code coverage into the build is very powerful as it ensures that tests are included as new code is written. Jest version 21.2.1 or higher  Running tests and creating code coverage reports for React / NodeJS project continuously with Jenkins Pipelines, Jest & Cobertura or Jest-JUnit and push to Artifactory

Enabling Code coverage For Jest, I am unit testing my ReactJS app with Jest and have added configuration to get the code coverage. The coverage works well on cli but when I  Jest supports both camelcase and dashed arg formats. The following examples will have equal result: jest --collect-coverage jest --collectCoverage Arguments can also be mixed: jest --update-snapshot --detectOpenHandles Options. Note: CLI options take precedence over values from the Configuration. jest <regexForTestFiles>--bail--cache

Comments
  • I'm not very into jest, but have you seen config.collectCoverage?
  • Never use global modules. To ensure version consistency, and package presence, always use the executable in node_modules via ./node_modules/.bin/jest --coverage. As long as the package is named in package.json, you can guarantee execution with the exact version of jest you expect.
  • How to get jest coverage only for changed files?
  • Is there an easy way to fail tests if coverage is below a certain limit? Corresponding SO-question: stackoverflow.com/questions/60512167/…
  • @ShanikaEdiriweera jestjs.io/docs/en/cli.html#--collectcoveragefromglob
  • The coverageFormats option has been removed -- looks like json and html are both generated every time.
  • I use the --coverage option but absolutely nothing different happens.
  • It's (now) called coverageReporters and the default is ["json", "lcov", "text"]. See facebook.github.io/jest/docs/…
  • dont work, Unknown option "coverageFormats" with value ["json", "html"] was found.
  • How to get jest coverage only for changed files?
  • Changed since when? You probably want to use the --watch setting for this.
  • The question was how to get Code coverage for Jest. That Istanbul and Jest don't work together might be true, but that doesn't answer the question.
  • There is no need to install yarn. Yarn is just different package manager to NPM