Skip to content
Switch branches/tags
Go to file
* perf(jest-resolve): skip error creation on not found stat calls

* dedupe

Co-authored-by: Simen Bekkhus <>
524 contributors

Users who have contributed to this file

@SimenB @cpojer @pedrottimark @rubennorte @jeysal @mattphillips @mjesun @thymikee @scotthovestadt @rickhanlonii @ranyitz @rogeliog
2992 lines (2360 sloc) 230 KB




Chore & Maintenance

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


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



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



  • [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)


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



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



  • [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



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



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



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



  • [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)


  • [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)



  • [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)



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


  • [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)



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


  • [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)



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


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



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


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



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



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


  • [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)



  • [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)


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



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


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



  • [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)


  • [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.



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



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


  • [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)



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



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



  • [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)


  • [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)



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



  • [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 (#8751)
  • [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)


  • [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)


  • [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)



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



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


  • [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)



  • [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)


  • [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)



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


  • [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)



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


  • [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)



  • [*] 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)



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



  • [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)


  • [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)



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



  • [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) (#10393)
  • [jest-snapshot] Correctly handles arrays and property matchers in snapshots (#10404)



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


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



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


  • [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)



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



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



  • [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) (#10217)


  • [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)



  • [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)


  • [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 file


  • [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)



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



  • [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)


  • [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)



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

Chore & Maintenance

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


Chore & Maintenance

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



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



  • [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)



  • [@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)


  • [*] 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


  • [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)


  • [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)


  • [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)



  • [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)



  • [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)


Chore & Maintenance

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



  • [@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)



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


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



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



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



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



  • [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)


  • [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)


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



  • [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)


  • [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 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 (#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)



  • [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 (#8448)
  • [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)


  • [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)


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



  • [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)


  • [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 (#8406)
  • [LICENSE] Follow copyright header guidelines and delete For Jest software (#8428)


  • [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)



  • [@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)



  • [@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)


  • [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)




  • [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)


  • [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 (#8126)


  • [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)



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

Chore & Maintenance

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



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


  • [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)



  • [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)


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


  • [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)


  • [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 for current and version 24 (#7872)
  • [docs]: Improve runAllTimers doc (it exhausts the micro-task queue) (#8031)
  • [docs]: Update 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 (#7985)
  • [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, #7809)


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



  • [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)


  • [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)



  • [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)


  • [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 (#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/ (#7127)
  • [docs] Removed useless expect.assertions in (#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 (#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)


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



  • [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)


  • [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)



  • [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)


  • [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)



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


  • [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 (#6792)



  • [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


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



  • [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)


  • [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)



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


  • [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 (#6549)
  • [tests] Improve stability of yarn test on Windows (#6534)
  • [*] Transpile object shorthand into Node 4 compatible syntax (#6582)
  • [*] Update all legacy links to (#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)



  • [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)


  • [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)



  • [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)


  • [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)


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)


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



  • [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 (#5948)
  • [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)


  • [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)



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



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


  • [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)



  • [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)


  • [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


  • [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)


  • [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


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


  • [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


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

jest 22.2.0


  • [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)


  • [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. (#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


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


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

jest 22.1.3


  • [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


  • [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


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

jest 22.1.0


  • [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)


  • [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


  • [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


  • [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)


  • [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


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


  • [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


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


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

jest 22.0.0


  • [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 in toBe matcher (#4917)


  • [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 (#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


  • 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 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 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


  • 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
  • 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 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
  • 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:
  • 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.


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


  • --bail now reports with the proper error code.
  • Fixed loading of the setup file when using jasmine2.
  • Updated jsdom to 7.2.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.


  • Correctly map process.on into jsdom environments, fixes a bug introduced in jest 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:
  • Codemod:
  • jscodeshift:
  • Removed navigator.onLine and mockSetReadOnlyProperty from the global jsdom environment. Use window.navigator.onLine = true; in your test setup and Object.defineProperty instead.


  • 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.


  • 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).


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


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


  • 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).


  • 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.


  • 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.


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