NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #832 most downloaded on npm
`jest-docblock` is a package that can extract and parse a specially-formatted comment called a "docblock" at the top of a file.
Last release 1 months ago
28 Aug 2026
Ships fairly regularly
a new release about every 3 months
Most releases are documented
notes for 44 of 50 stable releases
1 version withdrawn
withdrawn after publishing
10 years old
126 releases · first in 2017
[jest-runtime] Emit the JSON-without-import-attribute deprecation warning once per test file instead of once per worker, so it is no longer silently s…
On a personal note: King Harald V of Norway passed away this morning. He ascended the throne 35 years ago, two months before I was born. This release is dedicated to his memory. Hvil i fred 🇳🇴
This is a big release. It touches jest-runtime, jest-resolve and jest-haste-map in many places, and with this many changes there might be regressions 😬. If your suite behaves differently after upgrading, please open an issue.
whenCalledWithMock functions can now configure return values per argument list, contributed by @timkindberg (#16053):
const fn = jest.fn();
fn.whenCalledWith('apple').mockReturnValue('red');
fn.whenCalledWith('banana').mockReturnValue('yellow');
fn.whenCalledWith(expect.any(Number)).mockReturnValue('numeric');
fn('apple'); // 'red'
fn('banana'); // 'yellow'
fn(42); // 'numeric'
fn('grape'); // undefinedThe returned object is a real Mock, so mockReturnValueOnce, mockResolvedValue, mockImplementation etc. all chain here too. Argument slots accept literals or any asymmetric matcher, with the same equality semantics as toHaveBeenCalledWith(). Calls that match nothing fall through to the base mock. See the Mock Functions docs for matching and precedence details.
jest.retryTimes() can now retry a whole describe block instead of a single test, contributed by @soltonigiri (#16322). Each attempt reruns the block's beforeAll/afterAll hooks, child tests and nested describes, which helps when tests in a block depend on shared state:
describe('workflow', () => {
jest.retryTimes(3, {entireDescribe: true});
test('first step', () => {});
test('second step', () => {}); // a failure retries the entire block
});The non-watchman path of jest-haste-map is rewritten. @parcel/watcher replaces the homegrown NodeWatcher and FSEventsWatcher (#16188), and fdir replaces the hand-rolled directory recursion in the crawler (#16187). A batch of fixes also makes watching and indexing survive locked files on Windows, watchman failures, and duplicate manual mocks (#16295, #16358, #16355, #16360).
If you can, please run your suite with --no-watchman (in and out of watch mode) to exercise the new crawler and watchers, and report anything odd 👍
babel-plugin-istanbul is updated to v8 (#16049)glob is updated to v13 (#16397)source-map-support is replaced with an implementation in @jest/source-map (#16327). This fixes a memory leak where source-map-support's process-global caches pinned every finished test file's sandbox. Source maps also survive environment teardown, --testLocationInResults looks up the right column, and scheme-prefixed sources like webpack:/// are kept as-is.require overhead in jest-runtime is cut: module ID resolution is skipped when no mock can apply, and core modules answer before the manual-mock probe (#16376).jest-snapshot loads babel, semver and synckit lazily, so every test process loads ~200 fewer modules (#16387).jest-haste-map caches the watchman socket path, so warm runs spawn no watchman processes (#16386), and reuses cached metadata for duplicated haste names instead of re-parsing them on every startup (#16351)..snap file path as matcherResult.snapshotPath in failureDetails (#16374).--collectTests expands test.each/describe.each cases and reports per-status counts plus a summary line that matches a real run (#16259).AggregateError inner errors and nested cause chains render with code frames and per-level indentation, and are included in --json output, retryReasons and reporter annotations (#16316).A long list of fixes brings jest-runtime's module system closer to Node's:
__mocks__ files now apply to ESM on Node 24.9+. Static imports, dynamic import() and require() of an ESM file generate an automock from the real module's namespace instead of failing with "Attempting to import a mock without a factory" (#16391).jest.unstable_mockModule gaps are closed: mocks apply when the mocked file is require()d directly, async factories run once and fail the import instead of crashing the worker 😅, and mocks made inside jest.isolateModules stay scoped to that block (#16389, #16365).require(esm), CJS/ESM interop, import.meta, data: URIs and error ordering now match Node in dozens of edge cases. See the Fixes section for the full list (#16364 through #16391).module-sync export condition resolves, so packages that expose their ESM entry point for require() load the same file Node picks (#16336).The intentional divergences from Node's module system are now documented on the ECMAScript Modules page (#16368).
--preserve-symlinks / NODE_PRESERVE_SYMLINKS (#16260).moduleNameMapper applies to both spellings of core module specifiers (fs and node:fs), and builtins that only exist prefixed (node:sqlite, node:test) resolve asynchronously (#16390, #16388).On top of the highlights there are ~60 fixes across jest-circus, jest-haste-map, jest-config, jest-mock and the transform cache keys. See the full changelog below 😀
[@jest/expect-utils, jest-mock] Add mockFn.whenCalledWith(...args) for configuring return values per argument list, with first-class asymmetric-matcher support (#16053)[@jest/expect-utils] Export AsymmetricMatcher and FunctionParameters types (previously private to expect) (#16053)[jest-circus, jest-core, jest-jasmine2, jest-test-result, jest-types] --collectTests now expands test.each/describe.each cases and reports per-status counts (skipped/todo via the new wouldRun flag for selected tests) plus a summary line that match a real run, including under --testNamePattern and .only/fdescribe focus on both the circus and jasmine2 runners (#16259)[jest-circus, jest-environment, jest-runtime, jest-types] Add describe-level retries via jest.retryTimes(..., {entireDescribe: true}) (#16322)[jest-circus, jest-message-util, jest-reporters, jest-types] Add retryMessages to AssertionResult and export formatErrorStack, so the retry log renders nested cause and AggregateError sections with code frames instead of serialized [cause]:/[errors]: markers (#16316)[jest-circus, jest-types] Add unhandledErrorsDetailed to Circus.RunResult, so an unhandled rejection reports its cause chain and AggregateError entries with code frames instead of a pre-serialized stack (#16316)[jest-haste-map] Replace NodeWatcher and FSEventsWatcher with @parcel/watcher for the non-watchman watch path (#16188)[jest-resolve] Bump unrs-resolver to 1.12.1, remove jest-pnp-resolver and unnecessary checks (#15721)[jest-resolve] Honor Node's --preserve-symlinks / NODE_PRESERVE_SYMLINKS in the default resolver by passing symlinks: false to unrs-resolver (#16260)[jest-runtime] Apply automocking and manual __mocks__ files to synchronously evaluable ESM graphs on Node 24.9+ - static imports, dynamic import() and require() of an ESM file now generate an automock from the real module's namespace instead of failing with "Attempting to import a mock without a factory". Graphs that need async evaluation (top-level await) or an async-only resolver or transformer still throw (#16391)[jest-runtime] Route process.getBuiltinModule through the sandbox, so it returns the sandbox process and the hooked node:module instead of the host's (#16391)[jest-runtime] Throw an actionable error from module.register() and module.registerHooks() inside a test - the hooks attached to the loader running Jest itself, never saw the sandboxed requires they were meant for, and stayed registered for every later test file in the worker (#16391)[jest-runtime] Surface resolution and import-attribute errors in an ESM graph before executing any of its CJS dependencies on Node 24.9+, matching Node's run-nothing-on-a-broken-graph behavior; the legacy loader on older versions keeps its linking-time execution order (#16391)[jest-runtime] Throw ERR_SOURCE_PHASE_NOT_DEFINED with an actionable message for import source and import.source(), instead of failing at instantiation with V8's bare "Source phase import object is not defined" (#16391)[jest-runtime] Emit the JSON-without-import-attribute deprecation warning once per test file instead of once per worker, so it is no longer silently swallowed for every file after the first (#16391)[jest-runtime] Set import.meta.main to true in the test file and false in every module it loads, matching Node 24+ (#16367)[jest-runtime] Resolve the module-sync export condition, so a package that exposes its ESM entry point for require() loads the same file Node would (#16336)[jest-snapshot] Add external snapshot paths to custom reporter failure details (#16374)[jest-console, jest-reporters] CustomConsole now buffers console output so TestResult.console is populated for reporters when verbose is enabled, while GitHubActionsReporter avoids replaying buffered output in verbose mode (#16155)[expect, jest-message-util, jest-pattern, jest-regex-util, jest-util] Revert node: protocol imports to restore webpack/browser-bundle compatibility (#16167)[expect] Widen toMatchObject and objectContaining parameter type from Record<string, unknown> to object so class instances are accepted (#16196)[jest-circus] Call a generator test body with the shared test context, so this matches what a regular test function receives (#16347)[jest-circus] Capture the error listeners of the parent process instead of the in-sandbox process, so listeners registered before the test file survive teardown and sandbox listeners no longer leak onto the parent (#16347)[jest-circus] Clear currentlyRunningTest after skipped and todo tests (#16342)[jest-circus] Prevent late done() callbacks from affecting later test or hook invocations (#16343)[jest-circus, jest-jasmine2] Honor --expand when formatting node:assert failures, instead of always collapsing the diff (#16347)[jest-circus, jest-jasmine2, jest-message-util] Serialize the inner errors of an AggregateError into failureMessages, retryReasons and unhandledErrors, so --json output and reporter annotations include them (#16316)[jest-circus, jest-snapshot] Keep snapshot state and counts correct when a test retries (#16344)[@jest/create-cache-key-function] Include the caller support flags in the generated key, so a transformer that emits ESM or CJS based on them no longer shares one cache entry between the two (#16331)[@jest/create-cache-key-function] Include the stringified project config in the generated key, so editing a transformer's own settings invalidates what it cached (#16331)[@jest/transform] Include the caller support flags in a transform's cache key, so a file transformed both as ESM and as CJS no longer serves one shape's output for the other (#16331)[jest-config] Add missing findRelatedTests, outputFile, and replname entries to ValidConfig so they no longer trigger spurious "Unknown option" warnings (#16224)[jest-config] Use --config for the global config when multiple --projects are specified (#16273)[jest-core] Serialize bigint values in --json and --outputFile output as their literal form (4n), instead of failing the run with TypeError: Do not know how to serialize a BigInt (#16338)[jest-core] Do not report a CustomGC async resource (used by N-API addons such as napi-rs for per-isolate GC bookkeeping) as an open handle, since it is napi_unref'd by the addon and can never keep the event loop alive (#16379)[jest-each] Keep a $&, $`, $' or $$ inside a %p param value out of the replacement, so the title shows the value instead of the text around it (#16338)[jest-each] Interpolate a bigint into a %j title as its literal form ("4n") at any depth, instead of throwing TypeError: Do not know how to serialize a BigInt while collecting the tests (#16338)[jest-environment, jest-runtime] Bind sandboxInjectedGlobals to the right values when injectGlobals is false, instead of shifting every one of them by a position (#16377)[jest-environment-node, jest-util] Only warn about a conflicting globalsCleanup mode when one was explicitly configured, and follow the mode that is actually in effect (#16323)[jest-environment-node, jest-util] Stop resolving lazy globals when setting up an environment, so Node 26's builtin module globals are no longer loaded (and no longer emit their deprecation warnings) for every test file (#16324)[jest-haste-map] Keep watch mode alive when an outside process briefly makes a file unreadable on Windows, instead of tearing the watcher down on EPERM (#16295)[jest-haste-map] Keep indexing when an outside process holds a file open on Windows, instead of failing the whole crawl on EPERM (#16358)[jest-haste-map] Keep a duplicated manual mock resolving when the file it pointed at is deleted in watch mode (#16360)[jest-haste-map] Shut the worker farm down when a duplicate manual mock aborts the build under throwOnModuleCollision (#16354)[jest-haste-map] Attach the watchman client's error listener before the first command, so a watchman failure falls back to the node crawler instead of crashing on an unhandled error event, and always end the client (#16355)[jest-haste-map] Stop delivering watch events after WatchmanWatcher is closed, and route its warnings through the configured console (#16355)[jest-haste-map] Restore the nested duplicates index correctly in ModuleMap.fromJSON, so a haste collision reported inside a test worker raises DuplicateHasteCandidatesError instead of a TypeError (#16353)[jest-haste-map] Match watched files on a full extension, so moduleFileExtensions: ['js'] no longer accepts foo.mjs (#16352)[jest-haste-map] Delimit the fields that make up the haste map cache key, so two different option sets cannot hash to the same cache file (#16352)[jest-message-util] Print the inner errors of an AggregateError thrown inside a test (#16316)[jest-message-util] Indent nested cause and AggregateError sections of a test failure by one level per depth, so the nesting is legible instead of rendering flat (#16316)[jest-message-util] Color stack traces line by line so blank lines stay blank (#16316)[jest-message-util] Detect Jest's own frames without assuming the checkout directory's name, and cover @jest/* packages, so stack traces and code frames point at user code (#16326)[jest-mock] mockResolvedValue / mockRejectedValue now see all overload return types, so a Promise-returning overload survives even when a later overload returns a non-Promise (e.g. pg.Client['end']) (#16237)[@jest-environment/jsdom-abstract] Make @types/jsdom a peer dependency (#16166)[jest-mock] Remove the leftover own accessor descriptor when restoring a spyOn of an inherited getter or setter, so the instance keeps reflecting the prototype (#16226)[jest-resolve] Include extensionsToTreatAsEsm in the shouldLoadAsEsm cache key, so projects with different extension lists don't read each other's answers (#16369)[jest-resolve] Make getModuleIDAsync build and cache data: URI module IDs the same way as getModuleID (#16370)[jest-resolve] Keep the node: prefix when resolving a core module asynchronously, so a builtin that only exists prefixed (node:sea, node:sqlite, node:test, node:test/reporters) resolves instead of failing as a missing bare package (#16388)[jest-resolve] Look up manual mocks for node: protocol specifiers under the unprefixed name they are stored as (#16388)[jest-resolve] Apply moduleNameMapper consistently to both spellings of core module specifiers (fs vs node:fs) (#16390)[jest-resolve] Keep virtual and ordinary mock module IDs isolated across test files (#16296)[jest-resolve] Guard missing require.resolve.paths (#16052)[jest-resolve, jest-config, jest-runner] Support a user resolver written as an ES module (#16332)[jest-resolve, jest-runtime] Throw the CJS parse error for ESM syntax in a "type": "commonjs" package or a .cjs file instead of loading it as ESM, matching Node (#16368)[@jest/source-map] Keep source map sources that name a scheme, such as webpack:///, instead of resolving them into a path that does not exist (#16327)[@jest/source-map] Look up --testLocationInResults positions at the right column, and keep a mapping to the first column instead of discarding it (#16327)[@jest/source-map] Warn when a source map cannot be parsed, instead of silently leaving its frames untranslated (#16327)[jest-runner, @jest/source-map] Keep a source-mapped stack for an error thrown after the test environment was torn down (#16327)[jest-runtime, @jest/source-map] Keep source maps past teardown and past the next test file's install, so a stack from a file no earlier stack mentioned still points at the original source (#16330)[jest-runtime] Report that no coverage was collected when getAllV8CoverageInfoCopy is called after teardown, instead of returning an empty result (#16385)[jest-runtime] Cache a CJS module's parsed exports before walking its re-exports, so two modules that re-export each other no longer overflow the stack when imported from ESM (#16363)[jest-runtime] Keep a re-exported ES module's parse failure from marking the re-exporting CommonJS file as ESM, so module.exports = require('./dep.mjs') loads instead of failing with module is not defined (#16363)[jest-runtime] Scope module mocks instantiated inside jest.isolateModules/isolateModulesAsync to that block, so a mock first imported there no longer outlives it - matching how CommonJS mocks already behave (#16365)[jest-runtime] Suspend module isolation while generating an automock, so loading the real module to read its shape no longer populates the isolated registry (#16365)[jest-runtime] Check a cached ES module's status before require() returns it, so a module whose evaluation threw rethrows that error and one left linked by a failed sibling is evaluated instead of returning uninitialized bindings (#16364)[jest-runtime] Report the original ERR_REQUIRE_ASYNC_MODULE when a require() of a top-level-await graph is retried, instead of a spurious "concurrent import()" error (#16364)[jest-runtime] Throw the evaluation error when another caller's import() of the same module failed while we awaited it, instead of resolving with the errored module (#16364)[jest-runtime] Mark the result of require()ing an ES module that has a default export with __esModule: true through a live-binding facade, and serve the same object from require.cache, matching Node (#16367)[jest-runtime] Provide a CommonJS module's exports under the 'module.exports' named export when imported from ESM, matching Node 23+ (#16367)[jest-runtime] Give the test file itself a non-null require.main (#16367)[jest-runtime] Populate module.children with the modules a file loads, matching Node (#16368)[jest-runtime] Provide import.meta.resolve and import.meta.jest in data: URI modules, accept any-case mediatype parameters, and use Node's error codes for invalid data: URIs (#16368)[jest-runtime] Key ES modules by full URL, so query and fragment suffixes create the same module instances as Node and show up in import.meta.url (#16375)[jest-runtime] Share modules between overlapping graphs when a CommonJS module require()s an ES module mid-load, instead of evaluating shared dependencies twice (#16375)[jest-runtime] Throw ERR_REQUIRE_CYCLE_MODULE like Node when a CommonJS module require()s an ES module that is still being loaded, instead of evaluating the module a second time (#16366)[jest-runtime] Key builtin modules in the ESM registry by one canonical specifier (#16341)[jest-runtime] import.meta.resolve() for a builtin uses its node: specifier (#16341)[jest-runtime] Fall back to native ESM when a .js file contains ESM syntax but has no "type":"module" marker (#16152)[jest-runtime] Allow require() of ESM-marked files on Node < 24.9 via transform fallback (#16244)[jest-runtime, @jest/transform] Surface actionable ERR_REQUIRE_ESM error for files with untransformed ESM syntax instead of the generic "unexpected token" message (#16244)[jest-runtime] Support older test environments whose moduleMocker does not implement clearMocksOnScope (#16169)[jest-runtime] Apply jest.unstable_mockModule when the mocked file itself is require()d, not only when it is imported as a dependency (#16389)[jest-runtime] Apply jest.unstable_mockModule to statically imported data: URIs on Node 24.9+, matching dynamic import() (#16389)[jest-runtime] Run an async jest.unstable_mockModule factory once per module instead of twice, and fail the import instead of crashing the worker when the factory rejects (#16389)[jest-runtime] Hide a require(esm) module that failed to evaluate from require.cache, as Node does, instead of exposing a namespace with uninitialized bindings (#16389)[jest-runtime] Strip the byte-order mark when importing a JSON module, matching require() and Node (#16389)[jest-runtime] Throw ERR_REQUIRE_ASYNC_MODULE when require(esm) runs under an async-only custom resolver, instead of silently resolving with the default resolver (#16389)[jest-runtime] Parse imported JSON modules with the test realm's JSON, so their objects pass instanceof Object inside the test like require()d JSON does (#16389)[jest-runtime] Accept every file: URL string in the sandboxed module.createRequire, including one with a localhost authority, as Node does (#16389)[jest-runtime] Point at {virtual: true} when jest.mock or jest.unstable_mockModule is given a module that cannot be resolved (#16389)[jest-reporters] Fix coverage report table formatting in CI/GitHub Actions environments where process.stdout.columns is undefined by falling back to the COLUMNS env var or 80 columns in CI, preserving existing behaviour in other non-TTY environments (#16227)[jest-runtime] Support CJS-in-ESM exports via "module.exports" named exports (#16277)[jest-snapshot] Keep a skipped or failed test's hinted snapshots, instead of reporting them obsolete (#16348)[jest-util] Stop globsToMatcher reusing a cached matcher compiled with different picomatch options, and keep its dot: true default when dot is passed as undefined (#16381)[pretty-format] Move the react-is aliases into the @jest scope, so they cannot be shadowed by unrelated packages published under the alias names (#16333)[docs] Document the intentional divergences from Node's module system in the ECMAScript Modules page (#16368)[docs] Note deprecation of react-test-renderer in React Native tutorial and pretty-format README (#16294)[docs] Use @testing-library/react-native in the React Native tutorial instead of the deprecated react-test-renderer (#16318)[babel-jest, @jest/transform] Update babel-plugin-istanbul to v8 (#16049)[jest-config, @jest/reporters, jest-runtime] Update glob to v13 (#16397)[jest-haste-map] Refactor massive class into multiple files (#16180)[jest-haste-map] Drop walker dependency; replace hand-rolled directory recursion in the JS crawler and watcher startup with fdir (#16187)[jest-haste-map] Reuse cached metadata for files whose haste name is a known duplicate, instead of re-reading and re-parsing them on every startup (#16351)[jest-haste-map] Cache the watchman socket path and replace the watchman --version probe with get-sockname, so warm runs spawn no watchman processes (#16386)[jest-resolve] Store the per-directory package-type lookup in the cache it reads, so it actually memoizes (#16369)[jest-resolve, jest-runtime] Cut repeated work on the resolution hot path: hoist the platform-extension list to construction, memoize isCoreModule and the options cache-key serialization, skip mapper preparation when no moduleNameMapper is configured, run each mapper regex once, and stop re-parsing NODE_OPTIONS on every default-resolver call (#16371)[jest-resolve] Cut warm resolution cost to about a third: reuse one unrs-resolver factory per options shape instead of cloning per resolution, compose the factory cache key from per-array cached strings instead of serializing options, and stop constructing an Error for misses that findNodeModule swallows; add a __benchmarks__ suite for the default resolver (#16373)[jest-runner, @jest/source-map] Replace source-map-support with an implementation in @jest/source-map (#16327)[jest-snapshot] Load babel, semver and synckit lazily, so requiring the package (which every test process does through @jest/expect) no longer loads ~200 modules that only writing inline snapshots needs (#16387)[jest-runtime] Reduce per-require overhead: skip module ID resolution when no mock can apply, answer core modules before probing for a manual mock, share one require.cache proxy across modules, and cache empty files (#16376)[@jest/source-map] Deprecate getCallsite in favour of SourceMapSupport#getCallsite (#16327)[jest-runtime] Avoid magical null value in ESM loader (#16160)Full Changelog: v30.4.2...v30.5.0
One column per quarter.
Main feature is a rewrite of our custom runtime in preparation for stabilisation of native support of ESM. As part of that work require(esm) module is
Big release! 😀
Main feature is a rewrite of our custom runtime in preparation for stabilisation of native support of ESM. As part of that work require(esm) module is now supported on Node 24.9+ (still requires --experimental-vm-modules like before).
In addition we now support fake timers for the recently released Temporal API in Node v26.
React 19 is also supported properly in pretty-format, meaning snapshots of React components now work like they should.
Due to all the changes, there might be regressions that snuck in. Please report them!
Full list of changes below
[babel-jest] Support collecting coverage from .mts, .cts (and other) files (#15994)[jest-circus, jest-cli, jest-config, jest-core, jest-jasmine2, jest-types] Add --collect-tests flag to discover and list tests without executing them (#16006)[jest-config, jest-runner, jest-worker] Add workerGracefulExitTimeout config option to control how long workers are given to exit before being force-killed (#15984)[jest-config] Add support for jest.config.mts as a valid configuration file (#16005)[jest-config, jest-core, jest-reporters, jest-runner] verbose and silent can now be set per-project; the project-level value overrides the global value for that project's tests (#16133)[@jest/fake-timers] Accept Temporal.Duration in jest.advanceTimersByTime() and jest.advanceTimersByTimeAsync() (#16128)[@jest/fake-timers] Accept Temporal.Instant and Temporal.ZonedDateTime in jest.setSystemTime() and useFakeTimers({now}) (#16128)[@jest/fake-timers] Support faking Temporal.Now.* (#16131)[jest-mock] Add clearMocksOnScope(scope) on ModuleMocker for clearing every mock function exposed on a scope object (#16088)[jest-resolve] Add canResolveSync() on Resolver so callers can detect when a user-configured resolver only exports an async hook (#16064)[jest-runtime] Use synchronous evaluate() for ES modules without top-level await on Node versions that support it (v24.9+), and prefer the synchronous transform path when a sync transformer is configured (#16062)[jest-runtime] Support require() of ES modules on Node v24.9+ (#16074)[jest-runtime] Validate TC39 import attributes (with { type: 'json' }) on ESM imports (#16127)[@jest/transform] Add canTransformSync(filename) on ScriptTransformer so callers can pick the sync vs async transform path (#16062)[jest-util] Add isError helper (#16076)[pretty-format] Support React 19 (#16123)[expect-utils] Fix toStrictEqual failing on structuredClone results due to cross-realm constructor mismatch (#15959)[@jest/expect-utils] Prevent toMatchObject/subset matching from throwing when encountering exotic iterables (#15952)[fake-timers] Convert Date to milliseconds before passing to @sinonjs/fake-timers (#16029)[jest] Export GlobalConfig and ProjectConfig TypeScript types (#16132)[jest-circus] Prevent crash when asyncError is undefined for non-Error throws (#16003)[jest-circus, jest-jasmine2] Include Error.cause in JSON failureMessages output (#15967)[jest-config] Fix preset path resolution on Windows when the preset uses subpath exports (#15961)[jest-config] Allow collectCoverage and coverageProvider in project config without a validation warning (#16132)[jest-config] Project config validator now emits "is not supported in an individual project configuration" instead of "probably a typing mistake" for known global-only options (#16132)[jest-environment-node] Fix --localstorage-file warning on Node 25+ (#16086)[jest-reporters] Apply global coverage threshold to unmatched pattern files in addition to glob/path thresholds (#16137)[jest-reporters, jest-runner, jest-runtime, jest-transform] Fix coverage report not showing correct code coverage when using projects config option (#16140)[jest-runtime] Resolve expect and @jest/expect from the internal module registry so test-file imports share the same JestAssertionError as the global expect (#16130)[jest-runtime] Improve CJS-from-ESM interop: __esModule/Babel default unwrap, broader named-export coverage, and shared CJS singleton across importers (#16050)[jest-runtime] Load .js files with ESM syntax but no "type":"module" marker as native ESM (#16050)[jest-runtime] Extend the .js-with-ESM-syntax fallback to require() on Node v24.9+ - falls back to require(esm) when the CJS parser rejects ESM syntax (#16078)[jest-runtime] Fix deadlocks and double-evaluation in concurrent ESM and wasm imports (#16050)[jest-runtime] Fix error when require() is called after the Jest environment has been torn down (#15951)[jest-runtime] Fix missing error when import() is called after the Jest environment has been torn down (#16080)[jest-runtime] Fix virtual unstable_mockModule registrations not respected in ESM (#16081)[jest-runtime] Apply moduleNameMapper when resolving modules with require.resolve() and the paths option (#16135)[@jest/fake-timers] Upgrade @sinonjs/fake-timers (#16139)[jest-runtime] Use synchronous linkRequests / instantiate for ESM linking on Node v24.9+ (#16063)Full Changelog: v30.3.0...v30.4.0
[*] Update example repo for testing React Native projects
[*] Remove and deprecate jest-repl package
[jest-resolver] Implement the defaultAsyncResolver (#15679)[jest-resolver] Resolve builtin modules correctly (#15683)[jest-environment-node, jest-util] Avoid setting globals cleanup protection symbol when feature is off (#15684)[*] Remove and deprecate jest-repl package (#15673)[jest-resolver] Replace custom isBuiltinModule with node's isBuiltin (#15685)Full Changelog: https://github.com/jestjs/jest/blob/main/CHANGELOG.md
[jest-environment-jsdom, jest-environment-jsdom-abstract] Increased version of jsdom to ^26.0.0 (#15325CVE-2024-37890)
Today we are happy to announce the release of Jest 30. This release features a substantial number of changes, fixes, and improvements. While it is one of the largest major releases of Jest ever, we admit that three years for a major release is too long. In the future, we are aiming to make more frequent major releases to keep Jest great for the next decade.
If you want to skip all the news and just get going, run npm install jest@^30.0.0 and follow the migration guide: Upgrading from Jest 29 to 30.
[*] Renamed globalsCleanupMode to globalsCleanup and --waitNextEventLoopTurnForUnhandledRejectionEvents to --waitForUnhandledRejections[expect] Add ArrayOf asymmetric matcher for validating array elements. (#15567)[babel-jest] Add option excludeJestPreset to allow opting out of babel-preset-jest (#15164)[expect] Revert #15038 to fix expect(fn).toHaveBeenCalledWith(expect.objectContaining(...)) when there are multiple calls (#15508)[jest-circus, jest-cli, jest-config] Add waitNextEventLoopTurnForUnhandledRejectionEvents flag to minimise performance impact of correct detection of unhandled promise rejections introduced in #14315 (#14681)[jest-circus] Add a waitBeforeRetry option to jest.retryTimes (#14738)[jest-circus] Add a retryImmediately option to jest.retryTimes (#14696)[jest-circus, jest-jasmine2] Allow setupFilesAfterEnv to export an async function (#10962)[jest-circus, jest-test-result] Add startedAt timestamp in TestCaseResultObject within onTestCaseResult (#15145)[jest-cli] Export buildArgv (#15310)[jest-config] [BREAKING] Add mts and cts to default moduleFileExtensions config (#14369)[jest-config] [BREAKING] Update testMatch and testRegex default option for supporting mjs, cjs, mts, and cts (#14584)[jest-config] Loads config file from provided path in package.json (#14044)[jest-config] Allow loading jest.config.cts files (#14070)[jest-config] Show rootDir in error message when a preset fails to load (#15194)[jest-config] Support loading TS config files using esbuild-register via docblock loader (#15190)[jest-config] Allow passing TS config loader options via docblock comment (#15234)[jest-config] If Node is running with type stripping enabled, do not require a TS loader (#15480)[@jest/core] Group together open handles with the same stack trace (#13417, & #14789)[@jest/core] Add perfStats to surface test setup overhead (#14622)[@jest/core] [BREAKING] Changed --filter to accept an object with shape { filtered: Array<string> } to match documentation (#13319)[@jest/core] Support --outputFile option for --listTests (#14980)[@jest/core] Stringify Errors properly with --json flag (#15329)[@jest/core, @jest/test-sequencer] [BREAKING] Exposes globalConfig & contexts to TestSequencer (#14535, & #14543)[jest-each] Introduce %$ option to add number of the test to its title (#14710)[@jest/environment] [BREAKING] Remove deprecated jest.genMockFromModule() (#15042)[@jest/environment] [BREAKING] Remove unnecessary defensive code (#15045)[jest-environment-jsdom] [BREAKING] Upgrade JSDOM to v22 (#13825)[@jest/environment-jsdom-abstract] Introduce new package which abstracts over the jsdom environment, allowing usage of custom versions of JSDOM (#14717)[jest-environment-node] Update jest environment with dispose symbols Symbol (#14888 & #14909)[expect, @jest/expect] [BREAKING] Add type inference for function parameters in CalledWith assertions (#15129)[@jest/expect-utils] Properly compare all types of TypedArrays (#15178)[@jest/fake-timers] [BREAKING] Upgrade @sinonjs/fake-timers to v13 (#14544 & #15470)[@jest/fake-timers] Exposing new modern timers function advanceTimersToFrame() which advances all timers by the needed milliseconds to execute callbacks currently scheduled with requestAnimationFrame (#14598)[jest-matcher-utils] Add SERIALIZABLE_PROPERTIES to allow custom serialization of objects (#14893)[jest-mock] Add support for the Explicit Resource Management proposal to use the using keyword with jest.spyOn(object, methodName) (#14895)[jest-reporters] Add support for DEC mode 2026 (#15008)[jest-resolver] Support file:// URLs as paths (#15154)[jest-resolve,jest-runtime,jest-resolve-dependencies] Pass the conditions when resolving stub modules (#15489)[jest-runtime] Exposing new modern timers function jest.advanceTimersToFrame() from @jest/fake-timers (#14598)[jest-runtime] Support import.meta.filename and import.meta.dirname (available from Node 20.11) (#14854)[jest-runtime] Support import.meta.resolve (#14930)[jest-runtime] [BREAKING] Make it mandatory to pass globalConfig to the Runtime constructor (#15044)[jest-runtime] Add unstable_unmockModule (#15080)[jest-runtime] Add onGenerateMock transformer callback for auto generated callbacks (#15433 & #15482)[jest-runtime] [BREAKING] Use vm.compileFunction over vm.Script (#15461)[@jest/schemas] Upgrade @sinclair/typebox to v0.34 (#15450)[@jest/types] test.each(): Accept a readonly (as const) table properly (#14565)[@jest/types] Improve argument type inference passed to test and describe callback functions from each tables (#14920)[jest-snapshot] [BREAKING] Add support for Error causes in snapshots (#13965)[jest-snapshot] Support Prettier 3 (#14566)[@jest/util-snapshot] Extract utils used by tooling from jest-snapshot into its own package (#15095)[pretty-format] [BREAKING] Do not render empty string children ('') in React plugin (#14470)[expect] Show AggregateError to display (#15346)[*] Replace exit with exit-x (#15399)[babel-plugin-jest-hoist] Use denylist instead of the deprecated blacklist for Babel 8 support (#14109)[babel-plugin-jest-hoist] Do not rely on buggy Babel behaviour (#15415)[expect] Check error instance type for toThrow/toThrowError (#14576)[expect] Improve diff for failing expect.objectContaining (#15038)[expect] Use Array.isArray to check if an array is an Array (#15101)[expect] Fix Error cause assertion errors (#15339)[jest-changed-files] Print underlying errors when VCS commands fail (#15052)[jest-changed-files] Abort sl root call if output resembles a steam locomotive (#15053)[jest-circus] [BREAKING] Prevent false test failures caused by promise rejections handled asynchronously (#14315)[jest-circus] Replace recursive makeTestResults implementation with iterative one (#14760)[jest-circus] Omit expect.hasAssertions() errors if a test already has errors (#14866)[jest-circus, jest-expect, jest-snapshot] Pass test.failing tests when containing failing snapshot matchers (#14313)[jest-circus] Concurrent tests now emit jest circus events at the correct point and in the expected order. (#15381)[jest-cli] [BREAKING] Validate CLI flags that require arguments receives them (#14783)[jest-config] Make sure to respect runInBand option (#14578)[jest-config] Support testTimeout in project config (#14697)[jest-config] Support coverageReporters in project config (#14697)[jest-config] Allow reporters in project config (#14768)[jest-config] Allow Node16/NodeNext/Bundler moduleResolution in project's tsconfig (#14739)[@jest/create-cache-key-function] Correct the return type of createCacheKey (#15159)[jest-each] Allow $keypath templates with null or undefined values (#14831)[@jest/expect-utils] Fix comparison of DataView (#14408)[@jest/expect-utils] [BREAKING] exclude non-enumerable in object matching (#14670)[@jest/expect-utils] Fix comparison of URL (#14672)[@jest/expect-utils] Check Symbol properties in equality (#14688)[@jest/expect-utils] Catch circular references within arrays when matching objects (#14894)[@jest/expect-utils] Fix not addressing to Sets and Maps as objects without keys (#14873)[jest-haste-map] Fix errors or clobbering with multiple hasteImplModulePaths (#15522)[jest-leak-detector] Make leak-detector more aggressive when running GC (#14526)[jest-runtime] Properly handle re-exported native modules in ESM via CJS (#14589)[jest-runtime] Refactor _importCoreModel so required core module is consistent if modified while loading (#15077)[jest-schemas, jest-types] [BREAKING] Fix type of testFailureExitCode config option(#15232)[jest-util] Make sure isInteractive works in a browser (#14552)[pretty-format] [BREAKING] Print ArrayBuffer and DataView correctly (#14290)[pretty-format] Fixed a bug where "anonymous custom elements" were not being printed as expected. (#15138)[jest-cli] When specifying paths on the command line, only match against the relative paths of the test files (#12519)
testPathPattern configuration option to testPathPatterns, which now takes a list of patterns instead of the regex.--testPathPattern is now --testPathPatternstestPathPatterns when programmatically calling watch must be specified as new TestPathPatterns(patterns), where TestPathPatterns can be imported from @jest/pattern[jest-reporters, jest-runner] Unhandled errors without stack get correctly logged to console (#14619)[jest-util] Always load mjs files with import (#15447)[jest-worker] Properly handle a circular reference error when worker tries to send an assertion fails where either the expected or actual value is circular (#15191)[jest-worker] Properly handle a BigInt when worker tries to send an assertion fails where either the expected or actual value is BigInt (#15191)[expect] Resolve issue where ObjectContaining matched non-object values. ([#15463])(https://github.com/jestjs/jest/pull/15463).
conditional/check to ensure the argument passed to expect is an object.ObjectContaining behavior.invalid/wrong test case assertions for ObjectContaining.[jest-worker] Addresses incorrect state on exit (#15610)[*] [BREAKING] Bundle all of Jest's modules into index.js (#12348, #14550 & #14661)[jest-haste-map] Only spawn one process to check for watchman installation (#14826)[jest-runner] Better cleanup source-map-support after test to resolve (minor) memory leak (#15233)[jest-circus, jest-environment-node, jest-repl, jest-runner, jest-util] Cleanup global variables on environment teardown to reduce memory leaks (#15215 & #15636 & #15643)[jest-environment-jsdom, jest-environment-jsdom-abstract] Increased version of jsdom to ^26.0.0 (#15325CVE-2024-37890)[*] Increase version of micromatch to ^4.0.7 (#15082)[*] [BREAKING] Drop support for Node.js versions 14, 16, 19, 21 and 23 (#14460, #15118, #15623, #15640)[*] [BREAKING] Drop support for typescript@4.3, minimum version is now 5.4 (#14542, #15621)[*] Depend on exact versions of monorepo dependencies instead of ^ range (#14553)[*] [BREAKING] Add ESM wrapper for all of Jest's modules (#14661)[*] [BREAKING] Upgrade to glob@10 (#14509)[*] Use TypeError over Error where appropriate (#14799)[docs] Fix typos in CHANGELOG.md and packages/jest-validate/README.md (#14640)[docs] Don't use alias matchers in docs (#14631)[babel-jest, babel-preset-jest] [BREAKING] Increase peer dependency of @babel/core to ^7.11 (#14109)[babel-jest, @jest/transform] Update babel-plugin-istanbul to v6 (#15156)[babel-plugin-jest-hoist] Move unnecessary dependencies to devDependencies (#15010)[expect] [BREAKING] Remove .toBeCalled(), .toBeCalledTimes(), .toBeCalledWith(), .lastCalledWith(), .nthCalledWith(), .toReturn(), .toReturnTimes(), .toReturnWith(), .lastReturnedWith(), .nthReturnedWith() and .toThrowError() matcher aliases (#14632)[jest-cli, jest-config, @jest/types] [BREAKING] Remove deprecated --init argument (#14490)[jest-config, @jest/core, jest-util] Upgrade ci-info (#14655)[jest-mock] [BREAKING] Remove MockFunctionMetadataType, MockFunctionMetadata and SpyInstance types (#14621)[@jest/reporters] Upgrade istanbul-lib-source-maps (#14924)[jest-schemas] Upgrade @sinclair/typebox (#14775)[jest-transform] Upgrade write-file-atomic (#14274)[jest-util] Upgrade picomatch to v4 (#14653 & #14885)[docs] Append to NODE_OPTIONS, not overwrite ([#14730](https://github.com/jestjs/jest/pull/14730))[docs] Updated .toHaveBeenCalled() documentation to correctly reflect its functionality (#14842)[docs] Link NestJS documentation on testing with Jest (#14940)[docs] Revised documentation for .toHaveBeenCalled() to accurately depict its functionality. (#14853)[docs] Removed ExpressJS reference link from documentation due to dead link (#15270)[docs] Correct broken links in docs (#15359)See the CHANGELOG.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Jest 30 is shipping soon. Please help us test the beta and open issues and Pull Requests if you run into any issues.
Jest 30 is shipping soon. Please help us test the beta and open issues and Pull Requests if you run into any issues.
AggregateError to display by @BondarenkoAlex in https://github.com/jestjs/jest/pull/15346Full Changelog: https://github.com/jestjs/jest/blob/main/CHANGELOG.md
Nothing published for this version
[jest-config] If Node is running with type stripping enabled, do not require a TS loader
[jest-cli] Export buildArgv (#15310)[jest-config] If Node is running with type stripping enabled, do not require a TS loader (#15480)[@jest/core] Stringify Errors properly with --json flag (#15329)[@jest/fake-timers] [BREAKING] Upgrade @sinonjs/fake-timers to v13 (#14544 & #15470)[jest-runtime] Add onGenerateMock transformer callback for auto generated callbacks (#15433)[@jest/schemas] Upgrade @sinclair/typebox to v0.34 (#15450)[*] Replace exit with exit-x (#15399)[babel-plugin-jest-hoist] Do not rely on buggy Babel behaviour (#15415)[jest-circus] Concurrent tests now emit jest circus events at the correct point and in the expected order. (#15381)[jest-schemas, jest-types] [BREAKING] Fix type of testFailureExitCode config option(#15232)[jest-util] Always load mjs files with import (#15447)Full Changelog: https://github.com/jestjs/jest/compare/v30.0.0-alpha.6...v30.0.0-alpha.7
[babel-jest] Add option excludeJestPreset to allow opting out of babel-preset-jest
[babel-jest] Add option excludeJestPreset to allow opting out of babel-preset-jest (#15164)[jest-circus, jest-test-result] Add startedAt timestamp in TestCaseResultObject within onTestCaseResult (#15145)[jest-config] Show rootDir in error message when a preset fails to load (#15194)[jest-config] Support loading TS config files using esbuild-register via docblock loader (#15190)[jest-config] allow passing TS config loader options via docblock comment (#15234)[expect, @jest/expect] [BREAKING] Add type inference for function parameters in CalledWith assertions (#15129)[@jest/expect-utils] Properly compare all types of TypedArrays (#15178)[jest-resolver] Support file:// URLs as paths (#15154)[jest-runtime] Add unstable_unmockModule (#15080)[expect] Use Array.isArray to check if an array is an Array (#15101)[@jest/create-cache-key-function] Correct the return type of createCacheKey (#15159)[pretty-format] Fixed a bug where "anonymous custom elements" were not being printed as expected. (#15138)[jest-worker] Properly handle a circular reference error when worker tries to send an assertion fails where either the expected or actual value is circular (#15191)[jest-worker] Properly handle a BigInt when worker tries to send an assertion fails where either the expected or actual value is BigInt (#15191)[jest-runner] Better cleanup source-map-support after test to resolve (minor) memory leak (#15233)[*] [BREAKING] Drop support for Node.js versions 14, 19 and 21 (#14460, #15118)[babel-jest, @jest/transform] Update babel-plugin-istanbul to v6 (#15156)[babel-plugin-jest-hoist] Move unnecessary dependencies to devDependencies (#15010)Full Changelog: https://github.com/jestjs/jest/compare/v30.0.0-alpha.5...v30.0.0-alpha.6
[@jest/util-snapshot] Extract utils used by tooling from jest-snapshot into its own package
[@jest/util-snapshot] Extract utils used by tooling from jest-snapshot into its own package (#15095)[jest-each] Introduce %$ option to add number of the test to its title (#14710)[jest-config] Allow Node16/NodeNext/Bundler moduleResolution in project's tsconfig (#14739)testPathPatterns when programmatically calling watch must be specified as `new[*] Increase version of micromatch to ^4.0.7 (#15082)[docs] Revised documentation for .toHaveBeenCalled() to accurately depict its functionality. (#14853)Full Changelog: https://github.com/jestjs/jest/compare/v30.0.0-alpha.4...v30.0.0-alpha.5
[@jest/environment] [BREAKING] Remove deprecated jest.genMockFromModule()
[jest-circus] Add a retryImmediately option to jest.retryTimes (#14696)[@jest/core] Support --outputFile option for --listTests (#14980)[@jest/environment] [BREAKING] Remove deprecated jest.genMockFromModule() (#15042)[@jest/environment] [BREAKING] Remove unnecessary defensive code (#15045)[jest-matcher-utils] Add SERIALIZABLE_PROPERTIES to allow custom serialization of objects (#14893)[jest-reporters] Add support for DEC mode 2026 (#15008)[jest-runtime] Support import.meta.resolve (#14930)[jest-runtime] [BREAKING] Make it mandatory to pass globalConfig to the Runtime constructor (#15044)[@jest/types] Improve argument type inference passed to test and describe callback functions from each tables (#14920)[expect] Improve diff for failing expect.objectContaining (#15038)[jest-changed-files] Print underlying errors when VCS commands fail (#15052)[jest-changed-files] Abort sl root call if output resembles a steam locomotive (#15053)[jest-each] Allow $keypath templates with null or undefined values (#14831)[@jest/expect-utils] Catch circular references within arrays when matching objects (#14894)[@jest/expect-utils] Fix not addressing to Sets and Maps as objects without keys (#14873)[jest-util] Add missing dependency on jest-regex-util (#15030)[@jest/reporters] Upgrade istanbul-lib-source-maps (#14924)[jest-util] Upgrade picomatch to v4 (#14653 & #14885)[docs] Link NestJS documentation on testing with Jest (#14940)Full Changelog: https://github.com/jestjs/jest/compare/v30.0.0-alpha.3...v30.0.0-alpha.4
[jest-circus] Add a waitBeforeRetry option to jest.retryTimes
[jest-circus] Add a waitBeforeRetry option to jest.retryTimes (#14738)[jest-circus, jest-jasmine2] Allow setupFilesAfterEnv to export an async function (#10962)[jest-config] Loads config file from provided path in package.json (#14044)[jest-config] Allow loading jest.config.cts files (#14070)[@jest/core] Group together open handles with the same stack trace (#13417, & #14789)[@jest/core] [BREAKING] Changed --filter to accept an object with shape { filtered: Array<string> } to match documentation (#13319)[@jest/environment-jsdom-abstract] Introduce new package which abstracts over the jsdom environment, allowing usage of custom versions of JSDOM (#14717)[jest-environment-node] Update jest environment with dispose symbols Symbol (#14888 & #14909)[jest-mock] Add support for the Explicit Resource Management proposal to use the using keyword with jest.spyOn(object, methodName) (#14895)[jest-runtime] Support import.meta.filename and import.meta.dirname (available from Node 20.11)[jest-circus] Replace recursive makeTestResults implementation with iterative one (#14760)[jest-circus] Omit expect.hasAssertions() errors if a test already has errors (#14866)[jest-cli] [BREAKING] Validate CLI flags that require arguments receives them (#14783)[jest-config] Support testTimeout in project config (#14697)[jest-config] Support coverageReporters in project config (#14697)[jest-config] Allow reporters in project config (#14768)[pretty-format] [BREAKING] Print ArrayBuffer and DataView correctly (#14290)[jest-haste-map] Only spawn one process to check for watchman installation (#14826)[*] [BREAKING] Upgrade to glob@10 (#14509)[*] Use TypeError over Error where appropriate (#14799)[jest-schemas] Upgrade @sinclair/typebox (#14775)[docs] Append to NODE_OPTIONS, not overwrite (#14730)[docs] Updated .toHaveBeenCalled() documentation to correctly reflect its functionality (#14842)Full Changelog: https://github.com/jestjs/jest/compare/v30.0.0-alpha.2...v30.0.0-alpha.3
[jest-circus, jest-cli, jest-config] Add waitNextEventLoopTurnForUnhandledRejectionEvents flag to minimise performance impact of correct detection of
[jest-circus, jest-cli, jest-config] Add waitNextEventLoopTurnForUnhandledRejectionEvents flag to minimise performance impact of correct detection of unhandled promise rejections introduced in #14315 (#14681)[@jest/core] Add perfStats to surface test setup overhead (#14622)[jest-config] Support testTimeout in project config (#14697)[@jest/expect-utils] [BREAKING] exclude non-enumerable in object matching (#14670)[@jest/expect-utils] Fix comparison of URL (#14672)[@jest/expect-utils] Check Symbol properties in equality (#14688)[expect] [BREAKING] Remove .toBeCalled(), .toBeCalledTimes(), .toBeCalledWith(), .lastCalledWith(), .nthCalledWith(), .toReturn(), .toReturnTimes(), .toReturnWith(), .lastReturnedWith(), .nthReturnedWith() and .toThrowError() matcher aliases (#14632)[jest-config, @jest/core, jest-util] Upgrade ci-info (#14655)[jest-mock] [BREAKING] Remove MockFunctionMetadataType, MockFunctionMetadata and SpyInstance types (#14621)[jest-transform] Upgrade write-file-atomic (#14274)[jest-util] Upgrade picomatch to v3 (#14653)Full Changelog: https://github.com/jestjs/jest/compare/v30.0.0-alpha.1...v30.0.0-alpha.2
[babel-plugin-jest-hoist] Use denylist instead of the deprecated blacklist for Babel 8 support
[jest-config] [BREAKING] Add mts and cts to default moduleFileExtensions config (#14369)[jest-config] [BREAKING] Update testMatch and testRegex default option for supporting mjs, cjs, mts, and cts (#14584)[@jest/core] [BREAKING] Group together open handles with the same stack trace (#13417, & #14543)[@jest/core, @jest/test-sequencer] [BREAKING] Exposes globalConfig & contexts to TestSequencer (#14535, & #14543)[jest-environment-jsdom] [BREAKING] Upgrade JSDOM to v22 (#13825)[@jest/fake-timers] [BREAKING] Upgrade @sinonjs/fake-timers to v11 (#14544)[@jest/fake-timers] Exposing new modern timers function advanceTimersToFrame() which advances all timers by the needed milliseconds to execute callbacks currently scheduled with requestAnimationFrame (#14598)[jest-runtime] Exposing new modern timers function jest.advanceTimersToFrame() from @jest/fake-timers (#14598)[@jest/schemas] Upgrade @sinclair/typebox to v0.31 (#14072)[@jest/types] test.each(): Accept a readonly (as const) table properly (#14565)[jest-snapshot] [BREAKING] Add support for Error causes in snapshots (#13965)[jest-snapshot] Support Prettier 3 (#14566)[pretty-format] [BREAKING] Do not render empty string children ('') in React plugin (#14470)[babel-plugin-jest-hoist] Use denylist instead of the deprecated blacklist for Babel 8 support (#14109)[expect] Check error instance type for toThrow/toThrowError (#14576)[jest-circus] [BREAKING] Prevent false test failures caused by promise rejections handled asynchronously (#14315)[jest-circus, jest-expect, jest-snapshot] Pass test.failing tests when containing failing snapshot matchers (#14313)[jest-config] Make sure to respect runInBand option (#14578)[@jest/expect-utils] Fix comparison of DataView (#14408)[jest-leak-detector] Make leak-detector more aggressive when running GC (#14526)[jest-runtime] Properly handle re-exported native modules in ESM via CJS (#14589)[jest-util] Make sure isInteractive works in a browser (#14552)[pretty-format] [BREAKING] Print ArrayBuffer and DataView correctly (#14290)[jest-cli] When specifying paths on the command line, only match against the relative paths of the test files (#12519)
testPathPattern configuration option to testPathPatterns, which now takes a list of patterns instead of the regex.--testPathPattern is now --testPathPatterns[jest-reporters, jest-runner] Unhandled errors without stack get correctly logged to console (#14619)[*] [BREAKING] Drop support for Node.js versions 14 and 19 (#14460)[*] [BREAKING] Drop support for typescript@4.3, minimum version is now 5.0 (#14542)[*] Depend on exact versions of monorepo dependencies instead of ^ range (#14553)[*] [BREAKING] Add ESM wrapper for all of Jest's modules (#14661)[babel-jest, babel-preset-jest] [BREAKING] Increase peer dependency of @babel/core to ^7.11 (#14109)[jest-cli, jest-config, @jest/types] [BREAKING] Remove deprecated --init argument (#14490)[docs] Fix typos in CHANGELOG.md and packages/jest-validate/README.md (#14640)[docs] Don't use alias matchers in docs (#14631)Full Changelog: https://github.com/jestjs/jest/compare/v29.7.0...v30.0.0-alpha.1
Nothing published for this version
[jest-validate] Allow deprecation warnings for unknown options
[create-jest] Add npm init / yarn create initialiser for Jest projects (#14465)[jest-validate] Allow deprecation warnings for unknown options (#14499)[jest-resolver] Replace unmatched capture groups in moduleNameMapper with empty string instead of undefined (#14507)[jest-snapshot] Allow for strings as well as template literals in inline snapshots (#14465)[@jest/test-sequencer] Calculate test runtime if perStats.duration is missing (#14473)[@jest/create-cache-key-function] Cache access of NODE_ENV and BABEL_ENV (#14455)[jest-cli] Move internal config initialisation logic to the create-jest package (#14465)Full Changelog: https://github.com/jestjs/jest/compare/v29.6.4...v29.7.0
[jest-mock] Revert #13692 as it was a breaking change
[expect, @jest/expect-utils] ObjectContaining support symbol as key (#14414)[expect] Remove @types/node from dependencies (#14385)[jest-core] Use workers in watch mode by default to avoid crashes (#14059 & #14085).[jest-reporters] Update istanbul-lib-instrument dependency to v6. (#14401)[jest-mock] Revert #13692 as it was a breaking change (#14429)[jest-mock] Revert #13866 as it was a breaking change (#14429)[jest-mock] Revert #13867 as it was a breaking change (#14429)[@jest/reporters] Marks Reporter's hooks as optional (#14433)[jest-runtime] Fix dynamic ESM import module bug when loaded module through jest.isolateModulesAsync (#14397)[jest-changed-files, jest-circus, jest-console, @jest/core, @jest/runtime, @jest/transform] Use invariant and notEmpty from jest-util rather than own internal (#14366)Full Changelog: https://github.com/jestjs/jest/compare/v29.6.2...v29.6.3
[expect] Update toThrow() to be able to use error causes
[expect] Update toThrow() to be able to use error causes (#13606)[jest-core] allow to use workerIdleMemoryLimit with only 1 worker or runInBand option (#13846)[jest-message-util] Add support for error causes (#13868 & #13912)[jest-runtime] Revert import assertions for JSON modules as it's been relegated to Stage 2 (#13911)[@jest/expect-utils] subsetEquality should consider also an object's inherited string keys (#13824)[jest-mock] Clear mock state when jest.restoreAllMocks() is called (#13867)[jest-mock] Prevent mockImplementationOnce and mockReturnValueOnce bleeding into withImplementation (#13888)[jest-mock] Do not restore mocks when jest.resetAllMocks() is called (#13866)Full Changelog: https://github.com/facebook/jest/compare/v29.4.2...v29.4.3
[@jest/core] Instrument significant lifecycle events with `performance.mark()`
[@jest/core] Instrument significant lifecycle events with performance.mark() (#13859)[expect, @jest/expect] Provide type of actual as a generic argument to Matchers to allow better-typed extensions (#13848)[jest-circus] Added explicit mention of test failing because done() is not being called in error message (#13847)[jest-runtime] Handle CJS re-exports of node core modules from ESM (#13856)[jest-transform] Downgrade write-file-atomic to v4 (#13853)[jest-worker] Ignore IPC messages not intended for Jest (#13543)[*] make sure to exclude .eslintcache from published module (#13832)[docs] Cleanup incorrect links in CHANGELOG.md (#13857)Full Changelog: https://github.com/facebook/jest/compare/v29.4.1...v29.4.2
[@jest/cli, jest-config] A seed for the test run will be randomly generated, or set by a CLI option
[@jest/cli, jest-config] A seed for the test run will be randomly generated, or set by a CLI option (#13400)[@jest/cli, jest-config] --show-seed will display the seed value in the report, and can be set via a CLI flag or through the config file (#13400)[jest-config] Add readInitialConfig utility function (#13356)[jest-core] Allow testResultsProcessor to be async (#13343)[@jest/environment, jest-environment-node, jest-environment-jsdom, jest-runtime] Add getSeed() to the jest object (#13400)[expect, @jest/expect-utils] Allow isA utility to take a type argument (#13355)[expect] Expose AsyncExpectationResult and SyncExpectationResult types (#13411)[babel-plugin-jest-hoist] Ignore TSTypeQuery when checking for hoisted references (#13367)[jest-core] Fix detectOpenHandles false positives for some special objects such as TLSWRAP (#13414)[jest-mock] Fix mocking of getters and setters on classes (#13398)[jest-reporters] Revert: Transform file paths into hyperlinks (#13399)[@jest/types] Infer type of each table correctly when the table is a tuple or array (#13381)[@jest/types] Rework typings to allow the *ReturnedWith matchers to be called with no argument (#13385)[*] Update @babel/* deps, resulting in slightly different stack traces for each (#13422)[jest-runner] Do not instrument v8 coverage data if coverage should not be collected (#13282)Full Changelog: https://github.com/facebook/jest/compare/v29.1.2...v29.2.0
Blog post: https://jestjs.io/blog/2022/08/25/jest-29
Blog post: https://jestjs.io/blog/2022/08/25/jest-29
[expect] [BREAKING] Differentiate between MatcherContext MatcherUtils and MatcherState types (#13141)[jest-circus] Add support for test.failing.each (#13142)[jest-config] [BREAKING] Make snapshotFormat default to escapeString: false and printBasicPrototype: false (#13036)[jest-config] [BREAKING] Remove undocumented collectCoverageOnlyFrom option (#13156)[jest-environment-jsdom] [BREAKING] Upgrade to jsdom@20 (#13037, #13058)[@jest/globals] Add jest.Mocked, jest.MockedClass, jest.MockedFunction and jest.MockedObject utility types (#12727)[jest-mock] [BREAKING] Refactor Mocked* utility types. MaybeMockedDeep and MaybeMocked became Mocked and MockedShallow respectively; only deep mocked variants of MockedClass, MockedFunction and MockedObject are exported (#13123, #13124)[jest-mock] [BREAKING] Change the default jest.mocked helper’s behavior to deep mocked (#13125)[jest-snapshot] [BREAKING] Let babel find config when updating inline snapshots (#13150)[@jest/test-result, @jest/types] [BREAKING] Replace Bytes and Milliseconds types with number (#13155)[jest-worker] Adds workerIdleMemoryLimit option which is used as a check for worker memory leaks >= Node 16.11.0 and recycles child workers as required (#13056, #13105, #13106, #13107)[pretty-format] [BREAKING] Remove ConvertAnsi plugin in favour of jest-serializer-ansi-escapes (#13040)[pretty-format] Allow to opt out from sorting object keys with compareKeys: null (#12443)[jest-config] Fix testing multiple projects with TypeScript config files (#13099)[@jest/expect-utils] Fix deep equality of ImmutableJS Record (#13055)[jest-haste-map] Increase the maximum possible file size that jest-haste-map can handle (#13094)[jest-runtime] Properly support CJS re-exports from dual packages (#13170)[jest-snapshot] Make prettierPath optional in SnapshotState (#13149)[jest-snapshot] Fix parsing error from inline snapshot files with JSX (#12760)[jest-worker] When a process runs out of memory worker exits correctly and doesn't spin indefinitely (#13054)[*] [BREAKING] Drop support for Node v12 and v17 (#13033)[docs] Fix webpack name (#13049)[docs] Explicit how to set n for --bail (#13128)[docs] Update Enzyme URL (#13166)[jest-leak-detector] Remove support for weak-napi (#13035)[jest-snapshot] [BREAKING] Require rootDir as argument to SnapshotState (#13150)Full Changelog: https://github.com/facebook/jest/compare/v28.1.3...v29.0.0
[jest-worker] Adds workerIdleMemoryLimit option which is used as a check for worker memory leaks >= Node 16.11.0 and recycles child workers as require
[jest-worker] Adds workerIdleMemoryLimit option which is used as a check for worker memory leaks >= Node 16.11.0 and recycles child workers as required. (#13056)[jest-haste-map] Increase the maximum possible file size that jest-haste-map can handle (#13094)Full Changelog: https://github.com/facebook/jest/compare/v29.0.0-alpha.1...v29.0.0-alpha.3
Nothing published for this version
[jest-config] [BREAKING] Make snapshotFormat default to escapeString: false and printBasicPrototype: false
[jest-config] [BREAKING] Make snapshotFormat default to escapeString: false and printBasicPrototype: false (#13036)[jest-environment-jsdom] [BREAKING] Upgrade to jsdom@20 (#13037)[*] [BREAKING] Drop support for Node v12 and v17 (#13033)[jest-leak-detector] Remove support for weak-napi (#13035)Full Changelog: https://github.com/facebook/jest/compare/v28.1.3...v29.0.0-alpha.0
[@jest/reporters] Improve GitHubActionsReporters annotation format
[jest] Expose Config type (#12848)[@jest/reporters] Improve GitHubActionsReporters annotation format (#12826)[@jest/types] Infer argument types passed to test and describe callback functions from each tables (#12885, #12905)[@jest/expect-utils] Fix deep equality of ImmutableJS OrderedMaps (#12763)[jest-docblock] Handle multiline comments in parseWithComments (#12845)[jest-mock] Improve spyOn error messages (#12901)[jest-runtime] Correctly report V8 coverage with resetModules: true (#12912)[jest-worker] Make JestWorkerFarm helper type to include methods of worker module that take more than one argument (#12839)[docs] Updated docs to indicate that jest-environment-jsdom is a separate package #12828
[docs] Document the comments used by coverage providers #12835
[docs] Use docusaurus-remark-plugin-tab-blocks to format tabs with code examples (#12859)
[jest-haste-map] Bump walker version (#12324)
[expect] Adjust typings of lastCalledWith, nthCalledWith, toBeCalledWith matchers to allow a case there a mock was called with no arguments (#12807)
[@jest/expect-utils] Fix deep equality of ImmutableJS Lists (#12763)
[jest-core] Do not collect SIGNREQUEST as open handles (#12789)
Full Changelog: https://github.com/facebook/jest/compare/v28.1.0...v28.1.1
[jest-worker] Add JestWorkerFarm helper type
[jest-config] [BREAKING] Do not normalize long deprecated configuration options preprocessorIgnorePatterns, scriptPreprocessor, setupTestFrameworkScri…
Blog post: https://jestjs.io/blog/2022/04/25/jest-28
[babel-jest] Export createTransformer function (#12399)[expect] Expose AsymmetricMatchers, MatcherFunction and MatcherFunctionWithState interfaces (#12363, #12376)[jest-circus] Support error logging before retry (#12201)[jest-circus, jest-jasmine2] Allowed classes and functions as describe and it/test names (#12484)[jest-cli, jest-config] [BREAKING] Remove testURL config, use testEnvironmentOptions.url instead (#10797)[jest-cli, jest-core] Add --shard parameter for distributed parallel test execution (#12546)[jest-cli] [BREAKING] Remove undocumented --timers option (#12572)[jest-config] [BREAKING] Stop shipping jest-environment-jsdom by default (#12354)[jest-config] [BREAKING] Stop shipping jest-jasmine2 by default (#12355)[jest-config, @jest/types] Add ci to GlobalConfig (#12378)[jest-config] [BREAKING] Rename moduleLoader to runtime (#10817)[jest-config] [BREAKING] Rename extraGlobals to sandboxInjectedGlobals (#10817)[jest-config] [BREAKING] Throw an error instead of showing a warning if multiple configs are used (#12510)[jest-config] [BREAKING] Do not normalize long deprecated configuration options preprocessorIgnorePatterns, scriptPreprocessor, setupTestFrameworkScriptFile and testPathDirs (#12701)[jest-cli, jest-core] Add --ignoreProjects CLI argument to ignore test suites by project name (#12620)[jest-core] Pass project config to globalSetup/globalTeardown function as second argument (#12440)[jest-core] Stabilize test runners with event emitters (#12641)[jest-core, jest-watcher] [BREAKING] Move TestWatcher class to jest-watcher package (#12652)[jest-core] Allow using Summary Reporter as stand-alone reporter (#12687)[jest-environment-jsdom] [BREAKING] Upgrade jsdom to 19.0.0 (#12290)[jest-environment-jsdom] [BREAKING] Add default browser condition to exportConditions for jsdom environment (#11924)[jest-environment-jsdom] [BREAKING] Pass global config to Jest environment constructor for jsdom environment (#12461)[jest-environment-jsdom] [BREAKING] Second argument context to constructor is mandatory (#12469)[jest-environment-node] [BREAKING] Add default node and node-addon conditions to exportConditions for node environment (#11924)[jest-environment-node] [BREAKING] Pass global config to Jest environment constructor for node environment (#12461)[jest-environment-node] [BREAKING] Second argument context to constructor is mandatory (#12469)[jest-environment-node] Add all available globals to test globals, not just explicit ones (#12642, #12696)[@jest/expect] New module which extends expect with jest-snapshot matchers (#12404, #12410, #12418)[@jest/expect-utils] New module exporting utils for expect (#12323)[@jest/fake-timers] [BREAKING] Rename timers configuration option to fakeTimers (#12572)[@jest/fake-timers] [BREAKING] Allow jest.useFakeTimers() and projectConfig.fakeTimers to take an options bag (#12572)[jest-haste-map] [BREAKING] HasteMap.create now returns a promise (#12008)[jest-haste-map] Add support for dependencyExtractor written in ESM (#12008)[jest-mock] [BREAKING] Rename exported utility types ClassLike, FunctionLike, ConstructorLikeKeys, MethodLikeKeys, PropertyLikeKeys; remove exports of utility types ArgumentsOf, ArgsType, ConstructorArgumentsOf - TS builtin utility types ConstructorParameters and Parameters should be used instead (#12435, #12489)[jest-mock] Improve isMockFunction to infer types of passed function (#12442)[jest-mock] [BREAKING] Improve the usage of jest.fn generic type argument (#12489)[jest-mock] Add support for auto-mocking async generator functions (#11080)[jest-mock] Add contexts member to mock functions (#12601)[@jest/reporters] Add GitHub Actions reporter (#11320, #12658)[@jest/reporters] Pass reporterContext to custom reporter constructors as third argument (#12657)[jest-resolve] [BREAKING] Add support for package.json exports (#11961, #12373)[jest-resolve] Support package self-reference (#12682)[jest-resolve, jest-runtime] Add support for data: URI import and mock (#12392)[jest-resolve, jest-runtime] Add support for async resolver (#11540)[jest-resolve] [BREAKING] Remove browser?: boolean from resolver options, conditions: ['browser'] should be used instead (#12707)[jest-resolve] Expose JestResolver, AsyncResolver, SyncResolver, PackageFilter, PathFilter and PackageJSON types (#12707, (#12712)[jest-runner] Allow setupFiles module to export an async function (#12042)[jest-runner] Allow passing testEnvironmentOptions via docblocks (#12470)[jest-runner] Expose CallbackTestRunner, EmittingTestRunner abstract classes and CallbackTestRunnerInterface, EmittingTestRunnerInterface to help typing third party runners (#12646, #12715)[jest-runner] Lock version of source-map-support to 0.5.13 (#12720)[jest-runtime] [BREAKING] Runtime.createHasteMap now returns a promise (#12008)[jest-runtime] Calling jest.resetModules function will clear FS and transform cache (#12531)[jest-runtime] [BREAKING] Remove Context type export, it must be imported from @jest/test-result (#12685)[jest-runtime] Add import.meta.jest (#12698)[@jest/schemas] New module for JSON schemas for Jest's config (#12384)[@jest/source-map] Migrate from source-map to @jridgewell/trace-mapping (#12692)[jest-transform] [BREAKING] Make it required for process() and processAsync() methods to always return structured data (#12638)[jest-test-result] Add duration property to JSON test output (#12518)[jest-watcher] [BREAKING] Make PatternPrompt class to take entityName as third constructor parameter instead of this._entityName (#12591)[jest-worker] [BREAKING] Allow only absolute workerPath (#12343)[jest-worker] [BREAKING] Default to advanced serialization when using child process workers (#10983)[pretty-format] New maxWidth parameter (#12402)[*] Use sha256 instead of md5 as hashing algortihm for compatibility with FIPS systems (#12722)[babel-jest] [BREAKING] Pass rootDir as root in Babel's options (#12689)[expect] Move typings of .not, .rejects and .resolves modifiers outside of Matchers interface (#12346)[expect] Throw useful error if expect.extend is called with invalid matchers (#12488)[expect] Fix iterableEquality ignores other properties (#8359)[expect] Fix print for the closeTo matcher (#12626)[jest-changed-files] Improve changedFilesWithAncestor pattern for Mercurial SCM (#12322)[jest-circus, @jest/types] Disallow undefined value in TestContext type (#12507)[jest-config] Correctly detect CI environment and update snapshots accordingly (#12378)[jest-config] Pass moduleTypes to ts-node to enforce CJS when transpiling (#12397)[jest-config] [BREAKING] Add mjs and cjs to default moduleFileExtensions config (#12578)[jest-config, jest-haste-map] Allow searching for tests in node_modules by exposing retainAllFiles (#11084)[jest-core] [BREAKING] Exit with status 1 if no tests are found with --findRelatedTests flag (#12487)[jest-core] Do not report unref-ed subprocesses as open handles (#12705)[jest-each] %# is not replaced with index of the test case (#12517)[jest-each] Fixes error message with incorrect count of missing arguments (#12464)[jest-environment-jsdom] Make jsdom accessible to extending environments again (#12232)[jest-environment-jsdom] Log JSDOM errors more cleanly (#12386)[jest-environment-node] Add MessageChannel, MessageEvent to globals (#12553)[jest-environment-node] Add structuredClone to globals (#12631)[@jest/expect-utils] [BREAKING] Fix false positives when looking for undefined prop (#8923)[jest-haste-map] Don't use partial results if file crawl errors (#12420)[jest-haste-map] Make watchman existence check lazy+async (#12675)[jest-jasmine2, jest-types] [BREAKING] Move all jasmine specific types from @jest/types to its own package (#12125)[jest-jasmine2] Do not set duration to 0 for skipped tests (#12518)[jest-matcher-utils] Pass maxWidth to pretty-format to avoid printing every element in arrays by default (#12402)[jest-mock] Fix function overloads for spyOn to allow more correct type inference in complex object (#12442)[jest-mock] Handle overridden Function.name property (#12674)[@jest/reporters] Notifications generated by the --notify flag are no longer persistent in GNOME Shell. (#11733)[@jest/reporters] Move missing icon file which is needed for NotifyReporter class. (#12593)[@jest/reporters] Update v8-to-istanbul (#12697)[jest-resolver] Call custom resolver with core node.js modules (#12654)[jest-runner] Correctly resolve source-map-support (#12706)[jest-worker] Fix Farm execution results memory leak (#12497)[*] [BREAKING] Drop support for Node v10 and v15 and target first LTS 16.13.0 (#12220)[*] [BREAKING] Drop support for typescript@3.8, minimum version is now 4.3 (#11142, #12648)[*] Bundle all .d.ts files into a single index.d.ts per module (#12345)[*] Use globalThis instead of global (#12447)[babel-jest] [BREAKING] Only export createTransformer (#12407)[docs] Add note about not mixing done() with Promises (#11077)[docs, examples] Update React examples to match with the new React guidelines for code examples (#12217)[docs] Add clarity for module factory hoisting limitations (#12453)[docs] Add more information about how code transformers work (#12407)[docs] Add upgrading guide (#12633)[expect] [BREAKING] Remove support for importing build/utils (#12323)[expect] [BREAKING] Migrate to ESM (#12344)[expect] [BREAKING] Snapshot matcher types are moved to @jest/expect (#12404)[jest-cli] Update yargs to v17 (#12357)[jest-config] [BREAKING] Remove getTestEnvironment export (#12353)[jest-config] [BREAKING] Rename config option name to id (#11981)[jest-create-cache-key-function] Added README.md file with basic usage instructions (#12492)[@jest/core] Use index.ts instead of jest.ts as main export (#12329)[jest-environment-jsdom] [BREAKING] Migrate to ESM (#12340)[jest-environment-node] [BREAKING] Migrate to ESM (#12340)[jest-haste-map] Remove legacy isRegExpSupported (#12676)[@jest/fake-timers] Update @sinonjs/fake_timers to v9 (#12357)[jest-jasmine2, jest-runtime] [BREAKING] Use Symbol to pass jest.setTimeout value instead of jasmine specific logic (#12124)[jest-phabricator] [BREAKING] Migrate to ESM (#12341)[jest-resolve] [BREAKING] Make requireResolveFunction argument mandatory (#12353)[jest-runner] [BREAKING] Remove some type exports from @jest/test-result (#12353)[jest-runner] [BREAKING] Second argument to constructor (Context) is not optional (#12640)[jest-serializer] [BREAKING] Deprecate package in favour of using v8 APIs directly (#12391)[jest-snapshot] [BREAKING] Migrate to ESM (#12342)[jest-transform] Update write-file-atomic to v4 (#12357)[jest-types] [BREAKING] Remove Config.Glob and Config.Path (#12406)[jest] Use index.ts instead of jest.ts as main export (#12329)[jest-haste-map] [BREAKING] Default to node crawler over shelling out to find if watchman is not enabled (#12320)Full Changelog: https://github.com/facebook/jest/compare/v27.5.1...v28.0.0
[jest-config] [BREAKING] Throw an error instead of showing a warning if multiple configs are used
[jest-config] [BREAKING] Throw an error instead of showing a warning if multiple configs are used (#12510)[jest-mock] [BREAKING] Rename exported utility types ClassLike, FunctionLike, ConstructorLikeKeys, MethodLikeKeys, PropertyLikeKeys; remove exports of utility types ArgumentsOf, ArgsType, ConstructorArgumentsOf - TS builtin utility types ConstructorParameters and Parameters should be used instead (#12435, #12489)[jest-mock] [BREAKING] Improve the usage of jest.fn generic type argument (#12489)[jest-runner] Allow setupFiles module to export an async function (#12042)[jest-circus, @jest/types] Disallow undefined value in TestContext type (#12507)[jest-each] %# is not replaced with index of the test case (#12517)[jest-reporters] Notifications generated by the --notify flag are no longer persistent in GNOME Shell. (#11733)[jest-worker] Fix Farm execution results memory leak (#12497)[jest-create-cache-key-function] Added README.md file with basic usage instructions (#12492)Full Changelog: https://github.com/facebook/jest/compare/v28.0.0-alpha.5...v28.0.0-alpha.6
[jest-resolve] Support directory remapping in package.json exports
[jest-resolve] Support directory remapping in package.json exports (#12373)Full Changelog: https://github.com/facebook/jest/compare/v28.0.0-alpha.2..v28.0.0-alpha.3
[jest-config] [BREAKING] Stop shipping jest-environment-jsdom by default
[jest-config] [BREAKING] Stop shipping jest-environment-jsdom by default (#12354)[jest-config] [BREAKING] Stop shipping jest-jasmine2 by default (#12355)[jest-environment-jsdom] [BREAKING] Upgrade jsdom to 19.0.0 (#12290)[jest-environment-jsdom] [BREAKING] Add default browser condition to exportConditions for jsdom environment (#11924)[jest-environment-node] [BREAKING] Add default node and node-addon conditions to exportConditions for node environment (#11924)[@jest/expect-utils] New module exporting utils for expect (#12323)[jest-resolve] [BREAKING] Add support for package.json exports (#11961)[jest-worker] [BREAKING] Allow only absolute workerPath (#12343)[expect] Move typings of .not, .rejects and .resolves modifiers outside of Matchers interface (#12346)[jest-environment-jsdom] Make jsdom accessible to extending environments again (#12232)[jest-jasmine2, jest-types] [BREAKING] Move all jasmine specific types from @jest/types to its own package (#12125)[*] [BREAKING] Drop support for Node v10 and v15 and target first LTS 16.13.0 (#12220)[*] [BREAKING] Drop support for typescript@3.8, minimum version is now 4.2 (#11142)[*] Bundle all .d.ts files into a single index.d.ts per module (#12345)[expect] [BREAKING] Remove support for importing build/utils (#12323)[expect] [BREAKING] Migrate to ESM (#12344)[jest-cli] Update yargs to v17 (#12357)[jest-config] [BREAKING] Remove getTestEnvironment export (#12353)[@jest/core] Use index.ts instead of jest.ts as main export (#12329)[jest-environment-jsdom] [BREAKING] Migrate to ESM (#12340)[jest-environment-node] [BREAKING] Migrate to ESM (#12340)[@jest/fake-timers] Update @sinonjs/fake_timers to v9 (#12357)[jest-jasmine2, jest-runtime] [BREAKING] Use Symbol to pass jest.setTimeout value instead of jasmine specific logic (#12124)[jest-phabricator] [BREAKING] Migrate to ESM (#12341)[jest-resolve] [BREAKING] Make requireResolveFunction argument mandatory (#12353)[jest-runner] [BREAKING] Remove some type exports from @jest/test-result (#12353)[jest-snapshot] [BREAKING] Migrate to ESM (#12342)[jest-transform] Update write-file-atomic to v4 (#12357)[jest] Use index.ts instead of jest.ts as main export (#12329)[jest-haste-map] [BREAKING] Default to node crawler over shelling out to find if watchman is not enabled (#12320)Full Changelog: https://github.com/facebook/jest/compare/v27.5.1...v28.0.0-alpha.0
[jest-config] Support comments in JSON config file
[jest-config] Support comments in JSON config file (#12316)[pretty-format] Expose ConvertAnsi plugin (#12308)[expect] Add type definitions for asymmetric closeTo matcher (#12304)[jest-cli] Load binary via exported API (#12315)[jest-config] Replace jsonlint with parse-json (#12316)[jest-repl] Make module importable (#12311 & #12315)[*] Avoid anonymous default exports (#12313)Full Changelog: https://github.com/facebook/jest/compare/v27.5.0...v27.5.1
[expect] Add asymmetric matcher expect.closeTo
[expect] Add asymmetric matcher expect.closeTo (#12243)[jest-mock] Added mockFn.mock.lastCall to retrieve last argument (#12285)[expect] Add a fix for .toHaveProperty('') (#12251)[jest-each, @jest/globals] Allow passing ReadonlyArray type of a table to describe.each and test.each (#12297)[@jest/globals] Add missing options argument to jest.doMock typing (#12292)[jest-environment-node] Add atob and btoa (#12269)[jest-matcher-utils] Correct diff for expected asymmetric matchers (#12264)[jest-message-util] Fix .getTopFrame() (and toMatchInlineSnapshot()) with mjs files (#12277)[*] Update graceful-fs to ^4.2.9 (#11749)[jest-resolve] perf: skip error creation on not found stat calls (#11749)Full Changelog: https://github.com/facebook/jest/compare/v27.4.7...v27.5.0
[expect] Enhancing the toHaveProperty matcher to support array selection
[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)[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)Full Changelog: https://github.com/facebook/jest/compare/v27.3.1...v27.4.0
[*] Publish all modules to include the build change in #11569
[*] Publish all modules to include the build change in #11569[jest-environment-jsdom] Bump version of JSDOM to avoid deprecated request package
[jest-environment-jsdom] Bump version of JSDOM to avoid deprecated request package (#11442)Nothing published for this version
Nothing published for this version
[jest-runtime] [BREAKING] Remove long-deprecated require.requireActual and require.requireMock methods
[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)[*] [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)Nothing published for this version
[babel-jest] Support passing supportsDynamicImport and supportsStaticESM
[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)[*] 25.2.5 was published without changes from 25.2.4 - 25.2.6 includes all changes from that version.
[*] 25.2.5 was published without changes from 25.2.4 - 25.2.6 includes all changes from that version.[*] Verify all packages are properly downleveled for older versions of TypeScript
[*] Verify all packages are properly downleveled for older versions of TypeScript (#9715)Nothing published for this version
Nothing published for this version
[jest-config] Support ESM config files with .js extension (#9573).
[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)[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)Nothing published for this version
[jest-util] [BREAKING] Remove deprecated exports
[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 (#8900)[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 console.group calls to NullConsole (#9024)[jest-core] Don't include unref'd timers in --detectOpenHandles results (#8941)[jest-core] Limit number of workers when creating haste maps in projects (#9259)[jest-diff] Do not inverse format if line consists of one change (#8903)[jest-diff] Rename some new options and change their default values (#9077)[jest-environment-node] Fix TextEncoder.encode not referencing same global Uint8Array constructor (#9261)[jest-fake-timers] getTimerCount will not include cancelled immediates (#8764)[jest-fake-timers] Support util.promisify on setTimeout (#9180)[jest-jasmine2, jest-circus] Improve error message format for Node's assert.fail (#9262)[jest-leak-detector] [BREAKING] Use weak-napi instead of weak package (#8686)[jest-mock] Fix for mockReturnValue overriding mockImplementationOnce (#8398)[jest-reporters] Make node-notifier an optional dependency (#8918)[jest-reporters] Make all arguments to methods on BaseReporter optional (#9159)[jest-resolve]: Set MODULE_NOT_FOUND as error code when module is not resolved from paths (#8487)[jest-resolve-dependencies] Handle dynamic dependencies correctly even when using module maps (#9303)[jest-snapshot] Remove only the added newlines in multiline snapshots (#8859)[jest-snapshot] Distinguish empty string from external snapshot not written (#8880)[jest-snapshot] [BREAKING] Distinguish empty string from internal snapshot not written (#8898)[jest-snapshot] [BREAKING] Remove report method and throw matcher errors (#9049)[jest-snapshot] Omit irrelevant received properties when property matchers fail (#9198)[jest-transform] Properly cache transformed files across tests (#8890)[jest-transform] Don't fail the test suite when a generated source map is invalid (#9058)[jest-types] [BREAKING] Use less null | undefined in config types (#9200)[jest-util] Allow querying process.domain (#9136)[pretty-format] Correctly detect memoized elements (#9196)[pretty-format] Fix pretty-format to respect displayName on forwardRef (#9422)[*] [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)Nothing published for this version
[expect] Highlight substring differences when matcher fails, part 1
[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)[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-cli] Fix prototype pollution vulnerability in dependency
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)[*]: Setup building, linting and testing of TypeScript (#7808, #7855, #7951)[@jest/console]: Extract custom console implementations from jest-util into a new separate package (#8030)[@jest/core] Create new package, which is jest-cli minus yargs and prompts (#7696)[@jest/core]: Migrate to TypeScript (#7998)[@jest/fake-timers]: Extract FakeTimers class from jest-util into a new separate package (#7987)[@jest/reporter]: New package extracted from jest-cli (#7902)[@jest/reporters]: Migrate to TypeScript (#7994, #8045)[@jest/source-map]: Extract getCallsite function from jest-util into a new separate package (#8029)[@jest/test-result]: Extract TestResult types and helpers into a new separate package (#8034)[@jest/transform]: Migrate to TypeScript (#7918, #7945)[@jest/transform]: New package extracted from jest-runtime (#7915)[@jest/types]: New package to handle shared types (#7834)[babel-jest]: Migrate to TypeScript (#7862)[babel-plugin-jest-hoist]: Migrate to TypeScript (#7898)[diff-sequences]: Migrate to Typescript (#7820)[docs] Add missing import to docs (#7928)[docs] Update automock configuration, add note related to manual mocks (#8051)[docs] Update/Organize TestSequencer and testSchedulerHelper code comments(#7984)[docs]: Fix image paths in SnapshotTesting.md for current and version 24 (#7872)[docs]: Improve runAllTimers doc (it exhausts the micro-task queue) (#8031)[docs]: Update CONTRIBUTING.md to add information about running jest with jest-circus locally (#8013).[expect]: Migrate to TypeScript (#7919, #8028)[jest-changed-files]: Migrate to TypeScript (#7827)[jest-circus]: Migrate to TypeScript (#7916)[jest-cli]: Migrate to TypeScript (#8024)[jest-diff]: Migrate to TypeScript (#7824, #8027)[jest-docblock]: Migrate to TypeScript (#7836)[jest-each]: Migrate to Typescript (#8007)[jest-each]: Refactor into multiple files with better types (#8018)[jest-environment-jsdom]: Migrate to TypeScript (#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)Nothing published for this version
Nothing published for this version
[jest-config] [BREAKING] Deprecate setupTestFrameworkScriptFile in favor of new setupFilesAfterEnv
[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]https://github.com/facebook/jest/pull/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)[*] [BREAKING] Require Node.js 6+ for all packages (#7258)[jest-util] [BREAKING] Remove long-deprecated globals for fake timers (#7285)[*] [BREAKING] Upgrade to Micromatch 3 (#6650)[*] [BREAKING] Remove regenerator-runtime injection (#7595)[jest-worker] Disable worker_threads to avoid issues with libraries to ready for it (#7681)[docs] Fix message property in custom matcher example to return a function instead of a constant. (#7426)[jest-circus] Standardize file naming in jest-circus (#7301)[docs] Add synchronous test.each setup (#7150)[docs] Add this.extend to the Custom Matchers API reference (#7130)[docs] Fix default value for coverageReporters value in configuration docs (#7126)[docs] Add link for jest-extended in expect docs (#7078)[jest-util] Add ErrorWithStack class (#7067)[docs] Document --runTestsByPath CLI parameter (#7046)[docs] Fix babel-core installation instructions (#6745)[docs] Explain how to rewrite assertions to avoid large irrelevant diff (#6971)[examples] add example using Babel 7 (#6983)[docs] Replace shallow equality with referential identity in ExpectAPI.md (#6991)[jest-changed-files] Refactor to use execa over child_process (#6987)[*] Bump dated dependencies (#6978)[scripts] Don’t make empty sub-folders for ignored files in build folder (#7001)[docs] Add missing export statement in puppeteer_environment.js under docs/Puppeteer.md (#7127)[docs] Removed useless expect.assertions in TestingAsyncCode.md (#7131)[docs] Remove references to @providesModule which isn't supported anymore (#7147)[docs] Update setupFiles documentation for clarity (#7187)[docs] Change require.require* to jest.require* (#7210)[jest-circus] Add readme.md (#7198)[jest-editor-support] Remove from the repository (#7232)[jest-test-typescript-parser] Remove from the repository (#7232)[tests] Free tests from the dependency on value of FORCE_COLOR (#6585)[*] Add babel plugin to make sure Jest is unaffected by fake Promise implementations (#7225)[docs] Add correct default value for testUrl config option (#7277)[docs] Remove duplicate code in MockFunctions (#7297)[*] Add check for Facebook copyright headers on CI (#7370)[*] Update Facebook copyright headers (#7589)[jest-haste-map] Refactor dependencyExtractor and tests (#7385)[docs] Clearify conditional setting of NODE_ENV (#7369)[docs] Clarify conditional setting of NODE_ENV (#7369)[*] Standardize file names (#7316, #7266, #7238, #7314, #7467, #7464), #7471)[docs] Add testPathIgnorePatterns in CLI documentation (#7440)[docs] Removed misleading text about describe() grouping together tests into a test suite (#7434)[diff-sequences] Add performance benchmark to package (#7603)[*] Replace as many Object.assign with object spread as possible (#7627)[ci] Initial support for Azure Pipelines (#7556)[jest-mock] Improve getType function performance. (#7159)Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →