Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@jest/expect-utils

jestjs66.2mMIT29.7.0TypeScript support: included

This module exports some utils for the expect function used in Jest.

readme

npm version Jest is released under the MIT license. Follow on Twitter

GitHub CI Status Coverage Status

Gitpod ready-to-code

 

🃏 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

Install Jest using yarn:

yarn add --dev jest

Or npm:

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:

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 yarn test or 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 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:

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:

yarn create jest

Using Babel

To use Babel, install required dependencies via yarn:

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:

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

The ideal configuration for Babel will depend on your project. See Babel's docs for more details.

<summary markdown="span">Making your Babel config jest-aware</summary>

Jest will set process.env.NODE_ENV to 'test' if it's not set to something else. You can use that in your configuration to conditionally setup only the compilation needed for Jest, e.g.

// babel.config.js
module.exports = api => {
  const isTest = api.env('test');
  // You can use isTest to determine what presets and plugins to use.

  return {
    // ...
  };
};

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:

// jest.config.js
module.exports = {
  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 Vite

Jest can be used in projects that use vite to serves source code over native ESM to provide some frontend tooling, vite is an opinionated tool and does offer some out-of-the box workflows. Jest is not fully supported by vite due to how the plugin system from vite works, but there is some working examples for first-class jest integration using the vite-jest, since this is not fully supported, you might as well read the limitation of the vite-jest. Refer to the vite guide to get started.

Using Parcel

Jest can be used in projects that use parcel-bundler to manage assets, styles, and compilation similar to webpack. Parcel requires zero configuration. Refer to the official docs to get started.

Using TypeScript

Jest supports TypeScript, via Babel. First, make sure you followed the instructions on using Babel above. Next, install the @babel/preset-typescript via yarn:

yarn add --dev @babel/preset-typescript

Then add @babel/preset-typescript to the list of presets in your babel.config.js.

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

However, there are some caveats to using TypeScript with Babel. Because TypeScript support in Babel is purely transpilation, Jest will not type-check your tests as they are run. If you want that, you can use ts-jest instead, or just run the TypeScript compiler tsc separately (or as part of your build process).

Documentation

Learn more about using Jest on the official site!

Badge

Show the world you're using Jest tested with jest jest tested jest

[![tested with jest](https://img.shields.io/badge/tested_with-jest-99424f.svg?logo=jest)](https://github.com/jestjs/jest)
[![jest tested](https://img.shields.io/badge/Jest-tested-eee.svg?logo=jest&labelColor=99424f)](https://github.com/jestjs/jest)
[![jest](https://jestjs.io/img/jest-badge.svg)](https://github.com/jestjs/jest)

Contributing

Development of Jest happens in the open on GitHub, and we are grateful to the community for contributing bugfixes and improvements. Read below to learn how you can take part in improving Jest.

Code of Conduct

Facebook has adopted a Code of Conduct that we expect project participants to adhere to. Please read the full text so that you can understand what actions will and will not be tolerated.

Contributing Guide

Read our contributing guide to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes to Jest.

Good First Issues

To help you get your feet wet and get you familiar with our contribution process, we have a list of good first issues that contain bugs which have a relatively limited scope. This is a great place to get started.

Credits

This project exists thanks to all the people who contribute.

Backers

Thank you to all our backers! 🙏

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website.

License

Jest is MIT licensed.

changelog

main

Features

Fixes

Performance

Chore & Maintenance

29.7.0

Features

  • [create-jest] Add npm init / yarn create initialiser for Jest projects (#14465)
  • [jest-validate] Allow deprecation warnings for unknown options (#14499)

Fixes

  • [jest-resolver] Replace unmatched capture groups in moduleNameMapper with empty string instead of undefined (#14507)
  • [jest-snapshot] Allow for strings as well as template literals in inline snapshots (#14465)
  • [@jest/test-sequencer] Calculate test runtime if perStats.duration is missing (#14473)

Performance

  • [@jest/create-cache-key-function] Cache access of NODE_ENV and BABEL_ENV (#14455)

Chore & Maintenance

  • [jest-cli] Move internal config initialisation logic to the create-jest package (#14465)

29.6.4

Fixes

  • [jest-core] Fix typo in scheduleAndRun performance marker (#14434)
  • [jest-environment-node] Make sure atob and btoa are writeable in Node 20 (#14446)
  • [jest-worker] Additional error wrapper for parentPort.postMessage to fix unhandled DataCloneError. (#14437)

29.6.3

Fixes

  • [expect, @jest/expect-utils] ObjectContaining support sumbol as key (#14414)
  • [expect] Remove @types/node from dependencies (#14385)
  • [jest-core] Use workers in watch mode by default to avoid crashes (#14059 & #14085).
  • [jest-reporters] Update istanbul-lib-instrument dependency to v6. (#14401)
  • [jest-mock] Revert #13692 as it was a breaking change (#14429)
  • [jest-mock] Revert #13866 as it was a breaking change (#14429)
  • [jest-mock] Revert #13867 as it was a breaking change (#14429)
  • [@jest/reporters] Marks Reporter's hooks as optional (#14433)
  • [jest-runtime] Fix dynamic ESM import module bug when loaded module through jest.isolateModulesAsync (#14397)

Chore & Maintenance

  • [jest-changed-files, jest-circus, jest-console, @jest/core, @jest/runtime, @jest/transform] Use invariant and notEmpty from jest-util rather than own internal (#14366)

29.6.2

Fixes

  • [jest-circus] Fix snapshot matchers in concurrent tests when nr of tests exceeds maxConcurrency (#14335)
  • [@jest/core] When running global setup and teardown, do not try to change the message property of the thrown error object when the message property is unwritable (#14113)
  • [jest-snapshot] Move @types/prettier from dependencies to devDependencies (#14328)
  • [jest-snapshot] Throw an explicit error if Prettier v3 is used (#14367)
  • [jest-reporters] Add "skipped" and "todo" symbols to Github Actions Reporter (#14309)

Chore & Maintenance

  • [@jest/core] Use pluralize from jest-util rather than own internal (#14322)

29.6.1

Fixes

  • [jest-circus] Revert #14110 as it was a breaking change (#14304)

29.6.0

Features

  • [jest-circus, jest-snapshot] Add support for snapshot matchers in concurrent tests (#14139)
  • [jest-cli] Include type definitions to generated config files (#14078)
  • [jest-snapshot] Support arrays as property matchers (#14025)
  • [jest-core, jest-circus, jest-reporter, jest-runner] Added support for reporting about start individual test cases using jest-circus (#14174)

Fixes

  • [jest-circus] Prevent false test failures caused by promise rejections handled asynchronously (#14110)
  • [jest-config] Handle frozen config object (#14054)
  • [jest-config] Allow coverageDirectory and collectCoverageFrom in project config (#14180)
  • [jest-core] Always use workers in watch mode to avoid crashes (#14059).
  • [jest-environment-jsdom, jest-environment-node] Fix assignment of customExportConditions via testEnvironmentOptions when custom env subclass defines a default value (#13989)
  • [jest-matcher-utils] Fix copying value of inherited getters (#14007)
  • [jest-mock] Tweak typings to allow jest.replaceProperty() replace methods (#14008)
  • [jest-mock] Improve user input validation and error messages of spyOn and replaceProperty methods (#14087)
  • [jest-runtime] Bind jest.isolateModulesAsync to this (#14083)
  • [jest-runtime] Forward wrapperLength to the Script constructor as columnOffset for accurate debugging (#14148)
  • [jest-runtime] Guard _isMockFunction access with in (#14188)
  • [jest-snapshot] Fix a potential bug when not using prettier and improve performance (#14036)
  • [@jest/transform] Do not instrument .json modules (#14048)
  • [jest-worker] Restart a shut down worker before sending it a task (#14015)

Chore & Maintenance

  • [*] Update semver dependency to get vulnerability fix (#14262)
  • [docs] Updated documentation for the --runTestsByPath CLI command (#14004)
  • [docs] Updated documentation regarding the synchronous fallback when asynchronous code transforms are unavailable (#14056)
  • [docs] Update jest statistics of use and downloads in website Index.

29.5.0

Features

  • [jest-changed-files] Support Sapling (#13941)
  • [jest-circus, @jest/cli, jest-config] Add feature to randomize order of tests via CLI flag or through the config file(#12922)
  • [jest-cli, jest-config, @jest/core, jest-haste-map, @jest/reporters, jest-runner, jest-runtime, @jest/types] Add workerThreads configuration option to allow using worker threads for parallelization (#13939)
  • [jest-cli] Export yargsOptions (#13970)
  • [jest-config] Add openHandlesTimeout option to configure possible open handles warning. (#13875)
  • [@jest/create-cache-key-function] Allow passing length argument to createCacheKey() function and set its default value to 16 on Windows (#13827)
  • [jest-message-util] Add support for AggregateError (#13946 & #13947)
  • [jest-message-util] Add support for Error causes in test and it (#13935 & #13966)
  • [jest-reporters] Add summaryThreshold option to summary reporter to allow overriding the internal threshold that is used to print the summary of all failed tests when the number of test suites surpasses it (#13895)
  • [jest-runtime] Expose @sinonjs/fake-timers async APIs functions advanceTimersByTimeAsync(msToRun) (tickAsync(msToRun)), advanceTimersToNextTimerAsync(steps) (nextAsync), runAllTimersAsync (runAllAsync), and runOnlyPendingTimersAsync (runToLastAsync) (#13981)
  • [jest-runtime, @jest/transform] Allow V8 coverage provider to collect coverage from files which were not loaded explicitly (#13974)
  • [jest-snapshot] Add support to cts and mts TypeScript files to inline snapshots (#13975)
  • [jest-worker] Add start method to worker farms (#13937)
  • [jest-worker] Support passing a URL as path to worker (#13982)

Fixes

  • [babel-plugin-jest-hoist] Fix unwanted hoisting of nested jest usages (#13952)
  • [jest-circus] Send test case results for todo tests (#13915)
  • [jest-circus] Update message printed on test timeout (#13830)
  • [jest-circus] Avoid creating the word "testfalse" when takesDoneCallback is false in the message printed on test timeout AND updated timeouts test (#13954)
  • [jest-environment-jsdom] Stop setting document to null on teardown (#13972)
  • [@jest/expect-utils] Update toStrictEqual() to be able to check jest.fn().mock.calls (#13960)
  • [@jest/test-result] Allow TestResultsProcessor type to return a Promise (#13950)

Chore & Maintenance

  • [jest-snapshot] Remove dependency on jest-haste-map (#13977)

29.4.3

Features

  • [expect] Update toThrow() to be able to use error causes (#13606)
  • [jest-core] allow to use workerIdleMemoryLimit with only 1 worker or runInBand option (#13846)
  • [jest-message-util] Add support for error causes (#13868 & #13912)
  • [jest-runtime] Revert import assertions for JSON modules as it's been relegated to Stage 2 (#13911)

Fixes

  • [@jest/expect-utils] subsetEquality should consider also an object's inherited string keys (#13824)
  • [jest-mock] Clear mock state when jest.restoreAllMocks() is called (#13867)
  • [jest-mock] Prevent mockImplementationOnce and mockReturnValueOnce bleeding into withImplementation (#13888)
  • [jest-mock] Do not restore mocks when jest.resetAllMocks() is called (#13866)

29.4.2

Features

Fixes

  • [expect, @jest/expect] Provide type of actual as a generic argument to Matchers to allow better-typed extensions (#13848)
  • [jest-circus] Added explicit mention of test failing because done() is not being called in error message (#13847)
  • [jest-runtime] Handle CJS re-exports of node core modules from ESM (#13856)
  • [jest-transform] Downgrade write-file-atomic to v4 (#13853)
  • [jest-worker] Ignore IPC messages not intended for Jest (#13543)

Chore & Maintenance

  • [*] make sure to exclude .eslintcache from published module (#13832)
  • [docs] Cleanup incorrect links in CHANGELOG.md (#13857)

29.4.1

Features

  • [expect, jest-circus, @jest/types] Implement numPassingAsserts of testResults to track the number of passing asserts in a test (#13795)
  • [jest-core] Add newlines to JSON output (#13817)
  • [@jest/reporters] Automatic log folding in GitHub Actions Reporter (#13626)

Fixes

  • [@jest/expect-utils] toMatchObject diffs should include Symbol properties (#13810)
  • [jest-runtime] Handle missing replaceProperty (#13823)
  • [@jest/types] Add partial support for done callbacks in typings of each (#13756)

29.4.0

Features

  • [expect, @jest/expect-utils] Support custom equality testers (#13654)
  • [jest-config, jest-worker] Use os.availableParallelism if available to calculate number of workers to spawn (#13738)
  • [@jest/globals, jest-mock] Add jest.replaceProperty() that replaces property value (#13496)
  • [jest-haste-map] ignore Sapling vcs directories (.sl/) (#13674)
  • [jest-resolve] Support subpath imports (#13705, #13723, #13777)
  • [jest-runtime] Add jest.isolateModulesAsync for scoped module initialization of asynchronous functions (#13680)
  • [jest-runtime] Add jest.isEnvironmentTornDown function (#13741)
  • [jest-test-result] Added skipped and focused status to FormattedTestResult (#13700)
  • [jest-transform] Support for asynchronous createTransformer (#13762)

Fixes

  • [jest-environment-node] Fix non-configurable globals (#13687)
  • [@jest/expect-utils] toMatchObject should handle Symbol properties (#13639)
  • [jest-mock] Fix mockReset and resetAllMocks undefined return value(#13692)
  • [jest-resolve] Add global paths to require.resolve.paths (#13633)
  • [jest-resolve] Correct node core module detection when using node: specifiers (#13806)
  • [jest-runtime] Support WASM files that import JS resources (#13608)
  • [jest-runtime] Use the scriptTransformer cache in jest-runner (#13735)
  • [jest-runtime] Enforce import assertions when importing JSON in ESM (#12755 & #13805)
  • [jest-snapshot] Make sure to import babel outside of the sandbox (#13694)
  • [jest-transform] Ensure the correct configuration is passed to preprocessors specified multiple times in the transform option (#13770)

Chore & Maintenance

  • [@jest/fake-timers] Update @sinonjs/fake-timers (#13612)
  • [docs] Improve custom puppeteer example to prevent worker warnings (#13619)

29.3.1

Fixes

  • [jest-config] Do not warn about preset in ProjectConfig (#13583)

Performance

  • [jest-transform] Defer creation of cache directory (#13420)

29.3.0

Features

  • [jest-runtime] Support WebAssembly (Wasm) imports in ESM modules (#13505)

Fixes

  • [jest-config] Add config validation for projects option (#13565)
  • [jest-mock] Treat cjs modules as objects so they can be mocked (#13513)
  • [jest-worker] Throw an error instead of hanging when jest workers terminate unexpectedly (#13566)

Chore & Maintenance

  • [@jest/transform] Update convert-source-map (#13509)
  • [docs] Mention toStrictEqual in UsingMatchers docs. (#13560)

29.2.2

Fixes

  • [@jest/test-sequencer] Make sure sharding does not produce empty groups (#13476)
  • [jest-circus] Test marked as todo are shown as todo when inside a focussed describe (#13504)
  • [jest-mock] Ensure mock resolved and rejected values are promises from correct realm (#13503)
  • [jest-snapshot] Don't highlight passing asymmetric property matchers in snapshot diff (#13480)

Chore & Maintenance

  • [docs] Update link to Jest 28 upgrade guide in error message (#13483)
  • [jest-runner, jest-watcher] Update emittery (#13490)

29.2.1

Features

  • [@jest/globals, jest-mock] Add jest.Spied* utility types (#13440)

Fixes

  • [jest-environment-node] make globalThis.performance writable for Node 19 and fake timers (#13467)
  • [jest-mock] Revert #13398 to restore mocking of setters (#13472)

Performance

  • [*] Use sha1 instead of sha256 for hashing (#13421)

29.2.0

Features

  • [@jest/cli, jest-config] A seed for the test run will be randomly generated, or set by a CLI option (#13400)
  • [@jest/cli, jest-config] --show-seed will display the seed value in the report, and can be set via a CLI flag or through the config file (#13400)
  • [jest-config] Add readInitialConfig utility function (#13356)
  • [jest-core] Allow testResultsProcessor to be async (#13343)
  • [@jest/environment, jest-environment-node, jest-environment-jsdom, jest-runtime] Add getSeed() to the jest object (#13400)
  • [expect, @jest/expect-utils] Allow isA utility to take a type argument (#13355)
  • [expect] Expose AsyncExpectationResult and SyncExpectationResult types (#13411)

Fixes

  • [babel-plugin-jest-hoist] Ignore TSTypeQuery when checking for hoisted references (#13367)
  • [jest-core] Fix detectOpenHandles false positives for some special objects such as TLSWRAP (#13414)
  • [jest-mock] Fix mocking of getters and setters on classes (#13398)
  • [jest-reporters] Revert: Transform file paths into hyperlinks (#13399)
  • [@jest/types] Infer type of each table correctly when the table is a tuple or array (#13381)
  • [@jest/types] Rework typings to allow the *ReturnedWith matchers to be called with no argument (#13385)

Chore & Maintenance

  • [*] Update @babel/* deps, resulting in slightly different stack traces for each (#13422)

Performance

  • [jest-runner] Do not instrument v8 coverage data if coverage should not be collected (#13282)

29.1.2

Fixes

  • [expect, @jest/expect] Revert buggy inference of argument types for *CalledWith and *ReturnedWith matchers introduced in 29.1.0 (#13339)
  • [jest-worker] Add missing dependency on jest-util (#13341)

29.1.1

Fixes

  • [jest-mock] Revert #13145 which broke mocking of transpiled ES modules

29.1.0

Features

  • [expect, @jest/expect] Support type inference for function parameters in CalledWith assertions (#13268)
  • [expect, @jest/expect] Infer type of *ReturnedWith matchers argument (#13278)
  • [@jest/environment, jest-runtime] Allow jest.requireActual and jest.requireMock to take a type argument (#13253)
  • [@jest/environment] Allow jest.mock and jest.doMock to take a type argument (#13254)
  • [@jest/fake-timers] Add jest.now() to return the current fake clock time (#13244, #13246)
  • [@jest/mock] Add withImplementation method for temporarily overriding a mock (#13281)
  • [expect] Export toThrow* matchers (#13328)

Fixes

  • [jest-circus, jest-jasmine2] Fix error messages for Node's assert.throes (#13322)
  • [jest-haste-map] Remove __proto__ usage (#13256)
  • [jest-mock] Improve spyOn typings to handle optional properties (#13247)
  • [jest-mock] Fix mocking of getters and setters on classes (#13145)
  • [jest-snapshot] Throw useful error when an array is passed as property matchers (#13263)
  • [jest-snapshot] Prioritize parser used in the project (#13323)
  • [jest-transform] Attempt to work around issues with atomic writes on Windows (#11423)

29.0.3

Features

  • [@jest/environment, jest-runtime] Allow passing a generic type argument to jest.createMockFromModule<T>() method (#13202)
  • [expect] Expose ExpectationResult type (#13240)
  • [jest-snapshot] Expose Context type (#13240)
  • [@jest/globals] Add jest.Mock type helper (#13235)

Fixes

  • [jest-core] Capture execError during TestScheduler.scheduleTests and dispatch to reporters (#13203)
  • [jest-resolve] Make sure to resolve module paths after looking at exports (#13242)
  • [jest-resolve] Improve error on module not found deep in the require stack (#8704)
  • [jest-snapshot] Fix typings of snapshot matchers (#13240)

Chore & Maintenance

  • [*] Fix inconsistent workspace prefixes (#13217)
  • [jest-haste-map] Expose a minimal public API to TypeScript (#13023)

29.0.2

Features

  • [jest-transform] Expose TransformFactory type (#13184)

Fixes

  • [babel-plugin-jest-hoist] Support imported jest in mock factory (#13188)
  • [jest-mock] Align the behavior and return type of generateFromMetadata method (#13207)
  • [jest-runtime] Support jest.resetModules() with ESM (#13211)

29.0.1

Fixes

  • [jest-snapshot] Pass snapshotFormat through when diffing snapshots (#13181)

29.0.0

Features

  • [expect] [BREAKING] Differentiate between MatcherContext MatcherUtils and MatcherState types (#13141)
  • [jest-circus] Add support for test.failing.each (#13142)
  • [jest-config] [BREAKING] Make snapshotFormat default to escapeString: false and printBasicPrototype: false (#13036)
  • [jest-config] [BREAKING] Remove undocumented collectCoverageOnlyFrom option (#13156)
  • [jest-environment-jsdom] [BREAKING] Upgrade to jsdom@20 (#13037, #13058)
  • [@jest/globals] Add jest.Mocked, jest.MockedClass, jest.MockedFunction and jest.MockedObject utility types (#12727)
  • [jest-mock] [BREAKING] Refactor Mocked* utility types. MaybeMockedDeep and MaybeMocked became Mocked and MockedShallow respectively; only deep mocked variants of MockedClass, MockedFunction and MockedObject are exported (#13123, #13124)
  • [jest-mock] [BREAKING] Change the default jest.mocked helper’s behavior to deep mocked (#13125)
  • [jest-snapshot] [BREAKING] Let babel find config when updating inline snapshots (#13150)
  • [@jest/test-result, @jest/types] [BREAKING] Replace Bytes and Milliseconds types with number (#13155)
  • [jest-worker] Adds workerIdleMemoryLimit option which is used as a check for worker memory leaks >= Node 16.11.0 and recycles child workers as required (#13056, #13105, #13106, #13107)
  • [pretty-format] [BREAKING] Remove ConvertAnsi plugin in favour of jest-serializer-ansi-escapes (#13040)
  • [pretty-format] Allow to opt out from sorting object keys with compareKeys: null (#12443)

Fixes

  • [jest-config] Fix testing multiple projects with TypeScript config files (#13099)
  • [@jest/expect-utils] Fix deep equality of ImmutableJS Record (#13055)
  • [jest-haste-map] Increase the maximum possible file size that jest-haste-map can handle (#13094)
  • [jest-runtime] Properly support CJS re-exports from dual packages (#13170)
  • [jest-snapshot] Make prettierPath optional in SnapshotState (#13149)
  • [jest-snapshot] Fix parsing error from inline snapshot files with JSX (#12760)
  • [jest-worker] When a process runs out of memory worker exits correctly and doesn't spin indefinitely (#13054)

Chore & Maintenance

  • [*] [BREAKING] Drop support for Node v12 and v17 (#13033)
  • [docs] Fix webpack name (#13049)
  • [docs] Explicit how to set n for --bail (#13128)
  • [docs] Update Enzyme URL (#13166)
  • [jest-leak-detector] Remove support for weak-napi (#13035)
  • [jest-snapshot] [BREAKING] Require rootDir as argument to SnapshotState (#13150)

28.1.3

Features

  • [jest-leak-detector] Use native FinalizationRegistry when it exists to get rid of external C dependency (#12973)

Fixes

  • [jest-changed-files] Fix a lock-up after repeated invocations (#12757)
  • [@jest/expect-utils] Fix deep equality of ImmutableJS OrderedSets (#12977)
  • [jest-mock] Add index signature support for spyOn types (#13013, #13020)
  • [jest-snapshot] Fix indentation of awaited inline snapshots (#12986)

Chore & Maintenance

  • [*] Replace internal usage of pretty-format/ConvertAnsi with jest-serializer-ansi-escapes (#12935, #13004)
  • [docs] Update spyOn docs (#13000)

28.1.2

Fixes

  • [jest-runtime] Avoid star type import from @jest/globals (#12949)

Chore & Maintenance

  • [docs] Mention that jest-codemods now supports Sinon (#12898)

28.1.1

Features

  • [jest] Expose Config type (#12848)
  • [@jest/reporters] Improve GitHubActionsReporters annotation format (#12826)
  • [@jest/types] Infer argument types passed to test and describe callback functions from each tables (#12885, #12905)

Fixes

  • [@jest/expect-utils] Fix deep equality of ImmutableJS OrderedMaps (#12899)
  • [jest-docblock] Handle multiline comments in parseWithComments (#12845)
  • [jest-mock] Improve spyOn error messages (#12901)
  • [jest-runtime] Correctly report V8 coverage with resetModules: true (#12912)
  • [jest-worker] Make JestWorkerFarm helper type to include methods of worker module that take more than one argument (#12839)

Chore & Maintenance

  • [docs] Updated docs to indicate that jest-environment-jsdom is a separate package #12828
  • [docs] Document the comments used by coverage providers #12835
  • [docs] Use docusaurus-remark-plugin-tab-blocks to format tabs with code examples (#12859)
  • [jest-haste-map] Bump walker version (#12324)

28.1.0

Features

  • [jest-circus] Add failing test modifier that inverts the behavior of tests (#12610)
  • [jest-environment-node, jest-environment-jsdom] Allow specifying customExportConditions (#12774)

Fixes

  • [expect] Adjust typings of lastCalledWith, nthCalledWith, toBeCalledWith matchers to allow a case there a mock was called with no arguments (#12807)
  • [@jest/expect-utils] Fix deep equality of ImmutableJS Lists (#12763)
  • [jest-core] Do not collect SIGNREQUEST as open handles (#12789)

Chore & Maintenance

  • [docs] Specified documentation about --filter CLI docs (#12799)
  • [@jest-reporters] Move helper functions from utils.ts into separate files (#12782)
  • [jest-resolve] Replace process.versions.pnp type declaration with @types/pnpapi devDependency (#12783)

28.0.3

Fixes

  • [jest-config] Normalize reporters option defined in presets (#12769)
  • [@jest/reporters] Fix trailing slash in matching coverageThreshold key (#12714)
  • [jest-resolve] Fix (experimental) ESM module mocking for re-exports (#12766)
  • [@jest/transform] Throw better error if an invalid return value if encountered (#12764)

Chore & Maintenance

  • [docs] Fix typo in --shard CLI docs (#12761)

28.0.2

Features

  • [jest-worker] Add JestWorkerFarm helper type (#12753)

Fixes

  • [*] Lower Node 16 requirement to 16.10 from 16.13 due to a Node bug that causes memory and performance issues (#12754)

28.0.1

Features

  • [jest-resolve] Expose ResolverOptions type (#12736)

Fixes

  • [expect] Add missing dependency jest-util (#12744)
  • [jest-circus] Improve test.concurrent (#12748)
  • [jest-resolve] Correctly throw an error if jsdom test environment is used, but not installed (#12749)

Chore & Maintenance

  • [jest-serializer] Remove deprecated module from source tree (#12735)

28.0.0

Features

  • [babel-jest] Export createTransformer function (#12399)
  • [expect] Expose AsymmetricMatchers, MatcherFunction and MatcherFunctionWithState interfaces (#12363, #12376)
  • [jest-circus] Support error logging before retry (#12201)
  • [jest-circus, jest-jasmine2] Allowed classes and functions as describe and it/test names (#12484)
  • [jest-cli, jest-config] [BREAKING] Remove testURL config, use testEnvironmentOptions.url instead (#10797)
  • [jest-cli, jest-core] Add --shard parameter for distributed parallel test execution (#12546)
  • [jest-cli] [BREAKING] Remove undocumented --timers option (#12572)
  • [jest-config] [BREAKING] Stop shipping jest-environment-jsdom by default (#12354)
  • [jest-config] [BREAKING] Stop shipping jest-jasmine2 by default (#12355)
  • [jest-config, @jest/types] Add ci to GlobalConfig (#12378)
  • [jest-config] [BREAKING] Rename moduleLoader to runtime (#10817)
  • [jest-config] [BREAKING] Rename extraGlobals to sandboxInjectedGlobals (#10817)
  • [jest-config] [BREAKING] Throw an error instead of showing a warning if multiple configs are used (#12510)
  • [jest-config] [BREAKING] Do not normalize long deprecated configuration options preprocessorIgnorePatterns, scriptPreprocessor, setupTestFrameworkScriptFile and testPathDirs (#12701)
  • [jest-cli, jest-core] Add --ignoreProjects CLI argument to ignore test suites by project name (#12620)
  • [jest-core] Pass project config to globalSetup/globalTeardown function as second argument (#12440)
  • [jest-core] Stabilize test runners with event emitters (#12641)
  • [jest-core, jest-watcher] [BREAKING] Move TestWatcher class to jest-watcher package (#12652)
  • [jest-core] Allow using Summary Reporter as stand-alone reporter (#12687)
  • [jest-environment-jsdom] [BREAKING] Upgrade jsdom to 19.0.0 (#12290)
  • [jest-environment-jsdom] [BREAKING] Add default browser condition to exportConditions for jsdom environment (#11924)
  • [jest-environment-jsdom] [BREAKING] Pass global config to Jest environment constructor for jsdom environment (#12461)
  • [jest-environment-jsdom] [BREAKING] Second argument context to constructor is mandatory (#12469)
  • [jest-environment-node] [BREAKING] Add default node and node-addon conditions to exportConditions for node environment (#11924)
  • [jest-environment-node] [BREAKING] Pass global config to Jest environment constructor for node environment (#12461)
  • [jest-environment-node] [BREAKING] Second argument context to constructor is mandatory (#12469)
  • [jest-environment-node] Add all available globals to test globals, not just explicit ones (#12642, #12696)
  • [@jest/expect] New module which extends expect with jest-snapshot matchers (#12404, #12410, #12418)
  • [@jest/expect-utils] New module exporting utils for expect (#12323)
  • [@jest/fake-timers] [BREAKING] Rename timers configuration option to fakeTimers (#12572)
  • [@jest/fake-timers] [BREAKING] Allow jest.useFakeTimers() and projectConfig.fakeTimers to take an options bag (#12572)
  • [jest-haste-map] [BREAKING] HasteMap.create now returns a promise (#12008)
  • [jest-haste-map] Add support for dependencyExtractor written in ESM (#12008)
  • [jest-mock] [BREAKING] Rename exported utility types ClassLike, FunctionLike, ConstructorLikeKeys, MethodLikeKeys, PropertyLikeKeys; remove exports of utility types ArgumentsOf, ArgsType, ConstructorArgumentsOf - TS builtin utility types ConstructorParameters and Parameters should be used instead (#12435, #12489)
  • [jest-mock] Improve isMockFunction to infer types of passed function (#12442)
  • [jest-mock] [BREAKING] Improve the usage of jest.fn generic type argument (#12489)
  • [jest-mock] Add support for auto-mocking async generator functions (#11080)
  • [jest-mock] Add contexts member to mock functions (#12601)
  • [@jest/reporters] Add GitHub Actions reporter (#11320, #12658)
  • [@jest/reporters] Pass reporterContext to custom reporter constructors as third argument (#12657)
  • [jest-resolve] [BREAKING] Add support for package.json exports (#11961, #12373)
  • [jest-resolve] Support package self-reference (#12682)
  • [jest-resolve, jest-runtime] Add support for data: URI import and mock (#12392)
  • [jest-resolve, jest-runtime] Add support for async resolver (#11540)
  • [jest-resolve] [BREAKING] Remove browser?: boolean from resolver options, conditions: ['browser'] should be used instead (#12707)
  • [jest-resolve] Expose JestResolver, AsyncResolver, SyncResolver, PackageFilter, PathFilter and PackageJSON types (#12707, (#12712)
  • [jest-runner] Allow setupFiles module to export an async function (#12042)
  • [jest-runner] Allow passing testEnvironmentOptions via docblocks (#12470)
  • [jest-runner] Expose CallbackTestRunner, EmittingTestRunner abstract classes and CallbackTestRunnerInterface, EmittingTestRunnerInterface to help typing third party runners (#12646, #12715)
  • [jest-runner] Lock version of source-map-support to 0.5.13 (#12720)
  • [jest-runtime] [BREAKING] Runtime.createHasteMap now returns a promise (#12008)
  • [jest-runtime] Calling jest.resetModules function will clear FS and transform cache (#12531)
  • [jest-runtime] [BREAKING] Remove Context type export, it must be imported from @jest/test-result (#12685)
  • [jest-runtime] Add import.meta.jest (#12698)
  • [@jest/schemas] New module for JSON schemas for Jest's config (#12384)
  • [@jest/source-map] Migrate from source-map to @jridgewell/trace-mapping (#12692)
  • [jest-transform] [BREAKING] Make it required for process() and processAsync() methods to always return structured data (#12638)
  • [jest-test-result] Add duration property to JSON test output (#12518)
  • [jest-watcher] [BREAKING] Make PatternPrompt class to take entityName as third constructor parameter instead of this._entityName (#12591)
  • [jest-worker] [BREAKING] Allow only absolute workerPath (#12343)
  • [jest-worker] [BREAKING] Default to advanced serialization when using child process workers (#10983)
  • [pretty-format] New maxWidth parameter (#12402)

Fixes

  • [*] Use sha256 instead of md5 as hashing algortihm for compatibility with FIPS systems (#12722)
  • [babel-jest] [BREAKING] Pass rootDir as root in Babel's options (#12689)
  • [expect] Move typings of .not, .rejects and .resolves modifiers outside of Matchers interface (#12346)
  • [expect] Throw useful error if expect.extend is called with invalid matchers (#12488)
  • [expect] Fix iterableEquality ignores other properties (#8359)
  • [expect] Fix print for the closeTo matcher (#12626)
  • [jest-changed-files] Improve changedFilesWithAncestor pattern for Mercurial SCM (#12322)
  • [jest-circus, @jest/types] Disallow undefined value in TestContext type (#12507)
  • [jest-config] Correctly detect CI environment and update snapshots accordingly (#12378)
  • [jest-config] Pass moduleTypes to ts-node to enforce CJS when transpiling (#12397)
  • [jest-config] [BREAKING] Add mjs and cjs to default moduleFileExtensions config (#12578)
  • [jest-config, jest-haste-map] Allow searching for tests in node_modules by exposing retainAllFiles (#11084)
  • [jest-core] [BREAKING] Exit with status 1 if no tests are found with --findRelatedTests flag (#12487)
  • [jest-core] Do not report unref-ed subprocesses as open handles (#12705)
  • [jest-each] %# is not replaced with index of the test case (#12517)
  • [jest-each] Fixes error message with incorrect count of missing arguments (#12464)
  • [jest-environment-jsdom] Make jsdom accessible to extending environments again (#12232)
  • [jest-environment-jsdom] Log JSDOM errors more cleanly (#12386)
  • [jest-environment-node] Add MessageChannel, MessageEvent to globals (#12553)
  • [jest-environment-node] Add structuredClone to globals (#12631)
  • [@jest/expect-utils] [BREAKING] Fix false positives when looking for undefined prop (#8923)
  • [jest-haste-map] Don't use partial results if file crawl errors (#12420)
  • [jest-haste-map] Make watchman existence check lazy+async (#12675)
  • [jest-jasmine2, jest-types] [BREAKING] Move all jasmine specific types from @jest/types to its own package (#12125)
  • [jest-jasmine2] Do not set duration to 0 for skipped tests (#12518)
  • [jest-matcher-utils] Pass maxWidth to pretty-format to avoid printing every element in arrays by default (#12402)
  • [jest-mock] Fix function overloads for spyOn to allow more correct type inference in complex object (#12442)
  • [jest-mock] Handle overridden Function.name property (#12674)
  • [@jest/reporters] Notifications generated by the --notify flag are no longer persistent in GNOME Shell. (#11733)
  • [@jest/reporters] Move missing icon file which is needed for NotifyReporter class. (#12593)
  • [@jest/reporters] Update v8-to-istanbul (#12697)
  • [jest-resolver] Call custom resolver with core node.js modules (#12654)
  • [jest-runner] Correctly resolve source-map-support (#12706)
  • [jest-worker] Fix Farm execution results memory leak (#12497)

Chore & Maintenance

  • [*] [BREAKING] Drop support for Node v10 and v15 and target first LTS 16.13.0 (#12220)
  • [*] [BREAKING] Drop support for `typescript@3.8, minimum version is now4.3` (#11142, #12648)
  • [*] Bundle all .d.ts files into a single index.d.ts per module (#12345)
  • [*] Use globalThis instead of global (#12447)
  • [babel-jest] [BREAKING] Only export createTransformer (#12407)
  • [docs] Add note about not mixing done() with Promises (#11077)
  • [docs, examples] Update React examples to match with the new React guidelines for code examples (#12217)
  • [docs] Add clarity for module factory hoisting limitations (#12453)
  • [docs] Add more information about how code transformers work (#12407)
  • [docs] Add upgrading guide (#12633)
  • [expect] [BREAKING] Remove support for importing build/utils (#12323)
  • [expect] [BREAKING] Migrate to ESM (#12344)
  • [expect] [BREAKING] Snapshot matcher types are moved to @jest/expect (#12404)
  • [jest-cli] Update yargs to v17 (#12357)
  • [jest-config] [BREAKING] Remove getTestEnvironment export (#12353)
  • [jest-config] [BREAKING] Rename config option name to id (#11981)
  • [jest-create-cache-key-function] Added README.md file with basic usage instructions (#12492)
  • [@jest/core] Use index.ts instead of jest.ts as main export (#12329)
  • [jest-environment-jsdom] [BREAKING] Migrate to ESM (#12340)
  • [jest-environment-node] [BREAKING] Migrate to ESM (#12340)
  • [jest-haste-map] Remove legacy isRegExpSupported (#12676)
  • [@jest/fake-timers] Update @sinonjs/fake_timers to v9 (#12357)
  • [jest-jasmine2, jest-runtime] [BREAKING] Use Symbol to pass jest.setTimeout value instead of jasmine specific logic (#12124)
  • [jest-phabricator] [BREAKING] Migrate to ESM (#12341)
  • [jest-resolve] [BREAKING] Make requireResolveFunction argument mandatory (#12353)
  • [jest-runner] [BREAKING] Remove some type exports from @jest/test-result (#12353)
  • [jest-runner] [BREAKING] Second argument to constructor (Context) is not optional (#12640)
  • [jest-serializer] [BREAKING] Deprecate package in favour of using v8 APIs directly (#12391)
  • [jest-snapshot] [BREAKING] Migrate to ESM (#12342)
  • [jest-transform] Update write-file-atomic to v4 (#12357)
  • [jest-types] [BREAKING] Remove Config.Glob and Config.Path (#12406)
  • [jest] Use index.ts instead of jest.ts as main export (#12329)

Performance

  • [jest-haste-map] [BREAKING] Default to node crawler over shelling out to find if watchman is not enabled (#12320)

27.5.1

Features

  • [jest-config] Support comments in JSON config file (#12316)
  • [pretty-format] Expose ConvertAnsi plugin (#12308)

Fixes

  • [expect] Add type definitions for asymmetric closeTo matcher (#12304)
  • [jest-cli] Load binary via exported API (#12315)
  • [jest-config] Replace jsonlint with parse-json (#12316)
  • [jest-repl] Make module importable (#12311 & #12315)

Chore & Maintenance

  • [*] Avoid anonymous default exports (#12313)

27.5.0

Features

  • [expect] Add asymmetric matcher expect.closeTo (#12243)
  • [jest-mock] Added mockFn.mock.lastCall to retrieve last argument (#12285)

Fixes

  • [expect] Add a fix for .toHaveProperty('') (#12251)
  • [jest-each, @jest/globals] Allow passing ReadonlyArray type of a table to describe.each and test.each (#12297)
  • [@jest/globals] Add missing options argument to jest.doMock typing (#12292)
  • [jest-environment-node] Add atob and btoa (#12269)
  • [jest-matcher-utils] Correct diff for expected asymmetric matchers (#12264)
  • [jest-message-util] Fix .getTopFrame() (and toMatchInlineSnapshot()) with mjs files (#12277)

Chore & Maintenance

  • [*] Update graceful-fs to ^4.2.9 (#11749)

Performance

  • [jest-resolve] perf: skip error creation on not found stat calls (#11749)

27.4.7

Fixes

  • jest-config Add missing @babel/core dependency (#12216)

27.4.6

Fixes

  • [jest-environment-node] Add AbortSignal (#12157)
  • [jest-environment-node] Add Missing node global performance (#12002)
  • [jest-runtime] Handle missing mocked property (#12213)
  • [@jest/transform] Update dependency package pirates to 4.0.4 (#12002)

Performance

  • jest-config perf: only register ts-node once when loading TS config files (#12160)

27.4.5

Fixes

  • [jest-worker] Stop explicitly passing process.env (#12141)

27.4.4

Fixes

  • [babel-jest] Add process.version chunk to the cache key (#12122)
  • [jest-environment] Add mocked to jest object (#12133)
  • [jest-worker] Stop explicitly passing execArgv (#12128)

Chore & Maintenance

  • [website] Fix the card front that looks overlapping part of the card back

27.4.3

Fixes

  • [jest-environment-jsdom] Remove @types/jsdom dependency (and make its dom property private) (#12107)

27.4.2

Fixes

  • [jest-worker] Add additional execArgv to filter (#12103)

27.4.1

Fixes

  • [jest-worker] Filter execArgv correctly (#12097)

27.4.0

Features

  • [expect] Enhancing the toHaveProperty matcher to support array selection (#12092)
  • [jest-core] Add support for testResultsProcessor written in ESM (#12006)
  • [jest-diff, pretty-format] Add compareKeys option for custom sorting of object keys (#11992)
  • [jest-mock] Add ts-jest mock util functions (#12089)

Fixes

  • [expect] Allow again expect.Matchers generic with single value (#11986)
  • [jest-circus, jest-jasmine2] Avoid false concurrent test failures due to unhandled promise rejections (#11987)
  • [jest-config] Add missing slash dependency to package.json (#12080)
  • [jest-core] Incorrect detection of open ZLIB handles (#12022)
  • [jest-diff] Break dependency cycle (#10818)
  • [jest-environment-jsdom] Add @types/jsdom dependency (#11999)
  • [jest-environment-jsdom] Do not reset the global.document too early on teardown (#11871)
  • [jest-transform] Improve error and warning messages (#11998)
  • [jest-worker] Pass execArgv correctly to worker_threads worker (#12069)

Chore & Maintenance

  • [docs] CLI options alphabetized (#11586)
  • [jest-runner] Add info regarding timers to forcedExit message(#12083)
  • [*] Replaced substr method with substring (#12066)
  • [*] Add types entry to all export maps (#12073)

27.3.1

Fixes

  • [expect] Make expect extension properties configurable (#11978)
  • [expect] Fix .any() checks on primitive wrapper classes (#11976)

Chore & Maintenance

  • [expect] BigInt global is always defined, don't check for its existence at runtime (#11979)
  • [jest-config, jest-util] Use ci-info instead of is-ci to detect CI environment (#11973)

27.3.0

Features

  • [jest-config] Add testEnvironmentOptions.html to apply to jsdom input (#11950)
  • [jest-resolver] Support default export (.) in exports field if main is missing (#11919)

Fixes

  • [expect] Tweak and improve types (#11949)
  • [jest-runtime] Ensure absolute paths can be resolved within test modules (#11943)
  • [jest-runtime] Fix instanceof for ModernFakeTimers and LegacyFakeTimers methods (#11946)

27.2.5

Features

  • [jest-config] Warn when multiple Jest configs are located (#11922)

Fixes

  • [expect] Pass matcher context to asymmetric matchers (#11926 & #11930)
  • [expect] Improve TypeScript types (#11931)
  • [expect] Improve typings of toThrow() and toThrowError() matchers (#11929)
  • [jest-cli] Improve --help printout by removing defunct --browser option (#11914)
  • [jest-haste-map] Use distinct cache paths for different values of computeDependencies (#11916)
  • [@jest/reporters] Do not buffer console.logs when using verbose reporter (#11054)

Chore & Maintenance

  • [expect] Export default matchers (#11932)
  • [@jest/types] Mark deprecated configuration options as @deprecated (#11913)

27.2.4

Features

  • [expect] Add equality checks for Array Buffers in expect.ToStrictEqual() (#11805)

Fixes

  • [jest-snapshot] Correctly indent inline snapshots (#11560)

27.2.3

Features

  • [@jest/fake-timers] Update @sinonjs/fake-timers to v8 (#11879)

Fixes

  • [jest-config] Parse testEnvironmentOptions if received from CLI (#11902)
  • [jest-reporters] Call destroy on v8-to-istanbul converters to free memory (#11896)

27.2.2

Fixes

  • [jest-runtime] Correct wrapperLength value for ESM modules. (#11893)

27.2.1

Features

  • [jest-transform] Improve the unexpected token error message. (#11807)

Fixes

  • [jest-runtime] Fix regression when using jest.isolateModules and mocks (#11882)
  • [jest-runtime] Include test name when importing modules after test has completed (#11885)
  • [jest-runtime] Error when ESM import is used after test is torn down (#11885)

27.2.0

Features

  • [jest-resolver, jest-runtime] Pass conditions to custom resolvers to enable them to implement support for package.json exports field (#11859)
  • [jest-runtime] Allow custom envs to specify exportConditions which is passed together with Jest's own conditions to custom resolvers (#11863)

Fixes

  • [@jest/reporters] Use async transform if available to transform files with no coverage (#11852)
  • [jest-util] Return correct value from process.send stub (#11799)

27.1.1

Features

  • [jest-runtime] Add experimental, limited (and undocumented) support for mocking ECMAScript Modules (#11818)

Fixes

  • [jest-resolver] Support node: prefix when importing Node core modules with ESM (#11817)
  • [jest-types] Export the PrettyFormatOptions interface (#11801)

27.1.0

Features

  • [jest-haste-map] Use watchman suffix-set option for faster file indexing. (#11784)
  • [jest-cli] Adds a new config options snapshotFormat which offers a way to override any of the formatting settings which come with pretty-format. (#11654)
  • [jest-reporters] Expose the getSummary util (#11695).
  • [jest-resolver] Support node: prefix when importing Node core modules (#11331)

Fixes

  • [jest-each] Relaxed the validation to allow multibyte characters in headings (#11575)
  • [jest-environment-jsdom] Add support for userAgent option (#11773)
  • [jest-environment-node] Add Event and EventTarget to node global environment. (#11727)
  • [jest-mock] Fix spyOn to use Object.prototype.hasOwnProperty (#11721)
  • [jest-resolver] Add dependency on jest-haste-map (#11759)
  • [jest-types] Compat with @types/node v16 (#11645)

Chore & Maintenance

  • [docs] Correct expects.assertions documentation by adding async/await for asynchronous function.

27.0.6

Fixes

  • [*] Publish all modules to include the build change in (#11569)

27.0.5

Features

  • [@jest/fake-timers] Flush callbacks scheduled with requestAnimationFrame every 16ms when using legacy timers. (#11567)
  • [pretty-format] Use globalThis (with polyfill if required) to bring support for esbuild's browser bundling mode (#11569)

Fixes

  • [jest-core] Support special characters like @, + and () on Windows with --findRelatedTests (#11548)
  • [@jest/fake-timers] Do not add setImmediate and clearImmediate if they do not exist in the global environment (#11599)
  • [@jest/reporters] Allow node-notifier@10 as peer dependency (#11523)
  • [@jest/reporters] Update v8-to-istanbul (#11523)

27.0.4

Fixes

  • [jest-config, jest-resolve] Pass in require.resolve to resolvers to resolve from correct base (#11493)

27.0.3

Fixes

  • [jest-config] require.resolve on default test sequencer and test environment (#11482)
  • [jest-mock] Fixed fn and spyOn exports (#11480)

27.0.2

Features

  • [jest-circus] Add some APIs to make it easier to build your own test runner
  • [jest-reporters] Expose the getResultHeader util (#11460)
  • [jest-resolver] Export resolve* utils for different Jest modules (#11466)
  • [@jest/test-result] Export Test, TestEvents and TestFileEvent (#11466)

Fixes

  • [jest-circus] Add missing slash dependency (#11465)
  • [jest-circus, @jest/test-sequencer] Remove dependency on jest-runner (#11466)
  • [jest-config] Resolve config.runner to absolute path (#11465)
  • [jest-config] Make sure to support functions as config (#11475)
  • [jest-core] Do not warn about DNSCHANNEL handles when using the --detectOpenHandles option (#11470)
  • [jest-runner] Remove dependency on jest-config (#11466)
  • [jest-worker] Loosen engine requirement to >= 10.13.0 (#11451)

27.0.1

Fixes

  • [jest-environment-jsdom] Bump version of JSDOM to avoid deprecated request package (#11442)

27.0.0

Features

  • [babel-jest] Add async transformation (#11192)
  • [jest-changed-files] Use '--' to separate paths from revisions (#11160)
  • [jest-circus] [BREAKING] Fail tests when multiple done() calls are made (#10624)
  • [jest-circus, jest-jasmine2] [BREAKING] Fail the test instead of just warning when describe returns a value (#10947)
  • [jest-config] [BREAKING] Default to Node testing environment instead of browser (JSDOM) (#9874)
  • [jest-config] [BREAKING] Use jest-circus as default test runner (#10686)
  • [jest-config] Add support for preset written in ESM (#11200)
  • [jest-config, jest-runtime] Support ESM for files other than .js and .mjs (#10823)
  • [jest-config, jest-runtime] [BREAKING] Use "modern" implementation as default for fake timers (#10874 & #11197)
  • [jest-config Allow passing forceNodeFilesystemAPI through to jest-haste-map (#11264)
  • [jest-config, jest-haste-map, jest-resolve, jest-runner, jest-runtime, jest-test-sequencer, jest-transform, jest-types] [BREAKING] Add custom HasteMap class implementation config option (#11107)
  • [jest-core] make TestWatcher extend emittery (#10324)
  • [jest-core] Run failed tests interactively the same way we do with snapshots (#10858)
  • [jest-core] more TestSequencer methods can be async (#10980)
  • [jest-core] Add support for testSequencer written in ESM (#11207)
  • [jest-core] Add support for globalSetup and globalTeardown written in ESM (#11267)
  • [jest-core] Add support for watchPlugins written in ESM (#11315)
  • [jest-core] Add support for runner written in ESM (#11232)
  • [jest-core] Add support for reporters written in ESM (#11427)
  • [jest-each] Add support for interpolation with object properties (#11388)
  • [jest-environment-node] Add AbortController to globals (#11182)
  • [@jest/fake-timers] Update to @sinonjs/fake-timers to v7 (#11198)
  • [jest-haste-map] Handle injected scm clocks (#10966)
  • [jest-haste-map] Add enableSymlinks configuration option to follow symlinks for test files (#9351)
  • [jest-repl, jest-runner] [BREAKING] Run transforms over environment (#8751)
  • [jest-repl] Add support for testEnvironment written in ESM (#11232)
  • [jest-reporters] Add static filepath property to all reporters (#11015)
  • [jest-runner] [BREAKING] set exit code to 1 if test logs after teardown (#10728)
  • [jest-runner] [BREAKING] Run transforms over runner (#8823)
  • [jest-runner] [BREAKING] Run transforms over testRunner (#8823)
  • [jest-runner] Possibility to use ESM for test environment (11033)
  • [jest-runner] Add support for testRunner written in ESM (#11232)
  • [jest-runtime] Detect reexports from CJS as named exports in ESM (#10988)
  • [jest-runtime] Support for async code transformations (#11191 & #11220)
  • [jest-snapshot] [BREAKING] Make prettier optional for inline snapshots - fall back to string replacement (#7792 & #11192)
  • [jest-snapshot] [BREAKING] Run transforms over snapshotResolver (#8829)
  • [jest-transform] Pass config options defined in Jest's config to transformer's process and getCacheKey functions (#10926)
  • [jest-transform] Add support for transformers written in ESM (#11163)
  • [jest-transform] [BREAKING] Do not export ScriptTransformer class, instead export the async function createScriptTransformer (#11163)
  • [jest-transform] Async code transformations (#9889)
  • [jest-transform] Support transpiled transformers (#11193)
  • [jest-transform] [BREAKING] requireAndTranspileModule always return a Promise, and the third parameter type is changed to RequireAndTranspileModuleOptions which accept applyInteropRequireDefault option (#11232)
  • [jest-transform] [BREAKING] createTranspilingRequire return function which return a Promise now (#11232)
  • [jest-util] add requireOrImportModule for importing CJS or ESM (#11199)
  • [jest-util] add applyInteropRequireDefault option on requireOrImportModule (#11232)
  • [jest-watcher] Added support for clearing the line when <C-u> is pressed in a watch mode pattern prompt (#11358)
  • [jest-worker] Add support for custom task queues and adds a PriorityQueue implementation. (#10921)
  • [jest-worker] Add in-order scheduling policy to jest worker (10902)
  • [pretty-format] Better print for sparse arrays (11326)
  • [pretty-print] Add option printBasicPrototype which determines whether or not the prototype should be printed for raw objects or arrays (#11441)

Fixes

  • [babel-plugin-jest-hoist] Add __dirname and __filename to whitelisted globals (#10903)
  • [expect] [BREAKING] Revise expect.not.objectContaining() to be the inverse of expect.objectContaining(), as documented. (#10708)
  • [expect] [BREAKING] Make toContain more strict with the received type (#10119 & #10929)
  • [expect] [BREAKING] matcherResult on JestAssertionError are now strings rather than functions (#10989)
  • [jest-circus] Fixed the issue of beforeAll & afterAll hooks getting executed even if it is inside a skipped describe block (#10806)
  • [jest-circus] Fix testLocation on Windows when using test.each (#10871)
  • [jest-cli] Use testFailureExitCode when bailing from a failed test (#10958)
  • [jest-cli] Print custom error if error thrown from global hooks is not an error already (#11003)
  • [jest-cli] Allow running multiple "projects" from programmatic API (#11307)
  • [jest-cli] Fix missing collectCoverage after init (#11353)
  • [jest-cli, jest-config, jest-types] Move all default values into jest-config (#9924)
  • [jest-config] [BREAKING] Change default file extension order by moving json behind ts and tsx (10572)
  • [jest-console] console.dir now respects the second argument correctly (#10638)
  • [jest-core] Don't report PerformanceObserver as open handle (#11123)
  • [jest-core] Use WeakRef to hold timers when detecting open handles (#11277)
  • [jest-core] Correctly detect open handles that were created in test functions using done callbacks (#11382)
  • [jest-core] Do not collect RANDOMBYTESREQUEST as open handles (#11278)
  • [jest-core] Wait briefly for open handles to close before flagging them when using --detectOpenHandles (#11429)
  • [jest-diff] [BREAKING] Use only named exports (#11371)
  • [jest-each] [BREAKING] Ignore excess words in headings (#8766)
  • [jest-each] Support array index with template strings (#10763)
  • [jest-each] Interpolate %% correctly (#11364)
  • [jest-each] Fix wrong interpolation when the value of array contains multiple % (#11364)
  • [jest-environment] [BREAKING] Drop support for runScript for test environments (#11155)
  • [jest-environment-jsdom] Use inner realm’s ArrayBuffer constructor (#10885)
  • [jest-environment-jsdom] [BREAKING] Remove Node globals setImmediate and clearImmediate (#11222)
  • [jest-get-type] [BREAKING] Convert to ES Module (#11359)
  • [jest-globals] [BREAKING] Disallow return values other than a Promise from hooks and tests (#10512)
  • [jest-globals] [BREAKING] Disallow mixing a done callback and returning a Promise from hooks and tests (#10512)
  • [jest-haste-map] Vendor NodeWatcher from sane (#10919)
  • [jest-jasmine2] Fixed the issue of beforeAll & afterAll hooks getting executed even if it is inside a skipped describe block when it has child tests marked as either only or todo (#10806)
  • [jest-jasmine2] Fixed the issues of child tests marked with only or todo getting executed even if it is inside a skipped parent describe block (#10806)
  • [jest-jasmine2] Wrap all test functions so they open handles that were created in test functions using done callbacks can be detected (#11382)
  • [jest-reporter] Handle empty files when reporting code coverage with V8 (#10819)
  • [jest-resolve] Replace read-pkg-up with escalade package (#10781)
  • [jest-resolve] Disable jest-pnp-resolver for Yarn 2 (#10847)
  • [jest-runtime] [BREAKING] Do not inject global variable into module wrapper (#10644)
  • [jest-runtime] [BREAKING] remove long-deprecated jest.addMatchers, jest.resetModuleRegistry, and jest.runTimersToTime (#9853)
  • [jest-runtime] Fix stack overflow and promise deadlock when importing mutual dependant ES module (#10892)
  • [jest-runtime] Prevent global module registry from leaking into isolateModules registry (#10963)
  • [jest-runtime] Refactor to prevent race condition when linking and evaluating ES Modules (#11150)
  • [jest-runtime] Throw correct error when attempting to load ESM via require (#11260)
  • [jest-runtime] Do not cache modules that throw during evaluation (#11263)
  • [jest-transform] Show enhanced SyntaxError message for all SyntaxErrors (#10749)
  • [jest-transform] [BREAKING] Refactor API to pass an options bag around rather than multiple boolean options (#10753)
  • [jest-transform] [BREAKING] Refactor API of transformers to pass an options bag rather than separate config and other options (#10834)
  • [jest-types] Fix Config.ts projects types (#11285)
  • [jest-util] Replace micromatch with picomatch to fix issues with negated globs (#11287)
  • [jest-validate] Use en-US locale to avoid case conversion problems while validating CLI options on machines with some certain locales(e.g. Turkish) set as default locale. (#11412)
  • [jest-worker] [BREAKING] Use named exports (#10623)
  • [jest-worker] Do not swallow errors during serialization (#10984)
  • [jest-worker] Handle ERR_IPC_CHANNEL_CLOSED errors properly (#11143)
  • [pretty-format] [BREAKING] Convert to ES Modules (#10515)
  • [pretty-format] Only call hasAttribute if it's a function (#11000)
  • [pretty-format] Handle jsdom attributes properly (#11189)
  • [pretty-format] Import pretty-format using named imports (#11360)

Chore & Maintenance

  • [*] [BREAKING] Only support Node LTS releases and Node 15 (#10685)
  • [*] [BREAKING] Add exports field to all package.jsons (#9921)
  • [*] Make it easier for Jest's packages to use the VM escape hatch (#10824)
  • [*] [BREAKING] Remove deprecated mapCoverage (#9968)
  • [babel-jest] [BREAKING] Migrate to ESM (#11193)
  • [docs] Correct example using browser-resolve (#11140)
  • [docs] Clarify timers configuration property (#11376)
  • [jest, jest-core] [BREAKING] Replace TestScheduler export with createTestScheduler (#11427)
  • [jest-config] [BREAKING] Remove enabledTestsMap config, use filter instead (#10787)
  • [jest-console] [BREAKING] Move root into config and take GlobalConfig as mandatory parameter for getConsoleOutput (#10126)
  • [jest-console] Export LogEntry (#11017)
  • [jest-fake-timers] Clarify global behavior of jest.useFakeTimers and jest.useRealTimers (#10867)
  • [jest-haste-map] [BREAKING] Migrate to ESM (#10875)
  • [jest-haste-map] [BREAKING] Remove support for deprecated option ignorePattern as function (#10348)
  • [jest-jasmine2] [BREAKING] Migrate to ESM (#10906)
  • [jest-jasmine2] [BREAKING] Remove unused options argument from Env constructor (#10240)
  • [jest-repl, jest-runtime] [BREAKING] Move the jest-runtime CLI into jest-repl (#10016 & #10925)
  • [jest-resolve] [BREAKING] Migrate to ESM (#10688)
  • [jest-resolve-dependencies] [BREAKING] Migrate to ESM (#10876)
  • [jest-mock] [BREAKING] Migrate to ESM (#10887)
  • [jest-reporters] [BREAKING] Make node-notifier a peer dependency (#10977)
  • [jest-resolve, jest-runtime] [BREAKING] Use Maps instead of objects for all cached resources (#10968)
  • [jest-runner] [BREAKING] Migrate to ESM (#10900)
  • [jest-runtime] [BREAKING] Remove deprecated and unused getSourceMapInfo from Runtime (#9969)
  • [jest-transformer] [BREAKING] Remove unused isCoreModule option (#11166)
  • [jest-util] No longer checking enumerable when adding process.domain (#10862)
  • [jest-validate] [BREAKING] Remove recursiveBlacklist option in favor of previously introduced recursiveDenylist (#10650)
  • [website] Replace 'Github' with 'GitHub' (#11279)
  • [website] Remove a language code from the link to the Node.js website (#11282)
  • [website] Remove a duplicated word (#11281)
  • [website] Add french to website (#11361)

Performance

  • [jest-resolve] Cache reading and parsing of package.jsons (#11076)
  • [jest-runtime, jest-transform] share cacheFS between runtime and transformer (#10901)
  • [jest-runtime] Load chalk only once per worker (#10864)
  • [jest-worker] Fix memory leak of previous task arguments while no new task is scheduled (#11187)

26.6.3

Fixes

  • [jest-resolve-dependencies] Continue dependency resolution if mock dependency can't be found (#10779)

26.6.2

Features

  • [jest-core] Add findRelatedTests and nonFlagArgs in allowed config options for updateConfigAndRun in watch plugins (#10659)

Fixes

  • [babel-plugin-jest-hoist] Preserve order of hoisted mock nodes within containing block (#10536)
  • [babel-plugin-jest-hoist] Hoist pure constants to support experimental JSX transform in hoisted mocks (#10723)
  • [babel-preset-jest] Update babel-preset-current-node-syntax to support top level await (#10747)
  • [expect] Revert "Fix objectContaining to work recursively into sub-objects (#10508)" (#10766)
  • [jest-circus, jest-jasmine2] fix: don't assume stack is always a string (#10697)
  • [jest-config] Fix bug introduced in watch mode by PR #10678 (#10692)
  • [jest-config] Throw correct error for missing preset modules (#10737)
  • [jest-resolve-dependencies] Resolve mocks as dependencies (#10713)
  • [jest-runtime] Handle file URLs in dynamic imports (#10744)
  • [jest-runtime, babel-jest] Pass more ESM options to @jest/transform (#10752)
  • [jest-runtime] Properly inject extraGlobals into the runtime (#10758)
  • [jest-transform] Link to ESM docs on syntax errors (#10748)

Chore & Maintenance

  • [docs] Add docs for using mocks in TypeScript (#10415)
  • [eslint-config-fb-strict] Move package from this repo to fbjs repo (#10739)
  • [examples] Update TypeScript example to show use of newer Jest types (#10399)
  • [jest-cli] chore: standardize files and folder names (#10698)
  • [jest-config] Switch ts-node Register type to Service due to deprecation (#11210)

26.6.1

Features

  • [jest-runtime] Support named exports from CommonJS as named ES Module imports (#10673)
  • [jest-validate] Add support for recursiveDenylist option as an alternative to recursiveBlacklist (#10236)

Fixes

  • [expect] Fix objectContaining to work recursively into sub-objects (#10508)
  • [jest-cli, jest-core, jest-config, jest-types] Fix --onlyFailures flag to work in non-watch mode (#10678)
  • [jest-config] Fix for the jest.config.ts compiler to not interfere with tsconfig.json files (#10675)
  • [jest-message-util] Update to work properly with Node 15 (#10660)
  • [jest-mock] Allow to mock methods in getters (TypeScript 3.9 export) (#10156)

26.6.0

Features

  • [jest-cli, jest-config] Add support for the jest.config.ts configuration file (#10564)

Fixes

  • [jest-config] Simplify transform RegExp (#10207)
  • [jest-fake-timers] Lazily instantiate mock timers (#10551)
  • [jest-runtime] require.main is no longer undefined when using jest.resetModules (#10626)
  • [@jest/types] Add missing values for timers (#10632)

Chore & Maintenance

  • [docs] Add step for fetching backers.json file in website setup docs (#10631)
  • [docs] Add page detailing environment variables set by Jest (#10630)
  • [jest-circus] Refactor callAsyncCircusFn parameters (#10629)

26.5.3

Features

  • [jest-runtime] add support for dynamic import() from CommonJS (#10620)

Fixes

  • [jest-runner, jest-runtime] require.main should not be undefined with createRequire() (#10610)
  • [jest-runtime] add missing module.path property (#10615)
  • [jest-runtime] Add mainModule instance variable to runtime (#10621)
  • [jest-runtime] Evaluate Node core modules on dynamic import() (#10622)
  • [jest-validate] Show suggestion only when unrecognized cli param is longer than 1 character (#10604)
  • [jest-validate] Validate testURL as CLI option (#10595)

26.5.2

Fixes

  • [*] Revert usage of Escalade and rollback Yargs to v15 as it breaks Node 13 (#10599)
  • [jest-circus] Setup globals before emitting setup, and include Jest globals in the setup payload (#10598)
  • [jest-mock] Fix typings for mockResolvedValue, mockResolvedValueOnce, mockRejectedValue and mockRejectedValueOnce (#10600)

26.5.1

Fixes

  • [jest-circus] Handle older jest-runtime in jest-circus

26.5.0

Features

  • [jest-circus, jest-config, jest-runtime] Add new injectGlobals config and CLI option to disable injecting global variables into the runtime (#10484)
  • [jest-each] Fixes .each type to always be callable (#10447)
  • [jest-runner] Add support for moduleLoaders with default exports (#10541)
  • [@jest/create-cache-key-function] Added a new package for creating cache keys (#10587)

Fixes

  • [jest-circus, jest-jasmine2] Find correct location for test.each tests (#10413)
  • [jest-console] Add Console constructor to console object (#10502)
  • [jest-globals] Fix lifecycle hook function types (#10480)
  • [jest-runtime] Remove usage of vm.compileFunction due to a performance issue (#10586)

Chore & Maintenance

  • [jest-resolve] Replace read-pkg-up with escalade package (10558)
  • [jest-environment-jsdom] Update jsdom to 16.4.0 (10578)

26.4.2

Fixes

  • [expect] Fix toMatchObject to work with inherited class getters (#10381)
  • [pretty-format] Lower minimum node version to >= 10 (#10435)

26.4.1

Fixes

  • [jest-core] Don't report ELDHistogram as open handle (#10417)
  • [jest-matcher-utils] Fix diffing object contain readonly symbol key object (#10414)
  • [jest-reporters] Fixes notify reporter on Linux (using notify-send) (#10400)
  • [jest-snapshot] Correctly handles arrays and property matchers in snapshots (#10404)

26.4.0

Features

  • [jest-resolve] Add support for packageFilter on custom resolver (#10393)

Fixes

  • [pretty-format] Handle tagName not being a string (#10397)

26.3.0

Features

  • [jest-circus, jest-jasmine2] Include failureDetails property in test results (#9496)
  • [jest-each, jest-jasmine, jest-circus] Add support for .concurrent.each (#9326)

Fixes

  • [jest-config] Add .pnp.js to transformIgnorePatterns defaults (#10383)
  • [jest-leak-detector] Wait properly for GC runs due to changes in Node 14.7 (#10366)
  • [jest-worker] Downgrade minimum node version to 10.13 (#10352)
  • [docs] Update snapshot testing documentation(#10359)

26.2.2

Fixes

  • [jest-cli] Use correct file name to override existing jest config on init (#10337)
  • [jest-haste-map] Properly detect support for native find (#10346)

26.2.1

Fixes

  • [jest-worker] Make sure to work with Node TS typings v12 (#10336)

26.2.0

Features

  • [jest-core, jest-circus, jest-reporter, jest-runner] Added support for reporting individual test cases using jest-circus (#10227)
  • [jest-config, jest-reporter, jest-runner, jest-test-sequencer] Add slowTestThreshold configuration option (#9366)
  • [jest-haste-map] Watchman crawler now includes dotfiles (#10075)
  • [jest-worker] Added support for workers to send custom messages to parent in jest-worker (#10293)
  • [jest-worker] Support passing resourceLimits (#10335)
  • [pretty-format] Added support for serializing custom elements (web components) (#10237)

Fixes

  • [expect] Match symbols and bigints in any() (#10223)
  • [jest-changed-files] Use git diff instead of git log for --changedSince (#10155)
  • [jest-console] Add missing console.timeLog for compatibility with Node (#10209)
  • [jest-haste-map] Check find binary supports the -iname parameter (#10308)
  • [jest-snapshot] Strip added indentation for inline error snapshots (#10217)

Chore & Maintenance

  • [*] Add missing dependency on @types/node (#10248)
  • [jest-jasmine2] Convert PCancelable to TypeScript (#10215)
  • [jest-jasmine2] Refine typings of queueRunner (#10215)
  • [jest-jasmine2] Remove usage of Function type (#10216)
  • [jest-resolve] Improve types (#10239)
  • [docs] Clarify the jest.requireActual(moduleName) example
  • [jest-types] Refine typings of coverageReporters (#10275)

26.1.0

Features

  • [jest-mock] Export Mock, MockInstance, SpyInstance types (#10138)
  • [jest-config] Support config files exporting (async) functions (#10001)
  • [jest-cli, jest-core] Add --selectProjects CLI argument to filter test suites by project name (#8612)
  • [jest-cli, jest-init] Add coverageProvider to jest --init prompts (#10044)

Fixes

  • [jest-console] getConsoleOutput to receive global stack trace config and use it to format stack trace (#10081)
  • [jest-jasmine2] Stop adding : after an error that has no message (#9990)
  • [jest-diff] Control no diff message color with commonColor in diff options (#9997)
  • [jest-snapshot] Fix TypeScript compilation (#10008)

Chore & Maintenance

  • [docs] Correct confusing filename in enableAutomock example (#10055)
  • [jest-core] 🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉 (#10000)
  • [jest-core, jest-reporters, jest-test-result, jest-types] Cleanup displayName type (#10049)
  • [jest-runtime] Jest-internal sandbox escape hatch (#9907)
  • [jest-fake-timers] Update now param type to support Date in addition to number. (#10169)
  • [docs] Add param to setSystemTime docs and remove preceding period from it and getRealSystemTime (#10169)
  • [jest-snapshot, jest-util] Replace make-dir with fs.mkdir (#10136)
  • [docs] Added parcel-bundler documentation inside readme.md file

Performance

  • [jest-core, jest-transform, jest-haste-map] Improve Jest startup time and test runtime, particularly when running with coverage, by caching micromatch and avoiding recreating RegExp instances (#10131)

26.0.1

Fixes

  • [jest-circus] Backward compatibility for deprecated DescribeBlock.tests to not break e.g. Detox reporter

26.0.0

Features

  • [jest-environment-jsdom] [BREAKING] Upgrade jsdom to v16 (#9606)
  • [@jest/fake-timers] Add possibility to use a modern implementation of fake timers, backed by @sinonjs/fake-timers (#7776)
  • [jest-runtime] Add createMockFromModule as an alias for genMockFromModule (#9962)

Fixes

  • [babel-jest] Handle null being passed to createTransformer (#9955)
  • [jest-circus, jest-console, jest-jasmine2, jest-reporters, jest-util, pretty-format] Fix time durating formatting and consolidate time formatting code (#9765)
  • [jest-circus] [BREAKING] Fail tests if a test takes a done callback and have return values (#9129)
  • [jest-circus] [BREAKING] Throw a proper error if a test / hook is defined asynchronously (#8096)
  • [jest-circus] Throw more descriptive error if hook is defined inside test (#9957)
  • [jest-circus] [BREAKING] Align execution order of tests to match jasmine's top to bottom order (#9965)
  • [jest-config, jest-resolve] [BREAKING] Remove support for browser field (#9943)
  • [jest-haste-map] Stop reporting files as changed when they are only accessed (#7347)
  • [jest-resolve] Show relative path from root dir for module not found errors (#9963)
  • [jest-runtime] Fix absolute path moduleNameMapper + jest.mock bug (#8727)

Chore & Maintenance

  • [*] [BREAKING] TypeScript definitions requires a minimum of TypeScript v3.8 (#9823)
  • [*] [BREAKING] Drop support for Node 8 (#9423)
  • [*] Upgrade to chalk@4 (#9752)
  • [*] Remove usage of realpath-native (#9952)
  • [docs] Fix example reference implementation to use Jest with Phabricator (#8662)
  • [docs] Added default compiler to tranform (#8583)
  • [docs] Updated Testing Frameworks guide with React; make it generic (#9106)
  • [expect, jest-mock, pretty-format] [BREAKING] Remove build-es5 from package (#9945)
  • [@jest/fake-timers, @jest/environment] [BREAKING] Rename LolexFakeTimers to ModernFakeTimers (#9960)
  • [jest-haste-map] [BREAKING] removed providesModuleNodeModules (#8535)
  • [jest-runtime] [BREAKING] Remove long-deprecated require.requireActual and require.requireMock methods (#9854)

25.5.4

Fixes

  • [jest-jasmine2] Don't run beforeAll / afterAll in skipped describe blocks (#9931)

Chore & Maintenance

  • [jest-runtime] Do not warn when mutating require.cache (#9946)

25.5.3

Chore & Maintenance

  • [jest-circus] Fix memory leak when running in band (#9934)

25.5.2

Fixes

  • [jest-globals] Export globals as values, not types (#9925)

25.5.1

Fixes

  • [jest-haste-map] Add missing @types/graceful-fs dependency (#9913)
  • [jest-runner] Correctly serialize Set passed to worker (#9915)
  • [jest-runtime] Vary ESM cache by query (#9914)

25.5.0

Features

  • [@jest/globals] New package so Jest's globals can be explicitly imported (#9801)
  • [jest-core] Show coverage of sources related to tests in changed files (#9769)
  • [jest-runtime] Populate require.cache (#9841)

Fixes

  • [*] Use graceful-fs directly in every package instead of relying on fs being monkey patched (#9443)
  • [expect] Prints the Symbol name into the error message with a custom asymmetric matcher (#9888)
  • [jest-circus, jest-jasmine2] Support older version of jest-runtime (#9903 & #9842)
  • [@jest/environment] Make sure not to reference Jest types (#9875)
  • [jest-message-util] Code frame printing should respect --noStackTrace flag (#9866)
  • [jest-runtime] Support importing CJS from ESM using import statements (#9850)
  • [jest-runtime] Support importing parallel dynamic imports (#9858)
  • [jest-transform] Improve source map handling when instrumenting transformed code (#9811)

Chore & Maintenance

  • [docs] Add an example for mocking non-default export class

Performance

  • [jest-resolve] Update resolve to a version using native realpath, which is faster than the default JS implementation (#9872)
  • [jest-resolve] Pass custom cached realpath function to resolve (#9873)
  • [jest-runtime] Add teardown method to clear any caches when tests complete (#9906)
  • [jest-runtime] Do not pass files required internally through transformation when loading them (#9900)
  • [jest-runtime] Use Maps instead of object literals as cache holders (#9901)

25.4.0

  • [expect] Support async functions in toThrow (#9817)
  • [jest-console] Add code frame to console.error and console.warn (#9741)
  • [jest-runtime, jest-jasmine2, jest-circus] Experimental, limited ECMAScript Modules support (#9772 & #9842)

Fixes

  • [expect] Restore support for passing functions to toHaveLength matcher (#9796)
  • [jest-changed-files] --only-changed should include staged files (#9799)
  • [jest-circus] Throw on nested test definitions (#9828)
  • [jest-each] each will throw an error when called with too many arguments (#9818)
  • [jest-runner] Don't print warning to stdout when using --json (#9843)

Chore & Maintenance

  • [*] Do not generate TypeScript declaration source maps (#9822)
  • [*] Transpile code for Node 8.3, not 8.0 (#9827)

25.3.0

Features

  • [babel-jest] Support passing supportsDynamicImport and supportsStaticESM (#9766)
  • [babel-preset-jest] Enable all syntax plugins not enabled by default that works on current version of Node (#9774)
  • [jest-circus] Enable writing async test event handlers (#9397)
  • [jest-runtime, @jest/transformer] Support passing supportsDynamicImport and supportsStaticESM (#9597)

Chore & Maintenance

  • [*] Replace anys with unknowns (#9626)
  • [@jest/transform] Expose type CacheKeyOptions for getCacheKey (#9762)
  • [@jest/types] Correct type testRegex for ProjectConfig (#9780)

25.2.7

Fixes

  • [jest-matcher-utils] Replace accessors with values to avoid calling setters in object descriptors when computing diffs for error reporting (#9757)
  • [@jest/watcher] Correct return type of shouldRunTestSuite for JestHookEmitter (#9753)

25.2.6

Chore & Maintenance

  • [*] 25.2.5 was published without changes from 25.2.4 - 25.2.6 includes all changes from that version.

25.2.5

Fixes

  • [@jest/console] Fix typescript<@3.8 compatibility in published types

Chore & Maintenance

  • [docs] Update link to watchman troubleshooting docs (#9727)
  • [@jest/message-util] Remove dependency on @jest/test-result, which lead to a sprawling dependency tree (#9749)
  • [@jest/test-result] Remove dependency on @jest/transform, which lead to a sprawling dependency tree (#9747)
  • [@jest/transform] Expose type TransformedSource (#9736)

25.2.4

Features

  • [jest-message-util] Check for common errors when using the wrong test environment (#8245)

Fixes

  • [jest-circus] Fix type elision of jest-runtime imports (#9717)
  • [@jest/transform] Fix coverage reporter for uncovered files without transformers, reverting #9460 (#9724)

25.2.3

Fixes

  • [*] Verify all packages are properly downleveled for older versions of TypeScript (#9715)

25.2.2

Fixes

  • [jest-environment-node] Remove getVmContext from Node env on older versions of Node (#9708)
  • [jest-runtime] Return constructable class from require('module') (#9711)

25.2.1

Fixes

  • [*] Downlevel TypeScript definitions files for compatibility with TS<3.8 (#9705)

25.2.0

Features

  • [jest-config] Support ESM config files with .js extension (#9573).
  • [jest-runtime] Override module.createRequire to return a Jest-compatible require function (#9469)
  • [jest-haste-map] [BREAKING] Remove mapper option (#9581)
  • [*] Support array of paths for moduleNameMapper aliases (#9465)
  • [jest-reporters] Adds ability to pass options to the istanbul-reporter through coverageReporters (#9572)
  • [jest-runtime] Require stack when a module cannot be resolved (#9681)
  • [jest-transform] writeCacheFile no longer calls fsync (#9695)

Fixes

  • [expect] Handle readonly properties correctly (#9575)
  • [jest-cli] Set coverageProvider correctly when provided in config (#9562)
  • [jest-cli] Allow specifying .cjs and .mjs config files by --config CLI option (#9578)
  • [jest-cli] Update yargs to fix CLI flag overriding (#9519)
  • [jest-config] Treat setupFilesAfterEnv like setupFiles when normalizing configs against presets (#9495)
  • [jest-config] Support .mjs config files on Windows as well (#9558)
  • [jest-config] Verify rootDir and all roots are directories (#9569)
  • [jest-config] Ensure pattern of replacePosixSep is a string (#9546)
  • [jest-haste-map] Fix crash on unix based systems without find (#9579)
  • [jest-jasmine2] Fix --testNamePattern matching with concurrent tests (#9090)
  • [jest-matcher-utils] Fix diff highlight of symbol-keyed object. (#9499)
  • [@jest/reporters] Notifications should be fire&forget rather than having a timeout (#9567)
  • [jest-resolve] Fix module identity preservation with symlinks and browser field resolution (#9511)
  • [jest-resolve] Do not confuse directories with files (#8912)
  • [jest-resolve] moduleNameMapper should take precedence over Node core modules (#9563)
  • [jest-runtime] Reset isolateModules if it fails (#9541)
  • [jest-runtime] Yarn PnP errors displayed to the user (#9681)
  • [jest-snapshot] Downgrade semver to v6 to support node 8 (#9451)
  • [jest-snapshot] Properly indent new snapshots in the presences of existing ones (#9523)
  • [jest-transform] Correct sourcemap behavior for transformed and instrumented code (#9460)
  • [jest-transform] Allow instrumentation of transformed files with weird file extensions (#9589)
  • [@jest/types] Make ConfigGlobals an interface to allow for declaration merging. (#9570)
  • [pretty-format] Export OldPlugin type (#9491)

Chore & Maintenance

  • [docs] Warn about unexpected behavior / bug of node-notifier when using the notify options.
  • [docs] Grammatical corrections to Async docs page. (#9679)
  • [jest-resolver] Use resolve package to implement custom module resolution (#9520)
  • [jest-runtime] Move execution of setupFiles to jest-runner (#9596)
  • [jest-runtime] Update anchor link in helpers (#9616)
  • [@jest/reporters] Remove unused dependencies and type exports (#9462)
  • [website] Update pictures of reports when matchers fail (#9214)

Performance

  • [jest-haste-map] Reduce number of lstat calls in node crawler (#9514)

25.1.0

Features

  • [babel-plugin-jest-hoist] Show codeframe on static hoisting issues (#8865)
  • [babel-plugin-jest-hoist] Add BigInt to ALLOWED_IDENTIFIERS (#8382)
  • [babel-preset-jest] Add @babel/plugin-syntax-bigint (#8382)
  • [expect] Add BigInt support to toBeGreaterThan, toBeGreaterThanOrEqual, toBeLessThan and toBeLessThanOrEqual (#8382)
  • [expect, jest-matcher-utils] Display change counts in annotation lines (#9035)
  • [expect, jest-snapshot] Support custom inline snapshot matchers (#9278)
  • [jest-config] Throw the full error message and stack when a Jest preset is missing a dependency (#8924)
  • [jest-config] [BREAKING] Set default display name color based on runner (#8689)
  • [jest-config] Merge preset globals with project globals (#9027)
  • [jest-config] Support .cjs config files (#9291)
  • [jest-config] [BREAKING] Support .mjs config files (#9431)
  • [jest-core] Support reporters as default exports (#9161)
  • [jest-core] Support --findRelatedTests paths case insensitivity on Windows (#8961)
  • [jest-diff] Add options for colors and symbols (#8841)
  • [jest-diff] [BREAKING] Export as ECMAScript module (#8873)
  • [jest-diff] Add includeChangeCounts and rename Indicator options (#8881)
  • [jest-diff] Add changeColor and patchColor options (#8911)
  • [jest-diff] Add trailingSpaceFormatter option and replace cyan with commonColor (#8927)
  • [jest-diff] Add firstOrLastEmptyLineReplacement option and export 3 diffLines functions (#8955)
  • [jest-environment] Add optional getVmContext next to runScript (#9252 & #9428)
  • [jest-environment-jsdom] Add fakeTimersLolex (#8925)
  • [jest-environment-node] Add fakeTimersLolex (#8925)
  • [jest-environment-node] Add queueMicrotask (#9140)
  • [jest-environment-node] Implement getVmContext (#9252 & #9428)
  • [@jest/fake-timers] Add Lolex as implementation of fake timers (#8897)
  • [jest-get-type] Add BigInt support. (#8382)
  • [jest-matcher-utils] Add BigInt support to ensureNumbers ensureActualIsNumber, ensureExpectedIsNumber (#8382)
  • [jest-matcher-utils] Ignore highlighting matched asymmetricMatcher in diffs (#9257)
  • [jest-reporters] Export utils for path formatting (#9162)
  • [jest-reporters] Provides global coverage thresholds as watermarks for istanbul (#9416)
  • [jest-runner] Warn if a worker had to be force exited (#8206)
  • [jest-runtime] [BREAKING] Do not export ScriptTransformer - it can be imported from @jest/transform instead (#9256)
  • [jest-runtime] Use JestEnvironment.getVmContext and vm.compileFunction if available to avoid the module wrapper (#9252 & #9428)
  • [jest-snapshot] Display change counts in annotation lines (#8982)
  • [jest-snapshot] [BREAKING] Improve report when the matcher has properties (#9104)
  • [jest-snapshot] Improve colors when snapshots are updatable (#9132)
  • [jest-snapshot] Ignore indentation for most serialized objects (#9203)
  • [jest-transform] Create createTranspilingRequire function for easy transpiling modules (#9194)
  • [jest-transform] [BREAKING] Return transformed code as a string, do not wrap in vm.Script (#9253)
  • [@jest/test-result] Create method to create empty TestResult (#8867)
  • [jest-worker] [BREAKING] Return a promise from end(), resolving with the information whether workers exited gracefully (#8206)
  • [jest-reporters] Transform file paths into hyperlinks (#8980)

Fixes

  • [expect] Display expectedDiff more carefully in toBeCloseTo (#8389)
  • [expect] Avoid incorrect difference for subset when toMatchObject fails (#9005)
  • [expect] Consider all RegExp flags for equality (#9167)
  • [expect] [BREAKING] Consider primitives different from wrappers instantiated with new (#9167)
  • [expect] Prevent maintaining RegExp state between multiple tests (#9289)
  • [expect] Fix subsetEquality false circular reference detection (#9322)
  • [jest-config] Use half of the available cores when watchAll mode is enabled (#9117)
  • [jest-config] Fix Jest multi project runner still cannot handle exactly one project (#8894)
  • [jest-console] Add missing console.group calls to NullConsole (#9024)
  • [jest-core] Don't include unref'd timers in --detectOpenHandles results (#8941)
  • [jest-core] Limit number of workers when creating haste maps in projects (#9259)
  • [jest-diff] Do not inverse format if line consists of one change (#8903)
  • [jest-diff] Rename some new options and change their default values (#9077)
  • [jest-environment-node] Fix TextEncoder.encode not referencing same global Uint8Array constructor (#9261)
  • [jest-fake-timers] getTimerCount will not include cancelled immediates (#8764)
  • [jest-fake-timers] Support util.promisify on setTimeout (#9180)
  • [jest-jasmine2, jest-circus] Improve error message format for Node's assert.fail (#9262)
  • [jest-leak-detector] [BREAKING] Use weak-napi instead of weak package (#8686)
  • [jest-mock] Fix for mockReturnValue overriding mockImplementationOnce (#8398)
  • [jest-reporters] Make node-notifier an optional dependency (#8918)
  • [jest-reporters] Make all arguments to methods on BaseReporter optional (#9159)
  • [jest-resolve]: Set MODULE_NOT_FOUND as error code when module is not resolved from paths (#8487)
  • [jest-resolve-dependencies] Handle dynamic dependencies correctly even when using module maps (#9303)
  • [jest-snapshot] Remove only the added newlines in multiline snapshots (#8859)
  • [jest-snapshot] Distinguish empty string from external snapshot not written (#8880)
  • [jest-snapshot] [BREAKING] Distinguish empty string from internal snapshot not written (#8898)
  • [jest-snapshot] [BREAKING] Remove report method and throw matcher errors (#9049)
  • [jest-snapshot] Omit irrelevant received properties when property matchers fail (#9198)
  • [jest-transform] Properly cache transformed files across tests (#8890)
  • [jest-transform] Don't fail the test suite when a generated source map is invalid (#9058)
  • [jest-types] [BREAKING] Use less null | undefined in config types (#9200)
  • [jest-util] Allow querying process.domain (#9136)
  • [pretty-format] Correctly detect memoized elements (#9196)
  • [pretty-format] Fix pretty-format to respect displayName on forwardRef (#9422)

Chore & Maintenance

  • [*] [BREAKING] Drop support for Node 6 (#8455)
  • [*] Add Node 12 to CI (#8411)
  • [*] [BREAKING] Upgrade to Micromatch v4 (#8852)
  • [babel-plugin-jest-hoist] [BREAKING] Use ESM exports (#8874)
  • [docs] Add alias and optional boolean value to coverage CLI Reference (#8996)
  • [docs] Fix broken link pointing to legacy JS file in "Snapshot Testing".
  • [docs] Add setupFilesAfterEnv and jest.setTimeout example (#8971)
  • [expect] Test that toStrictEqual is equivalent to Node's assert.deepStrictEqual (#9167)
  • [jest] [BREAKING] Use ESM exports (#8874)
  • [jest-cli] [BREAKING] Use ESM exports (#8874)
  • [jest-cli] [BREAKING] Remove re-exports from @jest/core (#8874)
  • [jest-diff] Remove the need to export splitLines0 function (#9151)
  • [jest-environment-jsdom] [BREAKING] Upgrade JSDOM from v11 to v15 (#8851)
  • [jest-haste-map] Upgrade to fsevents@2 (#9215)
  • [jest-reporters] [BREAKING] Upgrade Istanbul dependencies, which are used for code coverage (#9192)
  • [jest-util] [BREAKING] Remove deprecated exports (#8863)
  • [jest-validate] [BREAKING] Use ESM exports (#8874)
  • [jest-types] Mark InitialOptions as Partial (#8848)
  • [jest-config] Refactor normalize to be more type safe (#8848)

24.9.0

Features

  • [expect] Highlight substring differences when matcher fails, part 1 (#8448)
  • [expect] Highlight substring differences when matcher fails, part 2 (#8528)
  • [expect] Improve report when mock-spy matcher fails, part 1 (#8640)
  • [expect] Improve report when mock-spy matcher fails, part 2 (#8649)
  • [expect] Improve report when mock-spy matcher fails, part 3 (#8697)
  • [expect] Improve report when mock-spy matcher fails, part 4 (#8710)
  • [expect] Throw matcher error when received cannot be jasmine spy (#8747)
  • [expect] Improve report when negative CalledWith assertion fails (#8755)
  • [expect] Improve report when positive CalledWith assertion fails (#8771)
  • [expect] Display equal values for ReturnedWith similar to CalledWith (#8791)
  • [expect, jest-snapshot] Change color from green for some args in matcher hints (#8812)
  • [jest-snapshot] Highlight substring differences when matcher fails, part 3 (#8569)
  • [jest-core] Improve report when snapshots are obsolete (#8665)
  • [jest-cli] Improve chai support (with detailed output, to match jest exceptions) (#8454)
  • [*] Manage the global timeout with --testTimeout command line argument. (#8456)
  • [pretty-format] Render custom displayName of memoized components (#8546)
  • [jest-validate] Allow maxWorkers as part of the jest.config.js (#8565)
  • [jest-runtime] Allow passing configuration objects to transformers (#7288)
  • [@jest/core, @jest/test-sequencer] Support async sort in custom testSequencer (#8642)
  • [jest-runtime, @jest/fake-timers] Add jest.advanceTimersToNextTimer (#8713)
  • [@jest-transform] Extract transforming require logic within jest-core into @jest-transform (#8756)
  • [jest-matcher-utils] Add color options to matcherHint (#8795)
  • [jest-circus/jest-jasmine2] Give clearer output for Node assert errors (#8792)
  • [jest-runner] Export all types in the type signature of jest-runner (#8825)

Fixes

  • [jest-cli] Detect side-effect only imports when running --onlyChanged or --changedSince (#8670)
  • [jest-cli] Allow --maxWorkers to work with % input again (#8565)
  • [babel-plugin-jest-hoist] Expand list of whitelisted globals in global mocks (#8429)
  • [jest-core] Make watch plugin initialization errors look nice (#8422)
  • [jest-snapshot] Prevent inline snapshots from drifting when inline snapshots are updated (#8492)
  • [jest-haste-map] Don't throw on missing mapper in Node crawler (#8558)
  • [jest-core] Fix incorrect passWithNoTests warning (#8595)
  • [jest-snapshots] Fix test retries that contain snapshots (#8629)
  • [jest-mock] Fix incorrect assignments when restoring mocks in instances where they originally didn't exist (#8631)
  • [expect] Fix stack overflow when matching objects with circular references (#8687)
  • [jest-haste-map] Workaround a node >=12.5.0 bug that causes the process not to exit after tests have completed and cancerous memory growth (#8787)

Chore & Maintenance

  • [docs] Replace FlowType with TypeScript in CONTRIBUTING.MD code conventions
  • [jest-leak-detector] remove code repeat (#8438)
  • [docs] Add example to jest.requireActual (#8482)
  • [docs] Add example to jest.mock for mocking ES6 modules with the factory parameter (#8550)
  • [docs] Add information about using jest.doMock with ES6 imports (#8573)
  • [docs] Fix variable name in custom-matcher-api code example (#8582)
  • [docs] Fix example used in custom environment docs (#8617)
  • [docs] Updated react tutorial to refer to new package of react-testing-library (@testing-library/react) (#8753)
  • [docs] Updated imports of react-testing-library to @testing-library/react in website (#8757)
  • [jest-core] Add getVersion (moved from jest-cli) (#8706)
  • [docs] Fix MockFunctions example that was using toContain instead of toContainEqual (#8765)
  • [*] Make sure copyright header comment includes license (#8783)
  • [*] Check copyright and license as one joined substring (#8815)
  • [docs] Fix WatchPlugins jestHooks.shouldRunTestSuite example that receives an object (#8784)
  • [*] Enforce LF line endings (#8809)
  • [pretty-format] Delete obsolete link and simplify structure in README (#8824)
  • [docs] Fix broken transform link on webpack page (#9155)

Performance

  • [jest-watcher] Minor optimization for JestHook (#8746)
  • [@jest/reporters] Prevent runaway CPU usage with --notify on macOS (#8831)

24.8.0

Features

  • [jest-circus] Bind to Circus events via an optional event handler on any custom env (#8344)
  • [expect] Improve report when matcher fails, part 15 (#8281)
  • [jest-cli] Update --forceExit and "did not exit for one second" message colors (#8329)
  • [expect] Improve report when matcher fails, part 16 (#8306)
  • [jest-runner] Pass docblock pragmas to TestEnvironment constructor (#8320)
  • [docs] Add DynamoDB guide (#8319)
  • [expect] Improve report when matcher fails, part 17 (#8349)
  • [expect] Improve report when matcher fails, part 18 (#8356)
  • [expect] Improve report when matcher fails, part 19 (#8367)

Fixes

  • [jest-each] Fix bug with placeholder values (#8289)
  • [jest-snapshot] Inline snapshots: do not indent empty lines (#8277)
  • [@jest/runtime, @jest/transform] Allow custom transforms for JSON dependencies (#8278)
  • [jest-core] Make detectOpenHandles imply runInBand (#8283)
  • [jest-haste-map] Fix the mapper option which was incorrectly ignored (#8299)
  • [jest-jasmine2] Fix describe return value warning being shown if the describe function throws (#8335)
  • [jest-environment-jsdom] Re-declare global prototype of JSDOMEnvironment (#8352)
  • [jest-snapshot] Handle arrays when merging snapshots (#7089)
  • [expect] Extract names of async and generator functions (#8362)
  • [jest-runtime] Fix virtual mocks not being unmockable after previously being mocked (#8396)
  • [jest-transform] Replace special characters in transform cache filenames to support Windows (#8353)
  • [jest-config] Allow exactly one project (#7498)

Chore & Maintenance

  • [expect] Fix label and add opposite assertion for toEqual tests (#8288)
  • [docs] Mention Jest MongoDB Preset (#8318)
  • [@jest/reporters] Migrate away from istanbul-api (#8294)
  • [*] Delete obsolete emails tag from header comment in test files (#8377)
  • [expect] optimize compare nodes (#8368)
  • [docs] Fix typo in MockFunctionAPI.md (#8406)
  • [LICENSE] Follow copyright header guidelines and delete For Jest software (#8428)

Performance

  • [jest-runtime] Fix module registry memory leak (#8282)
  • [jest-resolve] optimize resolve module path (#8388)
  • [jest-resolve] cache current directory (#8412)
  • [jest-get-type] Simplify checking for primitive (#8416)

24.7.1

Fixes

  • [@jest/config] Normalize testSequencer to its absolute path (#8267)
  • [@jest/console] Print to stderr when calling console.error, console.warn or console.assert using the jest-runtime CLI (#8261)

24.7.0

Features

  • [@jest/core, @jest/test-sequencer] Move testSequencer to individual package @jest/test-sequencer (#8223)
  • [@jest/core, jest-cli, jest-config] Add option testSequencer allow user use custom sequencer. (#8223)

Fixes

  • [expect] Add negative equality tests for iterables (#8260)
  • [jest-haste-map] Resolve fs watcher EMFILE error (#8258)

Chore & Maintenance

  • [expect] Remove repetition of matcherName and options in matchers (#8224)

Performance

24.6.0

Features

  • [expect]: Improve report when matcher fails, part 13 (#8077)
  • [@jest/core] Filter API pre-filter setup hook (#8142)
  • [jest-snapshot] Improve report when matcher fails, part 14 (#8132)
  • [@jest/reporter] Display todo and skip test descriptions when verbose is true (#8038)
  • [jest-runner] Support default exports for test environments (#8163)
  • [pretty-format] Support React.Suspense (#8180)
  • [jest-snapshot] Indent inline snapshots (#8198)
  • [jest-config] Support colors in displayName configuration (#8025)

Fixes

  • [jest-circus] Fix test retries with beforeAll/beforeEach failures (#8227)
  • [expect] Fix circular references in iterable equality (#8160)
  • [jest-changed-files] Change method of obtaining git root (#8052)
  • [jest-each] Fix test function type (#8145)
  • [jest-fake-timers] getTimerCount not taking immediates and ticks into account (#8139)
  • [jest-runtime] Allow json file as manual mock (#8159)
  • [pretty-format] Print BigInt as a readable number instead of {} (#8138)
  • [jest-core] Fix ability to transform dependencies required from globalSetup script (#8143)
  • [@jest/reporters] Fix Cannot read property converageData of null (#8168)
  • [jest-worker] JEST_WORKER_ID starts at 1 (#8205)
  • [jest-config] Use default cwd even if config contains a cwd property (#7923)
  • [jest-resolve-dependencies]: Remove internal peer dependencies (#8215)
  • [jest-resolve]: Remove internal peer dependencies (#8215)
  • [jest-snapshot]: Remove internal peer dependencies (#8215)
  • [jest-resolve] Fix requireActual with moduleNameMapper (#8210)
  • [jest-haste-map] Fix haste map duplicate detection in watch mode (#8237)

Chore & Maintenance

  • [*] Remove flow from code base (#8061)
  • [*] Use property initializer syntax in Jest codebase (#8117)
  • [*] Move @types/node to the root package.json (#8129)
  • [*] Add documentation and tests related to auto-mocking (#8099)
  • [*] Add jest-watch-typeahead as a devDependency (#6449)
  • [*] upgrade TS to 3.4.0-dev* for incremental builds (#8149)
  • [docs] Improve description of optional arguments in ExpectAPI.md (#8126)

Performance

  • [jest-haste-map] Optimize haste map data structure for serialization/deserialization (#8171)
  • [jest-haste-map] Avoid persisting haste map or processing files when not changed (#8153)
  • [jest-core] Improve performance of SearchSource.findMatchingTests by 15% (#8184)
  • [jest-resolve] Optimize internal cache lookup performance (#8183)
  • [jest-core] Dramatically improve watch mode performance (#8201)
  • [jest-transform] Cache regular expression instead of creating anew for every file in ScriptTransformer (#8235)
  • [jest-core] Fix memory leak of source map info and minor performance improvements (#8234)
  • [jest-console] Fix memory leak by releasing console output reference when printed to stdout (#8233)
  • [jest-runtime] Use Map instead of Object for module registry (#8232)

24.5.0

Features

  • [jest-haste-map] Expose throwOnModuleCollision via config.haste (#8113)

Chore & Maintenance

  • [expect] Export Matchers interface from expect (#8093)

24.4.0

Features

  • [jest-resolve] Now supports PnP environment without plugins (#8094)

Fixes

  • [expect] Compare DOM nodes even if there are multiple Node classes (#8064)
  • [jest-worker] worker.getStdout() can return null (#8083)
  • [jest-worker] Re-attach stdout and stderr from new processes/threads created after retries (#8087)
  • [jest-reporters/jest-runner] Serialize changedFiles passed to workers (#8090)

Chore & Maintenance

  • [*] Make sure to include d.ts files in the tarball when building (#8086)

24.3.1

Fixes

  • [jest-cli] export functions compatible with import {default} (#8080)
  • [jest-worker]: Fix retries and error notification in workers (#8079)

Chore & Maintenance

  • [pretty-format]: Use react-is instead of manual $$typeof checks (#8060)

24.3.0

We skipped 24.2.0 because a draft was accidentally published. Please use 24.3.0 or a newer version instead.

Features

  • [expect]: Improve report when matcher fails, part 10 (#7960)
  • [expect]: Improve report when matcher fails, part 11 (#8008)
  • [expect]: Improve report when matcher fails, part 12 (#8033)
  • [expect]: Improve report when matcher fails, part 7 (#7866)
  • [expect]: Improve report when matcher fails, part 8 (#7876)
  • [expect]: Improve report when matcher fails, part 9 (#7940)
  • [jest-circus/jest-jasmine2] Warn if describe returns a value (#7852)
  • [jest-config] Print error information on preset normalization error (#7935)
  • [jest-get-type] Add isPrimitive function (#7708)
  • [jest-haste-map] Add skipPackageJson option (#7778)
  • [jest-util] Add isPromise (#7852)
  • [pretty-format] Support React.memo (#7891)

Fixes

  • [expect] Fix toStrictEqual not considering arrays with objects having undefined values correctly (#7938)
  • [expect] Fix custom async matcher stack trace (#7652)
  • [expect] Fix non-object received value in toHaveProperty (#7986, #8067)
  • [expect] Fix non-symmetric equal for Number (#7948)
  • [expect] Remove duck typing and obsolete browser support code when comparing DOM nodes and use DOM-Level-3 API instead (#7995)
  • [jest-changed-files] Fix getChangedFilesFromRoots to not return parts of the commit messages as if they were files, when the commit messages contained multiple paragraphs (#7961)
  • [jest-changed-files] Fix pattern for HG changed files (#8066)
  • [jest-changed-files] Improve default file selection for Mercurial repos (#7880)
  • [jest-circus] Fix bug with test.only (#7888)
  • [jest-circus]: Throw explicit error when errors happen after test is considered complete (#8005)
  • [jest-cli] Fix prototype pollution vulnerability in dependency (#7904)
  • [jest-cli] Refactor -o and --coverage combined (#7611)
  • [jest-environment-node] Add missing globals: TextEncoder and TextDecoder (#8022)
  • [jest-haste-map] Enforce uniqueness in names (mocks and haste ids) (#8002)
  • [jest-jasmine2]: Throw explicit error when errors happen after test is considered complete (#8005)
  • [jest-mock] Adds a type check to prototype to allow mocks of objects with a primitive prototype property. (#8040)
  • [jest-transform] Normalize config and remove unnecessary checks, convert TestUtils.js to TypeScript (#7801)
  • [jest-util]Make sure to not fail if unable to assign toStringTag to the process object, which is read only in Node 12 (#8050)
  • [jest-validate] Fix validating async functions (#7894)
  • [jest-worker] Fix jest-worker when using pre-allocated jobs (#7934)
  • [static] Remove console log '-' on the front page (#7977)

Chore & Maintenance

  • [*]: Setup building, linting and testing of TypeScript (#7808, #7855, #7951)
  • [@jest/console]: Extract custom console implementations from jest-util into a new separate package (#8030)
  • [@jest/core] Create new package, which is jest-cli minus yargs and prompts (#7696)
  • [@jest/core]: Migrate to TypeScript (#7998)
  • [@jest/fake-timers]: Extract FakeTimers class from jest-util into a new separate package (#7987)
  • [@jest/reporter]: New package extracted from jest-cli (#7902)
  • [@jest/reporters]: Migrate to TypeScript (#7994, #8045)
  • [@jest/source-map]: Extract getCallsite function from jest-util into a new separate package (#8029)
  • [@jest/test-result]: Extract TestResult types and helpers into a new separate package (#8034)
  • [@jest/transform]: Migrate to TypeScript (#7918, #7945)
  • [@jest/transform]: New package extracted from jest-runtime (#7915)
  • [@jest/types]: New package to handle shared types (#7834)
  • [babel-jest]: Migrate to TypeScript (#7862)
  • [babel-plugin-jest-hoist]: Migrate to TypeScript (#7898)
  • [diff-sequences]: Migrate to Typescript (#7820)
  • [docs] Add missing import to docs (#7928)
  • [docs] Update automock configuration, add note related to manual mocks (#8051)
  • [docs] Update/Organize TestSequencer and testSchedulerHelper code comments(#7984)
  • [docs]: Fix image paths in SnapshotTesting.md for current and version 24 (#7872)
  • [docs]: Improve runAllTimers doc (it exhausts the micro-task queue) (#8031)
  • [docs]: Update CONTRIBUTING.md to add information about running jest with jest-circus locally (#8013).
  • [expect]: Migrate to TypeScript (#7919, #8028)
  • [jest-changed-files]: Migrate to TypeScript (#7827)
  • [jest-circus]: Migrate to TypeScript (#7916)
  • [jest-cli]: Migrate to TypeScript (#8024)
  • [jest-diff]: Migrate to TypeScript (#7824, #8027)
  • [jest-docblock]: Migrate to TypeScript (#7836)
  • [jest-each]: Migrate to Typescript (#8007)
  • [jest-each]: Refactor into multiple files with better types (#8018)
  • [jest-environment-jsdom]: Migrate to TypeScript (#8003)
  • [jest-environment-node]: Migrate to TypeScript (#7985)
  • [jest-get-type]: Migrate to TypeScript (#7818)
  • [jest-haste-map]: Migrate to TypeScript (#7854, #7951)
  • [jest-jasmine2]: TS migration (#7970)
  • [jest-leak-detector]: Migrate to TypeScript (#7825)
  • [jest-matcher-utils]: Migrate to TypeScript (#7835)
  • [jest-message-util]: Migrate to TypeScript (#7834)
  • [jest-mock]: Migrate to TypeScript (#7847, #7850, #7971)
  • [jest-phabricator]: Migrate to TypeScript (#7965)
  • [jest-regex-util]: Migrate to TypeScript (#7822)
  • [jest-repl]: Migrate to TypeScript (#8000)
  • [jest-resolve-dependencies]: Migrate to TypeScript (#7922)
  • [jest-resolve]: Migrate to TypeScript (#7871)
  • [jest-runner]: Migrate to TypeScript (#7968)
  • [jest-runtime]: Migrate to TypeScript (#7964, #7988)
  • [jest-serializer]: Migrate to TypeScript (#7841)
  • [jest-snapshot]: Migrate to TypeScript (#7899)
  • [jest-util]: Migrate to TypeScript (#7844, #8021)
  • [jest-validate]: Migrate to TypeScript (#7991)
  • [jest-watcher]: Migrate to TypeScript (#7843)
  • [jest-worker]: Migrate to TypeScript (#7853)
  • [jest]: Migrate to TypeScript (#8024)
  • [pretty-format]: Migrate to TypeScript (#7809, #7972)

Performance

  • [jest-haste-map] Optimize haste map tracking of deleted files with Watchman. (#8056)

24.1.0

Features

  • [jest-resolve]: Pass default resolver into custom resolvers (#7714)
  • [jest-cli]: global{Setup,Teardown} use default export with es modules (#7750)
  • [jest-runtime] Better error messages when the jest environment is used after teardown by async code (#7756)
  • [jest-jasmine2] Will now only execute at most 5 concurrent tests within the same testsuite when using test.concurrent (#7770)
  • [jest-circus] Same as [jest-jasmine2], only 5 tests will run concurrently by default (#7770)
  • [jest-config] A new maxConcurrency option allows to change the number of tests allowed to run concurrently (#7770)

Fixes

  • [jest-runtime] Fix for mocks not working with module name mapper (#7787)
  • [jest-cli] Break dependency cycle when using Jest programmatically (#7707)
  • [jest-config] Extract setupFilesAfterEnv from preset (#7724)
  • [jest-cli] Do not execute any globalSetup or globalTeardown if there are no tests to execute (#7745)
  • [jest-runtime] Lock down version of write-file-atomic (#7725)
  • [jest-cli] Print log entries when logging happens after test environment is torn down (#7731)
  • [jest-config] Do not use a uuid as name since that breaks caching (#7746)
  • [jest-config] Make sure normalize can consume Defaults without warnings (#7742)
  • [jest-config] Allow moduleFileExtensions without 'js' for custom runners (#7751)
  • [jest-cli] Load transformers before installing require hooks (#7752)
  • [jest-cli] Handle missing numTodoTests in test results (#7779)
  • [jest-runtime] Exclude setup/teardown files from coverage report (#7790)
  • [babel-jest] Throw an error if babel-jest tries to transform a file ignored by Babel (#7797)
  • [babel-plugin-jest-hoist] Ignore TS type references when looking for out-of-scope references (#7799)
  • [expect] fixed asymmetrical equality of cyclic objects (#7730)

Chore & Maintenance

  • [jest] Update jest-junit to ^6.2.1 (#7739)
  • [website] Fix broken help link on homepage (#7706)
  • [docs] Changed Babel setup documentation to correctly compile async/await (#7701)

24.0.0

Features

  • [jest-each] [BREAKING] Add primitive pretty printing for interpolated titles (#7694)
  • [jest-runtime] Add jest.isolateModules for scoped module initialization (#6701)
  • [jest-diff] [BREAKING] Support diffing numbers and booleans instead of returning null for different ones (#7605)
  • [jest-diff] [BREAKING] Replace diff with diff-sequences package (#6961)
  • [jest-cli] [BREAKING] Only set error process error codes when they are non-zero (#7363)
  • [jest-config] [BREAKING] Deprecate setupTestFrameworkScriptFile in favor of new setupFilesAfterEnv (#7119)
  • [jest-worker] [BREAKING] Add functionality to call a setup method in the worker before the first call and a teardown method when ending the farm (#7014)
  • [jest-config] [BREAKING] Set default notifyMode to failure-change (#7024)
  • [jest-haste-map] [BREAKING] Remove support for @providesModule (#6104)
  • [jest-haste-map] [BREAKING] Replace internal data structures to improve performance (#6960)
  • [jest-haste-map] [BREAKING] Use relative paths to allow remote caching (#7020)
  • [jest-haste-map] [BREAKING] Remove name from hash in HasteMap.getCacheFilePath (#7218)
  • [babel-preset-jest] [BREAKING] Export a function instead of an object for Babel 7 compatibility (#7203)
  • [jest-haste-map] [BREAKING] Expose relative paths when getting the file iterator (#7321)
  • [jest-cli] [BREAKING] Run code transforms over global{Setup,Teardown} (#7562)
  • [jest-haste-map] Add hasteFS.getSize(path) (#7580)
  • [jest-cli] Print version ending in -dev when running a local Jest clone (#7582)
  • [jest-cli] Add Support for globalSetup and globalTeardown in projects (#6865)
  • [jest-runtime] Add extraGlobals to config to load extra global variables into the execution vm (#7454)
  • [jest-util] Export specialChars containing Unicode characters and ANSI escapes for console output (#7532)
  • [jest-config] Handle typescript (ts and tsx) by default (#7533)
  • [jest-validate] Add support for comments in package.json using a "//" key (#7295)
  • [jest-config] Add shorthand for watch plugins and runners (#7213)
  • [jest-jasmine2/jest-circus/jest-cli] Add test.todo (#6996)
  • [pretty-format] Option to not escape strings in diff messages (#5661)
  • [jest-haste-map] Add getFileIterator to HasteFS for faster file iteration (#7010)
  • [jest-config] Add readConfigs function, previously in jest-cli (#7096)
  • [jest-snapshot] Enable configurable snapshot paths (#6143)
  • [pretty-format] Support HTMLCollection and NodeList in DOMCollection plugin (#7125)
  • [jest-runtime] Pass the normalized configuration to script transformers (#7148)
  • [expect] Improve report when assertion fails, part 3 (#7152)
  • [jest-runtime] If require fails without a file extension, print all files that match with one (#7160)
  • [jest-haste-map] Make ignorePattern optional (#7166)
  • [jest-haste-map] Add getCacheFilePath to get the path to the cache file for a HasteMap instance (#7217)
  • [jest-runtime] Remove cacheDirectory from ignorePattern for HasteMap if not necessary (#7166)
  • [jest-validate] Add syntax to validate multiple permitted types (#7207)
  • [jest-config] Accept an array as as well as a string for testRegex (#7209)
  • [expect/jest-matcher-utils] Improve report when assertion fails, part 4 (#7241)
  • [expect/jest-matcher-utils] Improve report when assertion fails, part 5 (#7557)
  • [expect] Check constructor equality in .toStrictEqual() (#7005)
  • [jest-util] Add jest.getTimerCount() to get the count of scheduled fake timers (#7285)
  • [jest-config] Add dependencyExtractor option to use a custom module to extract dependencies from files (#7313, #7349, #7350, #7362)
  • [jest-haste-map] Accept a getCacheKey method in hasteImplModulePath modules to reset the cache when the logic changes (#7350)
  • [jest-config] Add haste.computeSha1 option to compute the sha-1 of the files in the haste map (#7345)
  • [expect] expect(Infinity).toBeCloseTo(Infinity) Treats Infinity as equal in toBeCloseTo matcher (#7405)
  • [jest-worker] Add node worker-thread support to jest-worker (#7408)
  • [jest-config] Allow bail setting to be configured with a number allowing tests to abort after n of failures (#7335)
  • [jest-config] Allow % based configuration of --max-workers (#7494)
  • [jest-runner] Instantiate the test environment class with the current testPath (#7442)
  • [jest-config] Always resolve jest-environment-jsdom from jest-config (#7476)
  • [expect] Improve report when assertion fails, part 6 (#7621)
  • [jest-worker] Add enableWorkerThreads option to explicitly opt-in to worker_threads if available (#7681)

Fixes

  • [expect] Accept inherited properties in toHaveProperty matcher (#7686)
  • [jest-diff] Do not claim that -0 and 0 have no visual difference (#7605)
  • [jest-mock] Fix automock for numeric function names (#7653)
  • [jest-config] Ensure existsSync is only called with a string parameter (#7607)
  • [expect] toStrictEqual considers sparseness of arrays. (#7591)
  • [jest-cli] Fix empty coverage data for untested files (#7388)
  • [jest-cli] [BREAKING] Do not use text-summary coverage reporter by default if other reporters are configured (#7058)
  • [jest-mock] [BREAKING] Fix bugs with mock/spy result tracking of recursive functions (#6381)
  • [jest-haste-map] [BREAKING] Recover files correctly after haste name collisions are fixed (#7329)
  • [pretty-format] [BREAKING] Omit non-enumerable symbol properties (#7448)
  • [*] [BREAKING] Upgrade to Babel 7, dropping support for Babel 6 (#7016)
  • [jest-cli] Avoid watch mode causing bad terminal behavior in some cases (#7523)
  • [jest-runner/jest-worker] Fix missing console output in verbose mode (#6871)
  • [expect] Standardize file naming in expect (#7306)
  • [jest-each] Add empty array validation check (#7249)
  • [jest-cli] Interrupt tests if interactive watch plugin key is pressed (#7222)
  • [jest-each] Add each array validation check (#7033)
  • [jest-haste-map] Do not visit again files with the same sha-1 (#6990)
  • [jest-jasmine2] Fix memory leak in Error objects hold by the framework (#6965)
  • [jest-haste-map] Fixed Haste whitelist generation for scoped modules on Windows (#6980)
  • [jest-mock] Fix inheritance of static properties and methods in mocks (#7003)
  • [jest-mock] Fix mocking objects without Object.prototype in their prototype chain (#7003)
  • [jest-mock] Check _isMockFunction is true rather than truthy on potential mocks (#7017)
  • [jest-cli] Update jest-cli to show git ref in message when using changedSince (#7028)
  • [jest-jasmine2] Fix crash when test return Promise rejected with null (#7049)
  • [jest-runtime] Check _isMockFunction is true rather than truthy on potential global mocks (#7017)
  • [jest-jasmine] Show proper error message from async assert errors (#6821)
  • [jest-jasmine2] Better error message when a describe block is empty (#6372)
  • [jest-jasmine2] Pending calls inside async tests are reported as pending not failed (#6782)
  • [jest-circus] Better error message when a describe block is empty (#6372)
  • [jest-jasmine2] Add missing testLocationResults for xit and fit (#6482)
  • [expect] Return false from asymmetric matchers if received value isn’t string (#7107)
  • [jest-cli] Fix unhandled error when a bad revision is provided to changedSince (#7115)
  • [jest-config] Moved dynamically assigned cwd from jest-cli to default configuration in jest-config (#7146)
  • [jest-config] Fix getMaxWorkers on termux (#7154)
  • [jest-runtime] Throw an explicit error if js is missing from moduleFileExtensions (#7160)
  • [jest-runtime] Fix missing coverage when using negative glob pattern in testMatch (#7170)
  • [*] Ensure maxWorkers is at least 1 (was 0 in some cases where there was only 1 CPU) (#7182)
  • [jest-runtime] Fix transform cache invalidation when requiring a test file from multiple projects (#7186)
  • [jest-changed-files] Return correctly the changed files when using lastCommit=true on Mercurial repositories (#7228)
  • [babel-jest] Cache includes babel environment variables (#7239)
  • [jest-config] Use strings instead of RegExp instances in normalized configuration (#7251)
  • [jest-circus] Make sure to display real duration even if time is mocked (#7264)
  • [expect] Improves the failing message for toStrictEqual matcher. (#7224)
  • [expect] Improves the failing message for toEqual matcher. (#7325)
  • [jest-resolve] Fix not being able to resolve path to mapped file with custom platform (#7312)
  • [jest-message-util] Improve parsing of error messages for unusually formatted stack traces (#7319)
  • [jest-runtime] Ensure error message text is not lost on errors with code frames (#7319)
  • [jest-haste-map] Fix to resolve path that is start with words same as rootDir (#7324)
  • [expect] Fix toMatchObject matcher when used with Object.create(null) (#7334)
  • [jest-haste-map] Remove legacy condition for duplicate module detection (#7333)
  • [jest-haste-map] Fix require detection with trailing commas and ignore import typeof modules (#7385)
  • [jest-cli] Fix to set prettierPath via config file (#7412)
  • [expect] Test more precisely for class instance getters (#7477)
  • [jest-cli] Support dashed args (#7497)
  • [jest-cli] Fix to run in band tests if watch mode enable when runInBand arg used (#7518)
  • [jest-runtime] Fix mistake as test files when run coverage issue. (#7506)
  • [jest-cli] print info about passWithNoTests flag (#7309)
  • [pretty-format] Omit unnecessary symbol filter for object keys (#7457)
  • [jest-runtime] Fix requireActual on node_modules with mock present (#7404)
  • [jest-resolve] Fix isBuiltinModule to support versions of node without module.builtinModules (#7565)
  • [babel-jest] Set cwd to be resilient to it changing during the runtime of the tests (#7574)
  • [jest-snapshot] Write and read snapshots from disk even if fs is mocked (#7080)
  • [jest-config] Normalize config.cwd and config.rootDir using `realpath (#7598)
  • [jest-environment-node] Fix buffer property is not ArrayBuffer issue. (#7626)
  • [babel-plugin-jest-hoist] Ignore TS type annotations when looking for out-of-scope references (#7641)
  • [jest-config] Add name to project if one does not exist to pick correct resolver (#5862)
  • [jest-runtime] Pass watchPathIgnorePatterns to Haste instance (#7585)
  • [jest-runtime] Resolve mock files via Haste when using require.resolve (#7687)

Chore & Maintenance

  • [*] [BREAKING] Require Node.js 6+ for all packages (#7258)
  • [jest-util] [BREAKING] Remove long-deprecated globals for fake timers (#7285)
  • [*] [BREAKING] Upgrade to Micromatch 3 (#6650)
  • [*] [BREAKING] Remove regenerator-runtime injection (#7595)
  • [jest-worker] Disable worker_threads to avoid issues with libraries to ready for it (#7681)
  • [docs] Fix message property in custom matcher example to return a function instead of a constant. (#7426)
  • [jest-circus] Standardize file naming in jest-circus (#7301)
  • [docs] Add synchronous test.each setup (#7150)
  • [docs] Add this.extend to the Custom Matchers API reference (#7130)
  • [docs] Fix default value for coverageReporters value in configuration docs (#7126)
  • [docs] Add link for jest-extended in expect docs (#7078)
  • [jest-util] Add ErrorWithStack class (#7067)
  • [docs] Document --runTestsByPath CLI parameter (#7046)
  • [docs] Fix babel-core installation instructions (#6745)
  • [docs] Explain how to rewrite assertions to avoid large irrelevant diff (#6971)
  • [examples] add example using Babel 7 (#6983)
  • [docs] Replace shallow equality with referential identity in ExpectAPI.md (#6991)
  • [jest-changed-files] Refactor to use execa over child_process (#6987)
  • [*] Bump dated dependencies (#6978)
  • [scripts] Don’t make empty sub-folders for ignored files in build folder (#7001)
  • [docs] Add missing export statement in puppeteer_environment.js under docs/Puppeteer.md (#7127)
  • [docs] Removed useless expect.assertions in TestingAsyncCode.md (#7131)
  • [docs] Remove references to @providesModule which isn't supported anymore (#7147)
  • [docs] Update setupFiles documentation for clarity (#7187)
  • [docs] Change require.require* to jest.require* (#7210)
  • [jest-circus] Add readme.md (#7198)
  • [jest-editor-support] Remove from the repository (#7232)
  • [jest-test-typescript-parser] Remove from the repository (#7232)
  • [tests] Free tests from the dependency on value of FORCE_COLOR (#6585)
  • [*] Add babel plugin to make sure Jest is unaffected by fake Promise implementations (#7225)
  • [docs] Add correct default value for testUrl config option (#7277)
  • [docs] Remove duplicate code in MockFunctions (#7297)
  • [*] Add check for Facebook copyright headers on CI (#7370)
  • [*] Update Facebook copyright headers (#7589)
  • [jest-haste-map] Refactor dependencyExtractor and tests (#7385)
  • [docs] Clearify conditional setting of NODE_ENV (#7369)
  • [docs] Clarify conditional setting of NODE_ENV (#7369)
  • [*] Standardize file names (#7316, #7266, #7238, #7314, #7467, #7464), #7471)
  • [docs] Add testPathIgnorePatterns in CLI documentation (#7440)
  • [docs] Removed misleading text about describe() grouping together tests into a test suite (#7434)
  • [diff-sequences] Add performance benchmark to package (#7603)
  • [*] Replace as many Object.assign with object spread as possible (#7627)
  • [ci] Initial support for Azure Pipelines (#7556)

Performance

  • [jest-mock] Improve getType function performance. (#7159)

23.6.0

Features

  • [jest-cli] Add changedSince to allowed watch mode configs (#6955)
  • [babel-jest] Add support for babel.config.js added in Babel 7.0.0 (#6911)
  • [jest-resolve] Add support for an experimental mapper option (Watchman crawler only) that adds virtual files to the Haste map (#6940)

Fixes

  • [jest-resolve] Only resolve realpath once in try-catch (#6925)
  • [expect] Fix TypeError in toBeInstanceOf on null or undefined (#6912)
  • [jest-jasmine2] Throw a descriptive error if the first argument supplied to a hook was not a function (#6917) and (#6931)
  • [jest-circus] Throw a descriptive error if the first argument supplied to a hook was not a function (#6917) and (#6931)
  • [expect] Fix variadic custom asymmetric matchers (#6898)
  • [jest-cli] Fix incorrect testEnvironmentOptions warning (#6852)
  • [jest-each] Prevent done callback being supplied to describe (#6843)
  • [jest-config] Better error message for a case when a preset module was found, but no jest-preset.js or jest-preset.json at the root (#6863)
  • [jest-haste-map] Catch crawler error when unsuccessfully reading directories (#6761)

Chore & Maintenance

  • [docs] Add custom toMatchSnapshot matcher docs (#6837)
  • [docs] Improve the documentation regarding preset configuration (#6864)
  • [docs] Clarify usage of --projects CLI option (#6872)
  • [docs] Correct failure-change notification mode (#6878)
  • [scripts] Don’t remove node_modules from subdirectories of presets in e2e tests (#6948)
  • [diff-sequences] Double-check number of differences in tests (#6953)

23.5.0

Features

  • [jest-cli] Add package name to NotifyReporter notification (#5898)
  • [jest-runner] print stack trace when process.exit is called from user code (#6714)
  • [jest-each] introduces %# option to add index of the test to its title (#6414)
  • [pretty-format] Support serializing DocumentFragment (#6705)
  • [jest-validate] Add recursive and recursiveBlacklist options for deep config checks (#6802)
  • [jest-cli] Check watch plugins for key conflicts (#6697)

Fixes

  • [jest-snapshot] Mark snapshots as obsolete when moved to an inline snapshot (#6773)
  • [jest-config] Fix --coverage with --findRelatedTests overwriting collectCoverageFrom options (#6736)
  • [jest-config] Update default config for testURL from 'about:blank' to 'http://localhost' to address latest JSDOM security warning. (#6792)
  • [jest-cli] Fix testMatch not working with negations (#6648)
  • [jest-cli] Don't report promises as open handles (#6716)
  • [jest-each] Add timeout support to parameterised tests (#6660)
  • [jest-cli] Improve the message when running coverage while there are no files matching global threshold (#6334)
  • [jest-snapshot] Correctly merge property matchers with the rest of the snapshot in toMatchSnapshot. (#6528)
  • [jest-snapshot] Add error messages for invalid property matchers. (#6528)
  • [jest-cli] Show open handles from inside test files as well (#6263)
  • [jest-haste-map] Fix a problem where creating folders ending with .js could cause a crash (#6818)

Chore & Maintenance

  • [docs] Document another option to avoid warnings with React 16 (#5258)
  • [docs] Add note explaining when jest.setTimeout should be called (#6817)
  • [docs] Fixed bug in example code (#6828)

23.4.2

Performance

  • [jest-changed-files] limit git and hg commands to specified roots (#6732)

Fixes

  • [jest-circus] Fix retryTimes so errors are reset before re-running (#6762)
  • [docs] Update expect.objectContaining() description (#6754)
  • [babel-jest] Make getCacheKey() take into account createTransformer options (#6699)
  • [jest-jasmine2] Use prettier through require instead of localRequire. Fixes matchInlineSnapshot where prettier dependencies like path and fs are mocked with jest.mock. (#6776)
  • [docs] Fix contributors link (#6711)
  • [website] Fix website versions page to link to correct language (#6734)
  • [expect] Update toContain suggestion to contain equal message (#6810)

23.4.1

Features

  • [jest-cli] Watch plugins now have access to a broader range of global configuration options in their updateConfigAndRun callbacks, so they can provide a wider set of extra features (#6473)
  • [jest-snapshot] babel-traverse is now passed to jest-snapshot explicitly to avoid unnecessary requires in every test

Fixes

  • [jest-haste-map] Optimize watchman crawler by using glob on initial query (#6689)
  • [pretty-format] Fix formatting of invalid Date objects (#6635)

23.4.0

Features

  • [jest-haste-map] Add computeDependencies flag to avoid opening files if not needed (#6667)
  • [jest-runtime] Support require.resolve.paths (#6471)
  • [jest-runtime] Support paths option for require.resolve (#6471)

Fixes

  • [jest-runner] Force parallel runs for watch mode, to avoid TTY freeze (#6647)
  • [jest-cli] properly reprint resolver errors in watch mode (#6407)
  • [jest-cli] Write configuration to stdout when the option was explicitly passed to Jest (#6447)
  • [jest-cli] Fix regression on non-matching suites (6657)
  • [jest-runtime] Roll back micromatch version to prevent regression when matching files (#6661)

23.3.0

Features

  • [jest-cli] Allow watch plugin to be configured (#6603)
  • [jest-snapshot] Introduce toMatchInlineSnapshot and toThrowErrorMatchingInlineSnapshot matchers (#6380)

Fixes

  • [jest-regex-util] Improve handling already escaped path separators on Windows (#6523)
  • [jest-cli] Fix testNamePattern value with interactive snapshots (#6579)
  • [jest-cli] Fix enter to interrupt watch mode (#6601)

Chore & Maintenance

  • [website] Switch domain to https://jestjs.io (#6549)
  • [tests] Improve stability of yarn test on Windows (#6534)
  • [*] Transpile object shorthand into Node 4 compatible syntax (#6582)
  • [*] Update all legacy links to jestjs.io (#6622)
  • [docs] Add docs for 23.1, 23.2, and 23.3 (#6623)
  • [website] Only test/deploy website if relevant files are changed (#6626)
  • [docs] Describe behavior of resetModules option when set to false (#6641)

23.2.0

Features

  • [jest-each] Add support for keyPaths in test titles (#6457)
  • [jest-cli] Add jest --init option that generates a basic configuration file with a short description for each option (#6442)
  • [jest.retryTimes] Add jest.retryTimes() option that allows failed tests to be retried n-times when using jest-circus. (#6498)

Fixes

  • [docs] Fixed error in documentation for expect.not.arrayContaining(array). (#6491)
  • [jest-cli] Add check to make sure one or more tests have run before notifying when using --notify (#6495)
  • [jest-cli] Pass globalConfig as a parameter to globalSetup and globalTeardown functions (#6486)
  • [jest-config] Add missing options to the defaults object (#6428)
  • [expect] Using symbolic property names in arrays no longer causes the toEqual matcher to fail (#6391)
  • [expect] toEqual no longer tries to compare non-enumerable symbolic properties, to be consistent with non-symbolic properties. (#6398)
  • [jest-util] console.timeEnd now properly log elapsed time in milliseconds. (#6456)
  • [jest-mock] Fix MockNativeMethods access in react-native jest.mock() (#6505)
  • [jest-cli] Fix reporters for moduleName = 'default' (#6542)

Chore & Maintenance

  • [docs] Add jest-each docs for 1 dimensional arrays (#6444)

23.1.0

Features

  • [jest-each] Add pretty-format serialising to each titles (#6357)
  • [jest-cli] shouldRunTestSuite watch hook now receives an object with config, testPath and duration (#6350)
  • [jest-each] Support one dimensional array of data (#6351)
  • [jest-watch] create new package jest-watch to ease custom watch plugin development (#6318)
  • [jest-circus] Make hooks in empty describe blocks error (#6320)
  • Add a config/CLI option errorOnDeprecated which makes calling deprecated APIs throw hepful error messages (#6339)

Fixes

  • [jest-each] Fix pluralising missing arguments error (#6369)
  • [jest-each] Stop test title concatenating extra args (#6346)
  • [expect] toHaveBeenNthCalledWith/nthCalledWith gives wrong call messages if not matched (#6340)
  • [jest-each] Make sure invalid arguments to each points back to the user's code (#6347)
  • [expect] toMatchObject throws TypeError when a source property is null (#6313)
  • [jest-cli] Normalize slashes in paths in CLI output on Windows (#6310)
  • [jest-cli] Fix run beforeAll in excluded suites tests" mode. (#6234)
  • [jest-haste-map] Compute SHA-1s for non-tracked files when using Node crawler (#6264)

Chore & Maintenance

  • [docs] Improve documentation of mockClear, mockReset, and mockRestore (#6227)
  • [jest-each] Refactor each to use shared implementation with core (#6345)
  • [jest-each] Update jest-each docs for serialising values into titles (#6337)
  • [jest-circus] Add dependency on jest-each (#6309)
  • [filenames] Rename "integration-tests" to "e2e" (#6315)
  • [docs] Mention the use of commit hash with --changedSince flag (#6330)

23.0.1

Chore & Maintenance

  • [jest-jasemine2] Add dependency on jest-each (#6308)
  • [jest-each] Move jest-each into core Jest (#6278)
  • [examples] Update typescript example to using ts-jest (#6260)

Fixes

  • [pretty-format] Serialize inverse asymmetric matchers correctly (#6272)

23.0.0

Features

  • [expect] Expose getObjectSubset, iterableEquality, and subsetEquality (#6210)
  • [jest-snapshot] Add snapshot property matchers (#6210)
  • [jest-config] Support jest-preset.js files within Node modules (#6185)
  • [jest-cli] Add --detectOpenHandles flag which enables Jest to potentially track down handles keeping it open after tests are complete. (#6130)
  • [jest-jasmine2] Add data driven testing based on jest-each (#6102)
  • [jest-matcher-utils] Change "suggest to equal" message to be more advisory (#6103)
  • [jest-message-util] Don't ignore messages with vendor anymore (#6117)
  • [jest-validate] Get rid of jest-config dependency (#6067)
  • [jest-validate] Adds option to inject deprecationEntries (#6067)
  • [jest-snapshot] [BREAKING] Concatenate name of test, optional snapshot name and count (#6015)
  • [jest-runtime] Allow for transform plugins to skip the definition process method if createTransformer method was defined. (#5999)
  • [expect] Add stack trace for async errors (#6008)
  • [jest-jasmine2] Add stack trace for timeouts (#6008)
  • [jest-jasmine2] Add stack trace for thrown non-Errors (#6008)
  • [jest-runtime] Prevent modules from marking themselves as their own parent (#5235)
  • [jest-mock] Add support for auto-mocking generator functions (#5983)
  • [expect] Add support for async matchers (#5919)
  • [expect] Suggest toContainEqual (#5953)
  • [jest-config] Export Jest's default options (#5948)
  • [jest-editor-support] Move coverage to ProjectWorkspace.collectCoverage (#5929)
  • [jest-editor-support] Add coverage option to runner (#5836)
  • [jest-haste-map] Support extracting dynamic imports (#5883)
  • [expect] Improve output format for mismatchedArgs in mock/spy calls. (#5846)
  • [jest-cli] Add support for using --coverage in combination with watch mode, --onlyChanged, --findRelatedTests and more (#5601)
  • [jest-jasmine2] [BREAKING] Adds error throwing and descriptive errors to it/ test for invalid arguments. [jest-circus] Adds error throwing and descriptive errors to it/ test for invalid arguments (#5558)
  • [jest-matcher-utils] Add isNot option to matcherHint function (#5512)
  • [jest-config] Add <rootDir> to runtime files not found error report (#5693)
  • [expect] Make toThrow matcher pass only if Error object is returned from promises (#5670)
  • [expect] Add isError to utils (#5670)
  • [expect] Add inverse matchers (expect.not.arrayContaining, etc., #5517)
  • [expect] expect.extend now also extends asymmetric matchers (#5503)
  • [jest-mock] Update spyOnProperty to support spying on the prototype chain (#5753)
  • [jest-mock] Add tracking of return values in the mock property (#5752)
  • [jest-mock] Add tracking of thrown errors in the mock property (#5764)
  • [expect]Add nthCalledWith spy matcher (#5605)
  • [jest-cli] Add isSerial property that runners can expose to specify that they can not run in parallel (#5706)
  • [expect] Add .toBeCalledTimes and toHaveBeenNthCalledWith aliases (#5826)
  • [jest-cli] Interactive Snapshot Mode improvements (#5864)
  • [jest-editor-support] Add no-color option to runner (#5909)
  • [jest-jasmine2] Pretty-print non-Error object errors (#5980)
  • [jest-message-util] Include column in stack frames (#5889)
  • [expect] Introduce toStrictEqual (#6032)
  • [expect] Add return matchers (#5879)
  • [jest-cli] Improve snapshot summaries (#6181)
  • [expect] Include custom mock names in error messages (#6199)
  • [jest-diff] Support returning diff from oneline strings (#6221)
  • [expect] Improve return matchers (#6172)
  • [jest-cli] Overhaul watch plugin hooks names (#6249)
  • [jest-mock] [BREAKING] Include tracked call results in serialized mock (#6244)

Fixes

  • [jest-cli] Fix stdin encoding to utf8 for watch plugins. (#6253)
  • [expect] Better detection of DOM Nodes for equality (#6246)
  • [jest-cli] Fix misleading action description for F key when in "only failed tests" mode. (#6167)
  • [jest-worker] Stick calls to workers before processing them (#6073)
  • [babel-plugin-jest-hoist] Allow using console global variable (#6075)
  • [jest-jasmine2] Always remove node core message from assert stack traces (#6055)
  • [expect] Add stack trace when expect.assertions and expect.hasAssertions causes test failures. (#5997)
  • [jest-runtime] Throw a more useful error when trying to require modules after the test environment is torn down (#5888)
  • [jest-mock] [BREAKING] Replace timestamps with invocationCallOrder (#5867)
  • [jest-jasmine2] Install sourcemap-support into normal runtime to catch runtime errors (#5945)
  • [jest-jasmine2] Added assertion error handling inside afterAll hook (#5884)
  • [jest-cli] Remove the notifier actions in case of failure when not in watch mode. (#5861)
  • [jest-mock] Extend .toHaveBeenCalled return message with outcome (#5951)
  • [jest-runner] Assign process.env.JEST_WORKER_ID="1" when in runInBand mode (#5860)
  • [jest-cli] Add descriptive error message when trying to use globalSetup/globalTeardown file that doesn't export a function. (#5835)
  • [expect] Do not rely on instanceof RegExp, since it will not work for RegExps created inside of a different VM (#5729)
  • [jest-resolve] Update node module resolution algorithm to correctly handle symlinked paths (#5085)
  • [jest-editor-support] Update Settings to use spawn in shell option (#5658)
  • [jest-cli] Improve the error message when 2 projects resolve to the same config (#5674)
  • [jest-runtime] remove retainLines from coverage instrumentation (#5692)
  • [jest-cli] Fix update snapshot issue when using watchAll (#5696)
  • [expect] Fix rejects.not matcher (#5670)
  • [jest-runtime] Prevent Babel warnings on large files (#5702)
  • [jest-mock] Prevent mockRejectedValue from causing unhandled rejection (#5720)
  • [pretty-format] Handle React fragments better (#5816)
  • [pretty-format] Handle formatting of React.forwardRef and Context components (#6093)
  • [jest-cli] Switch collectCoverageFrom back to a string (#5914)
  • [jest-regex-util] Fix handling regex symbols in tests path on Windows (#5941)
  • [jest-util] Fix handling of NaN/Infinity in mock timer delay (#5966)
  • [jest-resolve] Generalise test for package main entries equivalent to ".". (#5968)
  • [jest-config] Ensure that custom resolvers are used when resolving the configuration (#5976)
  • [website] Fix website docs (#5853)
  • [expect] Fix isEqual Set and Map to compare object values and keys regardless of order (#6150)
  • [pretty-format] [BREAKING] Remove undefined props from React elements (#6162)
  • [jest-haste-map] Properly resolve mocked node modules without package.json defined (#6232)

Chore & Maintenance

  • [jest-runner] Move sourcemap installation from jest-jasmine2 to jest-runner (#6176)
  • [jest-cli] Use yargs's built-in version instead of rolling our own (#6215)
  • [docs] Add explanation on how to mock methods not implemented in JSDOM
  • [jest-jasmine2] Simplify Env.execute and TreeProcessor to setup and clean resources for the top suite the same way as for all of the children suites (#5885)
  • [babel-jest] [BREAKING] Always return object from transformer (#5991)
  • [*] Run Prettier on compiled output (#5858)
  • [jest-cli] Add fileChange hook for plugins (#5708)
  • [docs] Add docs on using jest.mock(...) (#5648)
  • [docs] Mention Jest Puppeteer Preset (#5722)
  • [docs] Add jest-community section to website (#5675)
  • [docs] Add versioned docs for v22.4 (#5733)
  • [docs] Improve Snapshot Testing Guide (#5812)
  • [jest-runtime] [BREAKING] Remove jest.genMockFn and jest.genMockFunction (#6173)
  • [jest-message-util] Avoid adding unnecessary indent to blank lines in stack traces (#6211)

22.4.2

Fixes

  • [jest-haste-map] Recreate Haste map when deserialization fails (#5642)

22.4.1

Fixes

  • [jest-haste-map] Parallelize Watchman calls in crawler (#5640)
  • [jest-editor-support] Update TypeScript definitions (#5625)
  • [babel-jest] Remove retainLines argument to babel. (#5594)

Features

  • [jest-runtime] Provide require.main property set to module with test suite (#5618)

Chore & Maintenance

  • [docs] Add note about Node version support (#5622)
  • [docs] Update to use yarn (#5624)
  • [docs] Add how to mock scoped modules to Manual Mocks doc (#5638)

22.4.0

Fixes

  • [jest-haste-map] Overhauls how Watchman crawler works fixing Windows (#5615)
  • [expect] Allow matching of Errors against plain objects (#5611)
  • [jest-haste-map] Do not read binary files in Haste, even when instructed to do so (#5612)
  • [jest-cli] Don't skip matchers for exact files (#5582)
  • [docs] Update discord links (#5586)
  • [jest-runtime] Align handling of testRegex on Windows between searching for tests and instrumentation checks (#5560)
  • [jest-config] Make it possible to merge transform option with preset (#5505)
  • [jest-util] Fix console.assert behavior in custom & buffered consoles (#5576)

Features

  • [docs] Add MongoDB guide (#5571)
  • [jest-runtime] Deprecate mapCoverage option. (#5177)
  • [babel-jest] Add option to return sourcemap from the transformer separately from source. (#5177)
  • [jest-validate] Add ability to log deprecation warnings for CLI flags. (#5536)
  • [jest-serializer] Added new module for serializing. Works using V8 or JSON (#5609)
  • [docs] Add a documentation note for project displayName configuration (#5600)

Chore & Maintenance

  • [docs] Update automatic mocks documentation (#5630)

jest 22.3.0

Fixes

  • [expect] Add descriptive error message to CalledWith methods when missing optional arguments (#5547)
  • [jest-cli] Fix inability to quit watch mode while debugger is still attached (#5029)
  • [jest-haste-map] Properly handle platform-specific file deletions (#5534)

Features

  • [jest-util] Add the following methods to the "console" implementations: assert, count, countReset, dir, dirxml, group, groupCollapsed, groupEnd, time, timeEnd (#5514)
  • [docs] Add documentation for interactive snapshot mode (#5291)
  • [jest-editor-support] Add watchAll flag (#5523)
  • [jest-cli] Support multiple glob patterns for collectCoverageFrom (#5537)
  • [docs] Add versioned documentation to the website (#5541)

Chore & Maintenance

  • [jest-config] Allow <rootDir> to be used with collectCoverageFrom (#5524)
  • [filenames] Standardize files names in "integration-tests" folder (#5513)

jest 22.2.2

Fixes

  • [babel-jest] Revert "Remove retainLines from babel-jest" (#5496)
  • [jest-docblock] Support multiple of the same @pragma. (#5502)

Features

  • [jest-worker] Assign a unique id for each worker and pass it to the child process. It will be available via process.env.JEST_WORKER_ID (#5494)

Chore & Maintenance

  • [filenames] Standardize file names in root (#5500)

jest 22.2.1

Fixes

  • [jest-config] "all" takes precedence over "lastCommit" (#5486)

jest 22.2.0

Features

  • [jest-runner] Move test summary to after coverage report (#4512)
  • [jest-cli] Added --notifyMode to specify when to be notified. (#5125)
  • [diff-sequences] New package compares items in two sequences to find a longest common subsequence. (#5407)
  • [jest-matcher-utils] Add comment option to matcherHint function (#5437)
  • [jest-config] Allow lastComit and changedFilesWithAncestor via JSON config (#5476)
  • [jest-util] Add deletion to process.env as well (#5466)
  • [jest-util] Add case-insensitive getters/setters to process.env (#5465)
  • [jest-mock] Add util methods to create async functions. (#5318)

Fixes

  • [jest-cli] Add trailing slash when checking root folder (#5464)
  • [jest-cli] Hide interactive mode if there are no failed snapshot tests (#5450)
  • [babel-jest] Remove retainLines from babel-jest (#5439)
  • [jest-cli] Glob patterns ignore non-require-able files (e.g. README.md) (#5199)
  • [jest-mock] Add backticks support (``) to mock a certain package via the __mocks__ folder. (#5426)
  • [jest-message-util] Prevent an ENOENT crash when the test file contained a malformed source-map. (#5405).
  • [jest] Add import-local to jest package. (#5353)
  • [expect] Support class instances in .toHaveProperty() and .toMatchObject matcher. (#5367)
  • [jest-cli] Fix npm update command for snapshot summary. (#5376, 5389)
  • [expect] Make rejects and resolves synchronously validate its argument. (#5364)
  • [docs] Add tutorial page for ES6 class mocks. (#5383)
  • [jest-resolve] Search required modules in node_modules and then in custom paths. (#5403)
  • [jest-resolve] Get builtin modules from node core. (#5411)
  • [jest-resolve] Detect and preserve absolute paths in moduleDirectories. Do not generate additional (invalid) paths by prepending each ancestor of cwd to the absolute path. Additionally, this fixes functionality in Windows OS. (#5398)

Chore & Maintenance

  • [jest-util] Implement watch plugins (#5399)

jest 22.1.4

Fixes

  • [jest-util] Add "debug" method to "console" implementations (#5350)
  • [jest-resolve] Add condition to avoid infinite loop when node module package main is ".". (#5344))

Features

  • [jest-cli] --changedSince: allow selectively running tests for code changed since arbitrary revisions. (#5312)

jest 22.1.3

Fixes

  • [jest-cli] Check if the file belongs to the checked project before adding it to the list, also checking that the file name is not explicitly blacklisted (#5341)
  • [jest-editor-support] Add option to spawn command in shell (#5340)

jest 22.1.2

Fixes

  • [jest-cli] Check if the file belongs to the checked project before adding it to the list (#5335)
  • [jest-cli] Fix EISDIR when a directory is passed as an argument to jest. (#5317)
  • [jest-config] Added restoreMocks config option. (#5327)

jest 22.1.1

Fixes

  • [*] Move from "process.exit" to "exit. (#5313)

jest 22.1.0

Features

  • [jest-cli] Make Jest exit without an error when no tests are found in the case of --lastCommit, --findRelatedTests, or --onlyChanged options having been passed to the CLI
  • [jest-cli] Add interactive snapshot mode (#3831)

Fixes

  • [jest-cli] Use import-local to support global Jest installations. (#5304)
  • [jest-runner] Fix memory leak in coverage reporting (#5289)
  • [docs] Update mention of the minimal version of node supported (#4947)
  • [jest-cli] Fix missing newline in console message (#5308)
  • [jest-cli] --lastCommit and --changedFilesWithAncestor now take effect even when --onlyChanged is not specified. (#5307)

Chore & Maintenance

  • [filenames] Standardize folder names under integration-tests/ (#5298)

jest 22.0.6

Fixes

  • [jest-jasmine2] Fix memory leak in snapshot reporting (#5279)
  • [jest-config] Fix breaking change in --testPathPattern (#5269)
  • [docs] Document caveat with mocks, Enzyme, snapshots and React 16 (#5258)

jest 22.0.5

Fixes

  • [jest-leak-detector] Removed the reference to weak. Now, parent projects must install it by hand for the module to work.
  • [expect] Fail test when the types of stringContaining and stringMatching matchers do not match. (#5069)
  • [jest-cli] Treat dumb terminals as noninteractive (#5237)
  • [jest-cli] jest --onlyChanged --changedFilesWithAncestor now also works with git. (#5189)
  • [jest-config] fix unexpected condition to avoid infinite recursion in Windows platform. (#5161)
  • [jest-config] Escape parentheses and other glob characters in rootDir before interpolating with testMatch. (#4838)
  • [jest-regex-util] Fix breaking change in --testPathPattern (#5230)
  • [expect] Do not override Error stack (with Error.captureStackTrace) for custom matchers. (#5162)
  • [pretty-format] Pretty format for DOMStringMap and NamedNodeMap (#5233)
  • [jest-cli] Use a better console-clearing string on Windows (#5251)

Features

  • [jest-jasmine] Allowed classes and functions as describe names. (#5154)
  • [jest-jasmine2] Support generator functions as specs. (#5166)
  • [jest-jasmine2] Allow spyOn with getters and setters. (#5107)
  • [jest-config] Allow configuration objects inside projects array (#5176)
  • [expect] Add support to .toHaveProperty matcher to accept the keyPath argument as an array of properties/indices. (#5220)
  • [docs] Add documentation for .toHaveProperty matcher to accept the keyPath argument as an array of properties/indices. (#5220)
  • [jest-runner] test environments are now passed a new options parameter. Currently this only has the console which is the test console that Jest will expose to tests. (#5223)
  • [jest-environment-jsdom] pass the options.console to a custom instance of virtualConsole so jsdom is using the same console as the test. (#5223)

Chore & Maintenance

  • [docs] Describe the order of execution of describe and test blocks. (#5217, #5238)
  • [docs] Add a note on moduleNameMapper ordering. (#5249)

jest 22.0.4

Fixes

  • [jest-cli] New line before quitting watch mode. (#5158)

Features

  • [babel-jest] moduleFileExtensions not passed to babel transformer. (#5110)

Chore & Maintenance

  • [*] Tweaks to better support Node 4 (#5142)

jest 22.0.2 && 22.0.3

Chore & Maintenance

  • [*] Tweaks to better support Node 4 (#5134)

jest 22.0.1

Fixes

  • [jest-runtime] fix error for test files providing coverage. (#5117)

Features

  • [jest-config] Add forceCoverageMatch to allow collecting coverage from ignored files. (#5081)

jest 22.0.0

Fixes

  • [jest-resolve] Use module.builtinModules as BUILTIN_MODULES when it exists
  • [jest-worker] Remove debug and inspect flags from the arguments sent to the child (#5068)
  • [jest-config] Use all --testPathPattern and <regexForTestFiles> args in testPathPattern (#5066)
  • [jest-cli] Do not support --watch inside non-version-controlled environments (#5060)
  • [jest-config] Escape Windows path separator in testPathPattern CLI arguments (#5054)
  • [jest-jasmine] Register sourcemaps as node environment to improve performance with jsdom (#5045)
  • [pretty-format] Do not call toJSON recursively (#5044)
  • [pretty-format] Fix errors when identity-obj-proxy mocks CSS Modules (#4935)
  • [babel-jest] Fix support for namespaced babel version 7 (#4918)
  • [expect] fix .toThrow for promises (#4884)
  • [jest-docblock] pragmas should preserve urls (#4837)
  • [jest-cli] Check if npm_lifecycle_script calls Jest directly (#4629)
  • [jest-cli] Fix --showConfig to show all configs (#4494)
  • [jest-cli] Throw if maxWorkers doesn't have a value (#4591)
  • [jest-cli] Use fs.realpathSync.native if available (#5031)
  • [jest-config] Fix --passWithNoTests (#4639)
  • [jest-config] Support rootDir tag in testEnvironment (#4579)
  • [jest-editor-support] Fix --showConfig to support jest 20 and jest 21 (#4575)
  • [jest-editor-support] Fix editor support test for node 4 (#4640)
  • [jest-mock] Support mocking constructor in mockImplementationOnce (#4599)
  • [jest-runtime] Fix manual user mocks not working with custom resolver (#4489)
  • [jest-util] Fix runOnlyPendingTimers for setTimeout inside setImmediate (#4608)
  • [jest-message-util] Always remove node internals from stacktraces (#4695)
  • [jest-resolve] changes method of determining builtin modules to include missing builtins (#4740)
  • [pretty-format] Prevent error in pretty-format for window in jsdom test env (#4750)
  • [jest-resolve] Preserve module identity for symlinks (#4761)
  • [jest-config] Include error message for preset json (#4766)
  • [pretty-format] Throw PrettyFormatPluginError if a plugin halts with an exception (#4787)
  • [expect] Keep the stack trace unchanged when PrettyFormatPluginError is thrown by pretty-format (#4787)
  • [jest-environment-jsdom] Fix asynchronous test will fail due to timeout issue. (#4669)
  • [jest-cli] Fix --onlyChanged path case sensitivity on Windows platform (#4730)
  • [jest-runtime] Use realpath to match transformers (#5000)
  • [expect] [BREAKING] Replace identity equality with Object.is in toBe matcher (#4917)

Features

  • [jest-message-util] Add codeframe to test assertion failures (#5087)
  • [jest-config] Add Global Setup/Teardown options (#4716)
  • [jest-config] Add testEnvironmentOptions to apply to jsdom options or node context. (#5003)
  • [jest-jasmine2] Update Timeout error message to jest.timeout and display current timeout value (#4990)
  • [jest-runner] Enable experimental detection of leaked contexts (#4895)
  • [jest-cli] Add combined coverage threshold for directories. (#4885)
  • [jest-mock] Add timestamps to mock state. (#4866)
  • [eslint-plugin-jest] Add prefer-to-have-length lint rule. (#4771)
  • [jest-environment-jsdom] [BREAKING] Upgrade to JSDOM@11 (#4770)
  • [jest-environment-*] [BREAKING] Add Async Test Environment APIs, dispose is now teardown (#4506)
  • [jest-cli] Add an option to clear the cache (#4430)
  • [babel-plugin-jest-hoist] Improve error message, that the second argument of jest.mock must be an inline function (#4593)
  • [jest-snapshot] [BREAKING] Concatenate name of test and snapshot (#4460)
  • [jest-cli] [BREAKING] Fail if no tests are found (#3672)
  • [jest-diff] Highlight only last of odd length leading spaces (#4558)
  • [jest-docblock] Add docblock.print() (#4517)
  • [jest-docblock] Add strip (#4571)
  • [jest-docblock] Preserve leading whitespace in docblock comments (#4576)
  • [jest-docblock] remove leading newlines from parswWithComments().comments (#4610)
  • [jest-editor-support] Add Snapshots metadata (#4570)
  • [jest-editor-support] Adds an 'any' to the typedef for updateFileWithJestStatus (#4636)
  • [jest-editor-support] Better monorepo support (#4572)
  • [jest-environment-jsdom] Add simple rAF polyfill in jsdom environment to work with React 16 (#4568)
  • [jest-environment-node] Implement node Timer api (#4622)
  • [jest-jasmine2] Add testPath to reporter callbacks (#4594)
  • [jest-mock] Added support for naming mocked functions with .mockName(value) and .mockGetName() (#4586)
  • [jest-runtime] Add module.loaded, and make module.require not enumerable (#4623)
  • [jest-runtime] Add module.parent (#4614)
  • [jest-runtime] Support sourcemaps in transformers (#3458)
  • [jest-snapshot] [BREAKING] Add a serializer for jest.fn to allow a snapshot of a jest mock (#4668)
  • [jest-worker] Initial version of parallel worker abstraction, say hello! (#4497)
  • [jest-jasmine2] Add testLocationInResults flag to add location information per spec to test results (#4782)
  • [jest-environment-jsdom] Update JSOM to 11.4, which includes built-in support for requestAnimationFrame (#4919)
  • [jest-cli] Hide watch usage output when running on non-interactive environments (#4958)
  • [jest-snapshot] Promises support for toThrowErrorMatchingSnapshot (#4946)
  • [jest-cli] Explain which snapshots are obsolete (#5005)

Chore & Maintenance

  • [docs] Add guide of using with puppeteer (#5093)
  • [jest-util] jest-util should not depend on jest-mock (#4992)
  • [*] [BREAKING] Drop support for Node.js version 4 (#4769)
  • [docs] Wrap code comments at 80 characters (#4781)
  • [eslint-plugin-jest] Removed from the Jest core repo, and moved to https://github.com/jest-community/eslint-plugin-jest (#4867)
  • [babel-jest] Explicitly bump istanbul to newer versions (#4616)
  • [expect] Upgrade mocha and rollup for browser testing (#4642)
  • [docs] Add info about coveragePathIgnorePatterns (#4602)
  • [docs] Add Vuejs series of testing with Jest (#4648)
  • [docs] Mention about optional done argument in test function (#4556)
  • [jest-cli] Bump node-notifier version (#4609)
  • [jest-diff] Simplify highlight for leading and trailing spaces (#4553)
  • [jest-get-type] Add support for date (#4621)
  • [jest-matcher-utils] Call chalk.inverse for trailing spaces (#4578)
  • [jest-runtime] Add .advanceTimersByTime; keep .runTimersToTime() as an alias.
  • [docs] Include missing dependency in TestEnvironment sample code
  • [docs] Add clarification for hook execution order
  • [docs] Update expect.anything() sample code (#5007)

jest 21.2.1

  • Fix watchAll not running tests on save (#4550)
  • Add missing escape sequences to ConvertAnsi plugin (#4544)

jest 21.2.0

  • 🃏 Change license from BSD+Patents to MIT.
  • Allow eslint-plugin to recognize more disabled tests (#4533)
  • Add babel-plugin for object spread syntax to babel-preset-jest (#4519)
  • Display outer element and trailing newline consistently in jest-diff (#4520)
  • Do not modify stack trace of JestAssertionError (#4516)
  • Print errors after test structure in verbose mode (#4504)
  • Fix --silent --verbose problem (#4505)
  • Fix: Reset local state of assertions when using hasAssertions (#4498)
  • jest-resolve: Prevent default resolver failure when potential resolution directory does not exist (#4483)

jest 21.1.0

  • (minor) Use ES module exports (#4454)
  • Allow chaining mockClear and mockReset (#4475)
  • Call jest-diff and pretty-format more precisely in toHaveProperty matcher (#4445)
  • Expose restoreAllMocks to object (#4463)
  • Fix function name cleaning when making mock fn (#4464)
  • Fix Map/Set equality checker (#4404)
  • Make FUNCTION_NAME_RESERVED_PATTERN stateless (#4466)

jest 21.0.2

  • Take precedence of NODE_PATH when resolving node_modules directories (#4453)
  • Fix race condition with --coverage and babel-jest identical file contents edge case (#4432)
  • Add extra parameter --runTestsByPath. (#4411)
  • Upgrade all outdated deps (#4425)

jest 21.0.1

  • Remove obsolete error (#4417)

jest 21.0.0

  • Add --changedFilesWithAncestor (#4070)
  • Add --findRelatedFiles (#4131)
  • Add --onlyChanged tests (#3977)
  • Add contextLines option to jest-diff (#4152)
  • Add alternative serialize API for pretty-format plugins (#4114)
  • Add displayName to MPR (#4327)
  • Add displayName to TestResult (#4408)
  • Add es5 build of pretty-format (#4075)
  • Add extra info to no tests for changed files message (#4188)
  • Add fake chalk in browser builds in order to support IE10 (#4367)
  • Add jest.requireActual (#4260)
  • Add maxWorkers to globalConfig (#4005)
  • Add skipped tests support for jest-editor-support (#4346)
  • Add source map support for better debugging experience (#3738)
  • Add support for Error objects in toMatchObject (#4339)
  • Add support for Immutable.Record in pretty-format (#3678)
  • Add tests for extract_requires on export types (#4080)
  • Add that toMatchObject can match arrays (#3994)
  • Add watchPathIgnorePatterns to exclude paths to trigger test re-run in watch mode (#4331)
  • Adding ancestorTitles property to JSON test output (#4293)
  • Allow custom resolver to be used with[out] moduleNameMapper (#4174)
  • Avoid parsing .require(…) method calls (#3777)
  • Avoid unnecessary function declarations and call in pretty-format (#3962)
  • Avoid writing to stdout in default reporter if --json is enabled. Fixes #3941 (#3945)
  • Better error handling for --config (#4230)
  • Call consistent pretty-format plugins within Jest (#3800)
  • Change babel-core to peerDependency for compatibility with Babel 7 (#4162)
  • Change Promise detection code in jest-circus to support non-global Promise implementations (#4375)
  • Changed files eager loading (#3979)
  • Check whether we should output to stdout or stderr (#3953)
  • Clarify what objects toContain and toContainEqual can be used on (#4307)
  • Clean up resolve() logic. Provide useful names for variables and functions. Test that a directory exists before attempting to resolve files within it. (#4325)
  • cleanupStackTrace (#3696)
  • compare objects with Symbol keys (#3437)
  • Complain if expect is passed multiple arguments (#4237)
  • Completes nodeCrawl with empty roots (#3776)
  • Consistent naming of files (#3798)
  • Convert code base to ESM import (#3778)
  • Correct summary message for flag --findRelatedTests. (#4309)
  • Coverage thresholds can be set up for individual files (#4185)
  • custom reporter error handling (#4051)
  • Define separate type for pretty-format plugin Options (#3802)
  • Delete confusing async keyword (#3679)
  • Delete redundant branch in ReactElement and HTMLElement plugins (#3731)
  • Don't format node assert errors when there's no 'assert' module (#4376)
  • Don't print test summary in --silent (#4106)
  • Don't try to build ghost packages (#3934)
  • Escape double quotes in attribute values in HTMLElement plugin (#3797)
  • Explain how to clear the cache (#4232)
  • Factor out common code for collections in pretty-format (#4184)
  • Factor out common code for markup in React plugins (#4171)
  • Feature/internal resolve (#4315)
  • Fix --logHeapUsage (#4176)
  • Fix --showConfig to show all project configs (#4078)
  • Fix --watchAll (#4254)
  • Fix bug when setTimeout is mocked (#3769)
  • Fix changedFilesWithAncestor (#4193)
  • Fix colors for expected/stored snapshot message (#3702)
  • Fix concurrent test failure (#4159)
  • Fix for 4286: Compare Maps and Sets by value rather than order (#4303)
  • fix forceExit (#4105)
  • Fix grammar in React Native docs (#3838)
  • Fix inconsistent name of complex values in pretty-format (#4001)
  • Fix issue mocking bound method (#3805)
  • Fix jest-circus (#4290)
  • Fix lint warning in main

    (#4132)

  • Fix linting (#3946)

  • fix merge conflict (#4144)
  • Fix minor typo (#3729)
  • fix missing console.log messages (#3895)
  • fix mock return value (#3933)
  • Fix mocking for modules with folders on windows (#4238)
  • Fix NODE_PATH resolving for relative paths (#3616)
  • Fix options.moduleNameMapper override order with preset (#3565 (#3689)
  • Fix React PropTypes warning in tests for Immutable plugin (#4412)
  • Fix regression in mockReturnValueOnce (#3857)
  • Fix sample code of mock class constructors (#4115)
  • Fix setup-test-framework-test (#3773)
  • fix typescript jest test crash (#4363)
  • Fix watch mode (#4084)
  • Fix Watchman on windows (#4018)
  • Fix(babel): Handle ignored files in babel v7 (#4393)
  • Fix(babel): Support upcoming beta (#4403)
  • Fixed object matcher (#3799)
  • Fixes #3820 use extractExpectedAssertionsErrors in jasmine setup
  • Flow upgrade (#4355)
  • Force message in matchers to always be a function (#3972)
  • Format describe and use test instead of it alias (#3792)
  • global_config.js for multi-project runner (#4023)
  • Handle async errors (#4016)
  • Hard-fail if hasteImpl is throwing an error during initialization. (#3812)
  • Ignore import type for extract_requires (#4079)
  • Ignore indentation of data structures in jest-diff (#3429)
  • Implement 'jest.requireMock' (#4292)
  • Improve Jest phabricator plugin (#4195)
  • Improve Seq and remove newline from non-min empty in Immutable plugin (#4241)
  • Improved the jest reporter with snapshot info per test. (#3660)
  • Include fullName in formattedAssertion (#4273)
  • Integrated with Yarn workspaces (#3906)
  • jest --all (#4020)
  • jest-circus test failures (#3770)
  • jest-circus Timeouts (#3760)
  • jest-haste-map: add test case for broken handling of ignore pattern (#4047)
  • jest-haste-map: add test+fix for broken platform module support (#3885)
  • jest-haste-map: deprecate functional ignorePattern and use it in cache key (#4063)
  • jest-haste-map: mock 'fs' with more idiomatic jest.mock() (#4046)
  • jest-haste-map: only file IO errors should be silently ignored (#3816)
  • jest-haste-map: throw when trying to get a duplicated module (#3976)
  • jest-haste-map: watchman crawler: normalize paths (#3887)
  • jest-runtime: atomic cache write, and check validity of data (#4088)
  • Join lines with newline in jest-diff (#4314)
  • Keep ARGV only in CLI files (#4012)
  • let transformers adjust cache key based on mapCoverage (#4187)
  • Lift requires (#3780)
  • Log stack when reporting errors in jest-runtime (#3833)
  • Make --listTests return a new line separated list when not using --json (#4229)
  • Make build script printing small-terminals-friendly (#3892)
  • Make error messages more explicit for toBeCalledWith assertions (#3913)
  • Make jest-matcher-utils use ESM exports (#4342)
  • Make jest-runner a standalone package. (#4236)
  • Make Jest’s Test Runner configurable. (#4240)
  • Make listTests always print to console.log (#4391)
  • Make providesModuleNodeModules ignore nested node_modules directories
  • Make sure function mocks match original arity (#4170)
  • Make sure runAllTimers also clears all ticks (#3915)
  • Make toBe matcher error message more helpful for objects and arrays (#4277)
  • Make useRealTimers play well with timers: fake (#3858)
  • Move getType from jest-matcher-utils to separate package (#3559)
  • Multiroot jest-change-files (#3969)
  • Output created snapshot when using --ci option (#3693)
  • Point out you can use matchers in .toMatchObject (#3796)
  • Prevent babelrc package import failure on relative current path (#3723)
  • Print RDP details for windows builds (#4017)
  • Provide better error checking for transformed content (#3807)
  • Provide printText and printComment in markup.js for HTMLElement plugin (#4344)
  • Provide regex visualization for testRegex (#3758)
  • Refactor CLI (#3862)
  • Refactor names and delimiters of complex values in pretty-format (#3986)
  • Replace concat(Immutable) with Immutable as item of plugins array (#4207)
  • Replace Jasmine with jest-circus (#3668)
  • Replace match with test and omit redundant String conversion (#4311)
  • Replace print with serialize in AsymmetricMatcher plugin (#4173)
  • Replace print with serialize in ConvertAnsi plugin (#4225)
  • Replace print with serialize in HTMLElement plugin (#4215)
  • Replace print with serialize in Immutable plugins (#4189)
  • Replace unchanging args with one config arg within pretty-format (#4076)
  • Return UNDEFINED for undefined type in ReactElement plugin (#4360)
  • Rewrite some read bumps in pretty-format (#4093)
  • Run update method before installing JRE on Circle (#4318)
  • Separated the snapshot summary creation from the printing to improve testability. (#4373)
  • Set coverageDirectory during normalize phase (#3966)
  • Setup custom reporters after default reporters (#4053)
  • Setup for Circle 2 (#4149)
  • Simplify readme (#3790)
  • Simplify snapshots definition (#3791)
  • skipNodeResolution config option (#3987)
  • Small fixes to toHaveProperty docs (#3878)
  • Sort attributes by name in HTMLElement plugin (#3783)
  • Specify watchPathIgnorePatterns will only be available in Jest 21+ (#4398)
  • Split TestRunner off of TestScheduler (#4233)
  • Strict and explicit config resolution logic (#4122)
  • Support maxDepth option in React plugins (#4208)
  • Support SVG elements in HTMLElement plugin (#4335)
  • Test empty Immutable collections with {min: false} option (#4121)
  • test to debug travis failure in main (#4145)
  • testPathPattern message test (#4006)
  • Throw Error When Using Nested It Specs (#4039)
  • Throw when moduleNameMapper points to inexistent module (#3567)
  • Unified 'no tests found' message for non-verbose MPR (#4354)
  • Update migration guide with jest-codemods transformers (#4306)
  • Use "inputSourceMap" for coverage re-mapping. (#4009)
  • Use "verbose" no test found message when there is only one project (#4378)
  • Use babel transform to inline all requires (#4340)
  • Use eslint plugins to run prettier (#3971)
  • Use iterableEquality in spy matchers (#3651)
  • Use modern HTML5 <!DOCTYPE> (#3937)
  • Wrap Error.captureStackTrace in a try (#4035)

jest 20.0.4

  • Fix jest-haste-map's handling of duplicate module IDs. (#3647)
  • Fix behavior of enableAutomock() when automock is set to false. (#3624)
  • Fix progress bar in windows. (#3626)

jest 20.0.3

  • Fix reporters 'default' setting. (#3562)
  • Fix to make Jest fail when the coverage threshold not met. (#3554)

jest 20.0.1

  • Add ansi-regex to pretty-format dependencies (#3498)
  • Fix <rootDir> replacement in testMatch and moduleDirectories (#3538)
  • Fix expect.hasAssertions() to throw when passed arguments (#3526)
  • Fix stack traces without proper error messages (#3513)
  • Fix support for custom extensions through haste packages (#3537)
  • Fix test contexts between test functions (#3506)

jest 20.0.0

  • New --projects option to run one instance of Jest in multiple projects at the same time. (#3400)
  • New multi project runner (#3156)
  • New --listTests flag. (#3441)
  • New --showConfig flag. (#3296)
  • New promise support for all expect matchers through .resolves and .rejects. (#3068)
  • New expect.hasAssertions() function similar to expect.assertions(). (#3379)
  • New this.equals function exposed to custom matchers. (#3469)
  • New valid-expect lint rule in eslint-plugin-jest. (#3067)
  • New HtmlElement pretty-format plugin. (#3230)
  • New Immutable pretty-format plugins. (#2899)
  • New test environment per file setting through @jest-environment in the docblock. (#2859)
  • New feature that allows every configuration option to be set from the command line. (#3424)
  • New feature to add custom reporters to Jest through reporters in the configuration. (#3349)
  • New feature to add expected and actual values to AssertionError. (#3217)
  • New feature to map code coverage from transformers. (#2290)
  • New feature to run untested code coverage in parallel. (#3407)
  • New option to define a custom resolver. (#2998)
  • New printing support for text and comment nodes in html pretty-format. (#3355)
  • New snapshot testing FAQ (#3425)
  • New support for custom platforms on jest-haste-map. (#3162)
  • New support for mocking native async methods. (#3209)
  • New guide on how to use Jest with any JavaScript framework. (#3243)
  • New translation system for the Jest website.
  • New collapsing watch mode usage prompt after first run. (#3078)
  • Breaking Change: Forked Jasmine 2.5 into Jest's own test runner and rewrote large parts of Jasmine. (#3147)
  • Breaking Change: Jest does not write new snapshots by default on CI. (#3456)
  • Breaking Change: Moved the typescript parser from jest-editor-support into a separate jest-test-typescript-parser package. (#2973)
  • Breaking Change: Replaced auto-loading of babel-polyfill with only regenerator-runtime, fixes a major memory leak. (#2755)
  • Fixed babel-jest to look up the babel field in package.json as a fallback.
  • Fixed jest-editor-support's parser to not crash on incomplete ASTs. (#3259)
  • Fixed jest-resolve to use is-builtin-module instead of resolve.isCore. (#2997)
  • Fixed jest-snapshot to normalize line endings in the serialize function. (#3002)
  • Fixed behavior of --silent flag. (#3003)
  • Fixed bug with watchers on macOS causing test to crash. (#2957)
  • Fixed CLI notify option not taking precedence over config option. (#3340)
  • Fixed detection of the npm client in SummaryReporter to support Yarn. (#3263)
  • Fixed done.fail not passing arguments (#3241)
  • Fixed fake timers to restore after resetting mocks. (#2467)
  • Fixed handling of babylon's parser options in jest-editor-support. (#3344)
  • Fixed Jest to properly cache transform results. (#3334)
  • Fixed Jest to use human-readable colors for Jest's own snapshots. (#3119)
  • Fixed jest-config to use UID for default cache folder. (#3380), (#3387)
  • Fixed jest-runtime to expose inner error when it fails to write to the cache. (#3373)
  • Fixed lifecycle hooks to make afterAll hooks operate the same as afterEach. (#3275)
  • Fixed pretty-format to run plugins before serializing nested basic values. (#3017)
  • Fixed return value of mocks so they can explicitly be set to return undefined. (#3354)
  • Fixed runner to run tests associated with snapshots when the snapshot changes. (#3025)
  • Fixed snapshot serializer require, restructured pretty-format. (#3399)
  • Fixed support for Babel 7 in babel-jest. (#3271)
  • Fixed testMatch to find tests in .folders. (#3006)
  • Fixed testNamePattern and testPathPattern to work better together. (#3327)
  • Fixed to show reject reason when expecting resolve. (#3134)
  • Fixed toHaveProperty() to use hasOwnProperty from Object (#3410)
  • Fixed watch mode's screen clearing. (#2959) (#3294)
  • Improved and consolidated Jest's configuration file resolution. (#3472)
  • Improved documentation throughout the Jest website.
  • Improved documentation to explicitly mention that snapshots must be reviewed. (#3203)
  • Improved documentation to make it clear CRA users don't need to add dependencies. (#3312)
  • Improved eslint-plugin-jest's handling of expect. (#3306)
  • Improved flow-coverage, eslint rules and test coverage within the Jest repository.
  • Improved printing of expect.assertions error. (#3033)
  • Improved Windows test coverage of Jest.
  • Refactored configs & transform (#3376)
  • Refactored reporters to pass individual Tests to reporters. (#3289)
  • Refactored TestRunner (#3166)
  • Refactored watch mode prompts. (#3290)
  • Deleted jest-file-exists. (#3105)
  • Removed Config type. (#3366)
  • Removed all usage of jest-file-exists. (#3101)
  • Adopted prettier on the Jest codebase.

jest 19.0.1

  • Fix infinite loop when using --watch with --coverage.
  • Fixed watchman config option.
  • Fixed a bug in the jest-editor-support static analysis.
  • Fixed eslint plugin warning.
  • Fixed missing space in front of "Did you mean …?".
  • Fixed path printing in the reporter on Windows.

jest 19.0.0

  • Breaking Change: Added a version for snapshots.
  • Breaking Change: Removed the mocksPattern configuration option, it never worked correctly.
  • Breaking Change: Renamed testPathDirs to roots to avoid confusion when configuring Jest.
  • Breaking Change: Updated printing of React elements to cause fewer changes when props change.
  • Breaking Change: Updated snapshot format to properly escape data.
  • Fixed --color to be recognized correctly again.
  • Fixed babel-plugin-jest-hoist to work properly with type annotations in tests.
  • Fixed behavior for console.log calls and fixed a memory leak (#2539).
  • Fixed cache directory path for Jest to avoid ENAMETOOLONG errors.
  • Fixed change events to be emitted in jest-haste-map's watch mode. This fixes issues with Jest's new watch mode and react-native-packager.
  • Fixed cli arguments to be used when loading the config from file, they were previously ignored.
  • Fixed Jest to load json files that include a BOM.
  • Fixed Jest to throw errors instead of ignoring invalid cli options.
  • Fixed mocking behavior for virtual modules.
  • Fixed mocking behavior with transitive dependencies.
  • Fixed support for asymmetric matchers in toMatchObject.
  • Fixed test interruption and --bail behavior.
  • Fixed watch mode to clean up worker processes when a test run gets interrupted.
  • Fixed whitespace to be highlighted in snapshots and assertion errors.
  • Improved babel-jest plugin: babel is loaded lazily, istanbul comments are only added when coverage is used.
  • Improved error for invalid transform config.
  • Improved moduleNameMapper to not overwrite mocks when many patterns map to the same file.
  • Improved printing of skipped tests in verbose mode.
  • Improved resolution code in jest-resolve.
  • Improved to only show patch marks in assertion errors when the comparison results in large objects.
  • New --collectCoverageFrom cli argument.
  • New --coverageDirectory cli argument.
  • New expect.addSnapshotSerializer to add custom snapshot serializers for tests.
  • New jest.spyOn.
  • New testMatch configuration option that accepts glob patterns.
  • New eslint-plugin-jest with no-disabled-tests, no-focuses-tests and no-identical-title rules and default configuration and globals.
  • New expect.stringContaining asymmetric matcher.
  • New feature to make manual mocks with nested folders work. For example __mocks__/react-native/Library/Text.js will now work as expected.
  • New feature to re-run tests through the notification when using --notify.
  • New jest-phabricator package to integrate Jest code coverage in phabriactor.
  • New jest-validate package to improve configuration errors, help with suggestions of correct configuration and to be adopted in other libraries.
  • New pretty-printing for asymmetric matchers.
  • New RSS feed for Jest's blog.
  • New way to provide a reducer to extract haste module ids.
  • New website, new documentation, new color scheme and new homepage.
  • Rewritten watch mode for instant feedback, better code quality and to build new features on top of it (#2362).

jest 18.1.0

  • Fixed console.log and fake timer behavior in node 7.3.
  • Updated istanbul-api.
  • Updated jest-diff equality error message.
  • Disabled arrow keys when entering a pattern in watch mode to prevent broken behavior. Will be improved in a future release.
  • Moved asymmetric matchers and equality functionality from Jasmine into jest-matchers.
  • Removed jasmine and jest-snapshot dependency from jest-matchers.
  • Removed unused global context variable.
  • Show a better error message if the config is invalid JSON.
  • Highlight trailing whitespace in assertion diffs and snapshots.
  • Jest now uses micromatch instead of minimatch.
  • Added -h as alias for --help.

jest 18.0.0

See https://jestjs.io/blog/2016/12/15/2016-in-jest

  • The testResultsProcessor function is now required to return the modified results.
  • Removed pit and mockImpl. Use it or mockImplementation instead.
  • Fixed re-running tests when --bail is used together with --watch.
  • pretty-format is now merged into Jest.
  • require('v8') now works properly in a test context.
  • Jest now clears the entire scrollback in watch mode.
  • Added expect.any, expect.anything, expect.objectContaining, expect.arrayContaining, expect.stringMatching.
  • Properly resolve snapshotSerializers, setupFiles, transform, testRunner and testResultsProcessor instead of using path.resolve.
  • --testResultsProcessor is now exposed through the cli.
  • Renamed --jsonOutputFile to --outputFile.
  • Added jest-editor-support for vscode and Nuclide integration.
  • Fixed test.concurrent unhandled promise rejections.
  • The Jest website is now auto-deployed when merging into main.
  • Updated testRegex to include test.js and spec.js files.
  • Fixes for babel-plugin-jest-hoist when using jest.mock with three arguments.
  • The JSON global in jest-environment-node now comes from the vm context instead of the parent context.
  • Jest does not print stack traces from babel any longer.
  • Fake timers are reset when FakeTimers.useTimers() is called.
  • Usage of Jest in watch mode can be hidden through JEST_HIDE_USAGE.
  • Added expect.assertions(number) which will ensure that a specified amount of assertions is made in one test.
  • Added .toMatchSnapshot(?string) feature to give snapshots a name.
  • Escape regex in snapshots.
  • jest-react-native was deprecated and now forwards react-native.
  • Added .toMatchObject matcher.
  • Further improve printing of large objects.
  • Fixed NaN% Failed in the OS notification when using --notify.
  • The first test run without cached timings will now use separate processes instead of running in band.
  • Added .toHaveProperty matcher.
  • Fixed Map/Set comparisons.
  • test.concurrent now works with --testNamePattern.

jest 17.0.3

  • Improved file-watching feature in jest-haste-map.
  • Added .toHaveLength matcher.
  • Improved .toContain matcher.

jest 17.0.2

  • Fixed performance regression in module resolution.

jest 17.0.1

  • Fixed pretty printing of big objects.
  • Fixed resolution of .native.js files in react-native projects.

jest 17.0.0

  • Added expect.extend.
  • Properly resolve modules with platform extensions on react-native.
  • Added support for custom snapshots serializers.
  • Updated to Jasmine 2.5.2.
  • Big diffs are now collapsed by default in snapshots and assertions. Added --expand (or -e) to show the full diff.
  • Replaced scriptPreprocessor with the new transform option.
  • Added jest.resetAllMocks which replaces jest.clearAllMocks.
  • Fixes for react-native preset.
  • Fixes for global built in objects in jest-environment-node.
  • Create mock objects in the vm context instead of the parent context.
  • .babelrc is now part of the transform cache key in babel-jest.
  • Fixes for docblock parsing with haste modules.
  • Exit with the proper code when the coverage threshold is not reached.
  • Implemented file watching in jest-haste-map.
  • --json now includes information about individual tests inside a file.

jest 16.0.2

  • Symbols are now properly mocked when using jest-mock.
  • toHaveBeenCalledWith() works without arguments again.
  • Newlines in snapshots are now normalized across different operating systems.

jest 16.0.1

  • Fix infinite loop.

jest 16.0.0

  • Previously failed tests are now always run first.
  • A new concurrent reporter shows currently running tests, a test summary, a progress bar and estimated remaining time if possible.
  • Improved CLI colors.
  • jest <pattern> is now case-insensitive.
  • Added it.only, it.skip, test.only, test.skip and xtest.
  • Added --testNamePattern=pattern or -t <pattern> to run individual tests in test files.
  • Jest now warns for duplicate mock files.
  • Pressing a, o, p, q or enter while tests are running in the watch mode, the test run will be interrupted.
  • --bail now works together with --watch.
  • Added test.concurrent for concurrent async tests.
  • Jest now automatically considers files and tests with the .jsx extension.
  • Added jest.clearAllMocks to clear all mocks manually.
  • Rewrote Jest's snapshot implementation. jest-snapshot can now be more easily integrated into other test runners and used in other projects.
  • This requires most snapshots to be updated when upgrading Jest.
  • Objects and Arrays in snapshots are now printed with a trailing comma.
  • Function names are not printed in snapshots any longer to reduce issues with code coverage instrumentation and different Node versions.
  • Snapshots are now sorted using natural sort order.
  • Snapshots are not marked as obsolete any longer when using fit or when an error is thrown in a test.
  • Finished migration of Jasmine matchers to the new Jest matchers.
  • Pretty print toHaveBeenLastCalledWith, toHaveBeenCalledWith, lastCalledWith and toBeCalledWith failure messages.
  • Added toBeInstanceOf matcher.
  • Added toContainEqual matcher.
  • Added toThrowErrorMatchingSnapshot matcher.
  • Improved moduleNameMapper resolution.
  • Module registry fixes.
  • Fixed invocation of the setupTestFrameworkScriptFile script to make it easier to use chai together with Jest.
  • Removed react-native special case in Jest's configuration.
  • Added --findRelatedTests <fileA> <fileB> cli option to run tests related to the specified files.
  • Added jest.deepUnmock to babel-plugin-jest-hoist.
  • Added jest.runTimersToTime which is useful together with fake timers.
  • Improved automated mocks for ES modules compiled with babel.

jest 15.1.1

  • Fixed issues with test paths that include hyphens on Windows.
  • Fixed testEnvironment resolution.
  • Updated watch file name pattern input.

jest 15.1.0

  • Pretty printer updates for React and global window objects.
  • jest-runtime overwrites automocking from configuration files.
  • Improvements for watch mode on Windows.
  • afterAll/afterEach/beforeAll/beforeEach can now return a Promise and be used together with async/await.
  • Improved stack trace printing on Node 4.

jest 15.0.2

  • Fixed Jest with npm2 when using coverage.

jest 15.0.1

  • Updated toThrow and toThrowMatchers and aliased them to the same matcher.
  • Improvements for watch mode.
  • Fixed Symbol reassignment in tests would break Jest's matchers.
  • Fixed --bail option.

jest 15.0.0

  • See https://jestjs.io/blog/2016/09/01/jest-15
  • Jest by default now also recognizes files ending in .spec.js and .test.js as test files.
  • Completely replaced most Jasmine matchers with new Jest matchers.
  • Rewrote Jest's CLI output for test failures and summaries.
  • Added --env option to override the default test environment.
  • Disabled automocking, fake timers and resetting the module registry by default.
  • Added --watchAll, made --watch interactive and added the ability to update snapshots and select test patterns in watch mode.
  • Jest uses verbose mode when running a single test file.
  • Console messages are now buffered and printed along with the test results.
  • Fix testEnvironment resolution to prefer jest-environment-{name} instead of {name} only. This prevents a module colision when using jsdom as test environment.
  • moduleNameMapper now uses a resolution algorithm.
  • Improved performance for small test runs.
  • Improved API documentation.
  • Jest now works properly with directories that have special characters in them.
  • Improvements to Jest's own test infra by merging integration and unit tests. Code coverage is now collected for Jest.
  • Added global.global to the node environment.
  • Fixed babel-jest-plugin-hoist issues with functions called mock.
  • Improved jest-react-native preset with mocks for ListView, TextInput, ActivityIndicator and ScrollView.
  • Added collectCoverageFrom to collect code coverage from untested files.
  • Rewritten code coverage support.

jest 14.1.0

  • Changed Jest's default cache directory.
  • Fixed jest-react-native for react 15.3.0.
  • Updated react and react-native example to use react-test-renderer.
  • Started to refactor code coverage.

jest 14.0.2

  • babel-jest bugfix.

jest 14.0.1

  • babel-jest can now be used to compose a transformer.
  • Updated snapshot instructions to run jest -u or npm test -- -u.
  • Fixed config cli option to enable JSON objects as configuration.
  • Updated printing of preset path in the CLI.

jest 14.0.0

  • Official release of snapshot tests.
  • Started to replace Jasmine matchers with Jest matchers: toBe, toBeFalsy, toBeTruthy, toBeNaN, toBe{Greater,Less}Than{,OrEqual}, toBeNull, toBeDefined, toBeUndefined, toContain, toMatch, toBeCloseTo were rewritten.
  • Rewrite of Jest's reporters.
  • Experimental react-native support.
  • Removed Jasmine 1 support from Jest.
  • Transform caching improvements.

jest 13.2.0

  • Snapshot bugfixes.
  • Timer bugfixes.

jest 13.1.0

  • Added test global function as an alias for it.
  • Added coveragePathIgnorePatterns to the config.
  • Fixed printing of "JSX objects" in snapshots.
  • Fixes for --verbose option and top level it calls.
  • Extended the node environment with more globals.
  • testcheck now needs to be required explicitly through require('jest-check').
  • Added jest.deepUnmock.
  • Fail test suite if it does not contain any tests.

jest 13.0.0

  • Added duration of individual tests in verbose mode.
  • Added a browser config option to properly resolve npm packages with a browser field in package.json if you are writing tests for client side apps
  • Added jest-repl.
  • Split up jest-cli into jest-runtime and jest-config.
  • Added a notification plugin that shows a test run notification using --notify.
  • Refactored TestRunner into SearchSource and improved the "no tests found" message.
  • Added jest.isMockFunction(jest.fn()) to test for mock functions.
  • Improved test reporter printing and added a test failure summary when running many tests.
    • Add support for property testing via testcheck-js.
  • Added a webpack tutorial.
  • Added support for virtual mocks through jest.mock('Module', implementation, {virtual: true}).
  • Added snapshot functionality through toMatchSnapshot().
  • Redesigned website.

jest-cli 12.1.1

  • Windows stability fixes.
  • Mock module resolution fixes.
  • Remove test files from code coverage.

jest-cli 12.1.0

  • Jest is now also published in the jest package on npm.
  • Added testRegex to match for tests outside of specific folders. Deprecated both testDirectoryName and testFileExtensions.
  • it can now return a Promise for async testing. pit was deprecated.
  • Added jest-resolve as a standalone package based on the Facebook module resolution algorithm.
  • Added jest-changed-files as a standalone package to detect changed files in a git or hg repo.
  • Added --setupTestFrameworkFile to cli.
  • Added support for coverage thresholds. See https://jestjs.io/docs/configuration#coveragethreshold-object.
  • Updated to jsdom 9.0.
  • Updated and improved stack trace reporting.
  • Added module.filename and removed the invalid module.__filename field.
  • Further improved the lastCalledWith and toBeCalledWith custom matchers. They now print the most recent calls.
  • Fixed jest-haste-map on continuous integration systems.
  • Fixes for hg/git integration.
  • Added a re-try for the watchman crawler.

jest-cli 12.0.2

  • Bug fixes when running a single test file and for scoped package names.

jest-cli 12.0.1

  • Added custom equality matchers for Map/Set and iterables.
  • Bug fixes

jest-cli 12.0.0

  • Reimplemented node-haste as jest-haste-map: https://github.com/facebook/jest/pull/896
  • Fixes for the upcoming release of nodejs 6.
  • Removed global mock caching which caused negative side-effects on test runs.
  • Updated Jasmine from 2.3.4 to 2.4.1.
  • Fixed our Jasmine fork to work better with Object.create(null).
  • Added a --silent flag to silence console messages during a test run.
  • Run a test file directly if a path is passed as an argument to Jest.
  • Added support for the undocumented nodejs feature module.paths.

jest-cli 11.0.2

  • Fixed jest -o error when Mercurial isn't installed on the system
  • Fixed Jasmine failure message when expected values were mutated after tests.

jest-cli 11.0.1, babel-jest 11.0.1

  • Added support for Mercurial repositories when using jest -o
  • Added mockImplementationOnce API to jest.fn().

jest-cli 11.0.0, babel-jest 11.0.0 (pre-releases 0.9 to 0.10)

  • New implementation of node-haste and rewrite of internal module loading and resolution. Fixed both startup and runtime performance. #599
  • Jasmine 2 is now the default test runner. To keep using Jasmine 1, put testRunner: "jasmine1" into your configuration.
  • Added jest-util, jest-mock, jest-jasmine1, jest-jasmine2, jest-environment-node, jest-environment-jsdom packages.
  • Added babel-jest-preset and babel-jest as packages. babel-jest is now being auto-detected.
  • Added babel-plugin-jest-hoist which hoists jest.unmock, jest.mock and the new jest.enableAutomock and jest.disableAutomock API.
  • Improved babel-jest integration and react-native testing.
  • Improved code coverage reporting when using babel-jest.
  • Added the jest.mock('moduleName', moduleFactory) feature. jest.mock now gets hoisted by default. jest.doMock was added to explicitly mock a module without the hoisting feature of babel-jest.
  • Updated jsdom to 8.3.x.
  • Improved responsiveness of the system while using --watch.
  • Clear the terminal window when using --watch.
  • By default, --watch will now only runs tests related to changed files. --watch=all can be used to run all tests on file system changes.
  • Debounce --watch re-runs to not trigger test runs during a branch switch in version control.
  • Added jest.fn() and jest.fn(implementation) as convenient shorcuts for jest.genMockFunction() and jest.genMockFunction().mockImplementation().
  • Added an automock option to turn off automocking globally.
  • Added a "no tests found" message if no tests can be found.
  • Jest sets process.NODE_ENV to test unless otherwise specified.
  • Fixed moduleNameMapper config option when used with paths.
  • Fixed an error with Jasmine 2 and tests that throw 'string errors'.
  • Fixed issues with unmocking symlinked module names.
  • Fixed mocking of boolean values.
  • Fixed mocking of fields that start with an underscore ("private fields").
  • Fixed unmocking behavior with npm3.
  • Fixed and improved --onlyChanged option.
  • Fixed support for running Jest as a git submodule.
  • Improved verbose logger output
  • Fixed test runtime error reporting and stack traces.
  • Improved toBeCalled Jasmine 2 custom matcher messages.
  • Improved error reporting when a syntax error occurs.
  • Renamed HasteModuleLoader to Runtime.
  • Jest now properly reports pending tests disabled with xit and xdescribe.
  • Removed preprocessCachingDisabled config option.
  • Added a testEnvironment option to customize the sandbox environment.
  • Added support for @scoped/name npm packages.
  • Added an integration test runner for Jest that runs all tests for examples and packages.

0.8.2

  • Performance improvements.
  • jest now uses chalk instead of its own colors implementation.

0.8.1

  • --bail now reports with the proper error code.
  • Fixed loading of the setup file when using jasmine2.
  • Updated jsdom to 7.2.0.

0.8.0

  • Added optional support for jasmine2 through the testRunner config option.
  • Fixed mocking support for Map, WeakMap and Set.
  • node was added to the defaults in moduleFileExtensions.
  • Updated the list of node core modules that are properly being recognized by the module loader.

0.7.1

  • Correctly map process.on into jsdom environments, fixes a bug introduced in jest 0.7.0.

0.7.0

  • Fixed a memory leak with test contexts. Jest now properly cleans up test environments after each test. Added --logHeapUsage to log memory usage after each test. Note: this is option is meant for debugging memory leaks and might significantly slow down your test run.
  • Removed mock-modules, node-haste and mocks virtual modules. This is a breaking change of undocumented public API. Usage of this API can safely be automatically updated through an automated codemod:
  • Example: http://astexplorer.net/#/zrybZ6UvRA
  • Codemod: https://github.com/cpojer/js-codemod/blob/main/transforms/jest-update.js
  • jscodeshift: https://github.com/facebook/jscodeshift
  • Removed navigator.onLine and mockSetReadOnlyProperty from the global jsdom environment. Use window.navigator.onLine = true; in your test setup and Object.defineProperty instead.

0.6.1

  • Updated jsdom to 7.0.2.
  • Use the current working directory as root when passing a jest config from the command line.
  • Updated the React examples and getting started guide
  • Modules now receive a module.parent field so unmocked modules don't assume they are run directly any longer.

0.6.0

  • jest now reports the number of tests that were run instead of the number of test files.
  • Added a --json option to print test results as JSON.
  • Changed the preprocessor API. A preprocessor now receives the script, file and config. The cache key function receives the script, file and stringified config to be able to create consistent hashes.
  • Removed node-worker-pool in favor of node-worker-farm (#540).
  • toEqual now also checks the internal class name of an object. This fixes invalid tests like expect([]).toEqual({}) which were previously passing.
  • Added the option to provide map modules to stub modules by providing the moduleNameMapper config option.
  • Allow to specify a custom testRunner in the configuration (#531).
  • Added a --no-cache option to make it easier to debug preprocessor scripts.
  • Fix code coverage on windows (#499).

0.5.6

  • Cache test run performance and run slowest tests first to maximize worker utilization
  • Update to jsdom 6.5.0

0.5.5

  • Improve failure stack traces.
  • Fix syntax error reporting.
  • Add --watch option (#472).

0.5.2

  • Fixed a bug with syntax errors in test files (#487).
  • Fixed chmod error for preprocess-cache (#491).
  • Support for the upcoming node 4.0 release (#490, #489).

0.5.1

  • Upgraded node-worker-pool to 3.0.0, use the native Promise implementation.
  • testURL can be used to set the location of the jsdom environment.
  • Updated all of jest's dependencies, now using jsdom 6.3.
  • jest now uses the native Promise implementation.
  • Fixed a bug when passed an empty testPathIgnorePatterns.
  • Moved preprocessor cache into the haste cache directory.

0.5.0

  • Added --noStackTrace option to disable stack traces.
  • Jest now only works with iojs v2 and up. If you are still using node we recommend upgrading to iojs or keep using jest 0.4.0.
  • Upgraded to jsdom 6.1.0 and removed all the custom jsdom overwrites.

<=0.4.0

  • See commit history for changes in previous versions of jest.