JavaScript CSS Other
Permalink
Failed to load latest commit information.
.circleci Run update method before installing JRE on Circle (#4318) Aug 22, 2017
.github Add a code owners file (#3985) Jul 7, 2017
.vscode Enable prettier eslint integration for vscode (#4034) Jul 14, 2017
blog Upgrade eslint (#3897) Jun 26, 2017
docs/en Fixes Troubleshooting Doc (#4320) Aug 22, 2017
examples Setup for Circle 2 (#4149) Aug 8, 2017
fixtures Use eslint plugins to run prettier (#3971) Jul 6, 2017
flow-typed add @flow to `integration_tests` (#4124) Jul 26, 2017
integration_tests Implement 'jest.requireMock' (#4292) Aug 21, 2017
packages Replace match with test and omit redundant String conversion (#4311) Aug 23, 2017
scripts Setup for Circle 2 (#4149) Aug 8, 2017
types Implement 'jest.requireMock' (#4292) Aug 21, 2017
website Update Translators.txt (#4243) Aug 10, 2017
.babelrc Convert code base to ESM import (#3778) Jun 9, 2017
.editorconfig Add .editorconfig (#3307) Apr 17, 2017
.eslintignore lint .eslintrc.js (#3938) Jun 29, 2017
.eslintrc.js Setup for Circle 2 (#4149) Aug 8, 2017
.flowconfig Upgrade flow to 0.50 (#4036) Jul 14, 2017
.gitignore Remove danger for now. Jun 13, 2017
.npmignore Add top-level .npmignore. Jul 12, 2016
.travis.yml install yarn on travis (#4155) Jul 28, 2017
.yarnrc Integrated with Yarn workspaces (#3906) Jul 7, 2017
CHANGELOG.md Fix typo in CHANGELOG (#4107) Jul 22, 2017
CONTRIBUTING.md Audit @flow and "use strict" (#3451) May 12, 2017
LICENSE update license year to range Jan 19, 2016
PATENTS Update Patent Grant Apr 10, 2015
README.md Add Badge section to README (#4040) Jul 16, 2017
appveyor.yml fix appveyor builds (#4154) Jul 28, 2017
crowdin.yaml Preserve folder hierarchy when uploading documents to crowdin (#3468) May 4, 2017
eslint_import_resolver.js Setup for Circle 2 (#4149) Aug 8, 2017
jest Audit @flow and "use strict" (#3451) May 12, 2017
jsconfig.json Add Jest Editor Support (#2192) Dec 7, 2016
karma.conf.js Remove plugins entry from karma tests (#4026) Jul 13, 2017
lerna.json Integrated with Yarn workspaces (#3906) Jul 7, 2017
package.json Setup for Circle 2 (#4149) Aug 8, 2017
test_setup_file.js Continuation to #3771 for snake case file naming (#3920) Jun 29, 2017
test_utils.js Make Jest’s Test Runner configurable. (#4240) Aug 10, 2017
yarn.lock Make jest-runner a standalone package. (#4236) Aug 10, 2017

README.md

Jest

CircleCI Build Status Travis Build Status Windows Build Status npm version

πŸƒ Delightful JavaScript Testing

  • πŸ‘©πŸ»β€πŸ’» Easy Setup: Jest is a complete and easy to set up JavaScript testing solution. In fact, Jest works out of the box for any React project.

  • πŸƒπŸ½ Instant Feedback: Failed tests run first. Fast interactive mode can switch between running all tests or only test files related to changed files.

  • πŸ“Έ Snapshot Testing: Jest can capture snapshots of React trees or other serializable values to simplify testing.

Getting Started

Install Jest using npm:

npm install --save-dev jest

Let's get started by writing a test for a hypothetical function that adds two numbers. First, create a sum.js file:

function sum(a, b) {
  return a + b;
}
module.exports = sum;

Then, create a file named sum.test.js. This will contain our actual test:

const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

Add the following section to your package.json:

{
  "scripts": {
    "test": "jest"
  }
}

Finally, run npm test and Jest will print this message:

PASS  ./sum.test.js
βœ“ adds 1 + 2 to equal 3 (5ms)

You just successfully wrote your first test using Jest!

This test used expect and toBe to test that two values were exactly identical. To learn about the other things that Jest can test, see Using Matchers.

Running from command line

You can run Jest directly from the CLI (if it's globally available in your PATH, e.g. by npm install -g jest) with variety of useful options.

Here's how to run Jest on files matching my-test, using config.json as a configuration file and display a native OS notification after the run:

jest my-test --notify --config=config.json

If you'd like to learn more about running jest through the command line, take a look at the Jest CLI Options page.

Additional Configuration

Using Babel

To use Babel, install the babel-jest and regenerator-runtime packages:

npm install --save-dev babel-jest regenerator-runtime

Note: Explicitly installing regenerator-runtime is not needed if you use npm 3 or 4 or Yarn

Don't forget to add a .babelrc file in your project's root folder. For example, if you are using ES6 and React.js with the babel-preset-es2015 and babel-preset-react presets:

{
  "presets": ["es2015", "react"]
}

You are now set up to use all ES6 features and React specific syntax.

Note: If you are using a more complicated Babel configuration, using Babel's env option, keep in mind that Jest will automatically define NODE_ENV as test. It will not use development section like Babel does by default when no NODE_ENV is set.

Note: babel-jest is automatically installed when installing Jest and will automatically transform files if a babel configuration exists in your project. To avoid this behavior, you can explicitly reset the transform configuration option:

// package.json
{
  "jest": {
    "transform": {}
  }
}

Using webpack

Jest can be used in projects that use webpack to manage assets, styles, and compilation. webpack does offer some unique challenges over other tools. Refer to the webpack guide to get started.

Using TypeScript

To use TypeScript in your tests, install the ts-jest package and the types for Jest.

npm install --save-dev ts-jest @types/jest

then modify your package.json so the jest section looks something like:

{
  "jest": {
    "transform": {
      "^.+\\.tsx?$": "<rootDir>/node_modules/ts-jest/preprocessor.js"
    },
    "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "json"
    ]
  }
}

Documentation

Learn more about using Jest at http://facebook.github.io/jest

Badge

Show the world you're using Jest β†’ tested with jest

[![tested with jest](https://img.shields.io/badge/tested_with-jest-99424f.svg)](https://github.com/facebook/jest)

Contributing

Send issues and pull requests with your ideas. For more information about contributing PRs and issues, see our Contribution Guidelines.

Good First Task is a great starting point for PRs.