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 wiTop issues
#9430Meta: Native support for ES Modules355 comments · 2020-01-19#2549Jest globals differ from Node globals123 comments · 2017-01-10#10025jest.mock does not mock an ES module without Babel118 comments · 2020-05-11#7631Jest is 3x slower on all windows machines (Windows 10 and lower)111 comments · 2019-01-14#7963Very poor performance on basic tests91 comments · 2019-02-23#2070[bug] duplicate manual mock found in separate directories85 comments · 2016-11-09#6266Make jest small72 comments · 2018-05-25#2157Provide an API to flush the Promise resolution queue65 comments · 2016-11-23
Discussions
#16526Offer: priced triage packet for the 10 oldest "Needs Triage" issues ($50)0 comments · 2026-10-30#16502Released Jest upgrade eliminating braces 3.0.3 paths from Jest 29.7.01 comments · 2026-10-16#16467I am investigating what is the faster and has a smaller memory footprint compare to Jest, any recommendation?2 comments · 2026-09-27#16424Is `require(esm)` actually supported?1 comments · 2026-09-03#16276ticatravelsrl1 comments · 2026-07-10#16264Jest generating thousands of new transform cache files on every CI run and and provides no performance improvement.1 comments · 2026-06-24#16223What is the policy for 3rd party one-line node modules?1 comments · 2026-06-01#16001ORCH — CLI orchestrator for AI agent teams (Claude Code, Codex, Cursor)0 comments · 2026-03-17
Latest release
v30.5.2 v30.5.2 2026-09-18Features
- [@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