jestjs /jest

Delightful JavaScript Testing.

★ 45,474⑂ 6,716👁 576⑃ 8,117● 8,252▤ 220◈ 15
TypeScriptMITCreated 2013-12-10jestjs.io
45,474
stars
+1
6,716
forks
576
watchers
8,117
prs
8,252
issues
220
releases
15
discussions

README

 



🃏 Delightful JavaScript Testing

👩🏻‍💻 Developer Ready: A comprehensive JavaScript testing solution. Works out of the box for most JavaScript projects.

🏃🏽 Instant Feedback: Fast, interactive watch mode only runs test files related to changed files.

📸 Snapshot Testing: Capture snapshots of large objects to simplify testing and to analyze how they change over time.

See more on jestjs.io

 Table of Contents

- Getting Started
- Running from command line
- Additional Configuration
  - Generate a basic configuration file
  - Using Babel
  - Using webpack
  - Using Vite
  - Using Parcel
  - Using Typescript
- Documentation
- Badge
- Contributing
  - Code of Conduct
  - Contributing Guide
  - Good First Issues
- Credits
  - Backers
  - Sponsors
- License
- Copyright

 Getting Started



Install Jest using yarn:

bash
yarn add --dev jest


Or npm:

bash
npm install --save-dev jest


Note: Jest documentation uses yarn commands, but npm will also work. You can compare yarn and npm commands in the yarn docs, here.

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

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


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

javascript
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:

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


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

bash
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 yarn global add jest or npm install jest --global) with a 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:

bash
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

 Generate a basic configuration file

Based on your project, Jest will ask you a few questions and will create a basic configuration file with a short description for each option:

bash
yarn create jest


 Using Babel

To use Babel, install required dependencies via yarn:

bash
yarn add --dev babel-jest @babel/core @babel/preset-env


Configure Babel to target your current version of Node by creating a babel.config.js file in the root of your project:

javascript
// babel.config.js
module.exports = {
  presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
};


The ideal configuration for Babel wi

Top issues

Discussions

Latest release

v30.5.2 v30.5.2 2026-09-18
Features

- [@jest/transform] Strip TypeScript types with Node when no transformer claims a .ts, .mts or .cts file (16421)

 Fixes

- [jest-core, jest-haste-map, jest-transform] Keep require('../package.json') external when bundling, so jest --version and the transform and haste-map cache keys report the released version instead of the previous one (16422)
- [jest-each] Escape a table row's keys before building the $variable interpolation RegExp, so a column name such as count() no longer fails the whole table with Invalid regular expression, and a . or | in a column name is matched lit

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON