NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #164 most downloaded on npm
This package contains shared types of Jest's packages.
Last release 1 months ago
01 Sep 2026
Release timing varies
gaps range from 8 days to 6 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
8 years old
111 releases · first in 2019
[jest-util] Name the testEnvironmentOptions.globalsCleanup option and link the docs from the JEST-01 deprecation warning, and document the option's mo…
[jest-config] Don't warn about global-only options in the config that supplies the global config - the root config a project resolves to, or the first entry of --projects when no root config is passed (#16411)[jest-config, jest-types] Stop accepting reporters, coverageReporters, workerIdleMemoryLimit, cwd and runnerOptions in a project config - they were silently ignored, and now warn like the other global-only options (#16411)[jest-config, jest-validate] Warn about maxWorkers and coverageThreshold in a project config instead of dropping them without a word (#16411)[jest-resolve] Match moduleNameMapper patterns against the specifier as written again (reverting #16390) (#16417)[jest-runtime] Resolve package imports specifiers like #dep under ESM again (#16413)[jest-util] Name the testEnvironmentOptions.globalsCleanup option and link the docs from the JEST-01 deprecation warning, and document the option's modes (#16404)Full Changelog: v30.5.0...v30.5.1
One column per quarter.
[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
[jest-config, jest-core, jest-runner, jest-schemas, jest-types] Allow custom runner configuration options via tuple format ['runner-path', {options}]
[jest-config, jest-core, jest-runner, jest-schemas, jest-types] Allow custom runner configuration options via tuple format ['runner-path', {options}] (#16141)[jest-runtime] Align CJS-from-ESM default export with Node: module.exports is always the ESM default, __esModule unwrapping is no longer applied (#16143)Full Changelog: v30.4.0...v30.4.1
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
[jest-config] Add defineConfig and mergeConfig helpers for type-safe Jest config
[jest-config] Add defineConfig and mergeConfig helpers for type-safe Jest config (#15844)[jest-fake-timers] Add setTimerTickMode to configure how timers advance[*] Reduce token usage when run through LLMs (3f17932)[jest-config] Keep CLI coverage output when using --json with --outputFile (#15918)[jest-mock] Use Symbol from test environment (#15858)[jest-reporters] Fix issue where console output not displayed for GHA reporter even with silent: false option (#15864)[jest-runtime] Fix issue where user cannot utilize dynamic import despite specifying --experimental-vm-modules Node option (#15842)[jest-test-sequencer] Fix issue where failed tests due to compilation errors not getting re-executed even with --onlyFailures CLI option (#15851)[jest-util] Make sure process.features.require_module is false (#15867)[*] Update example repo for testing React Native projects
[jest-config] Allow testMatch to take a string value
[jest-config] Allow testMatch to take a string value[jest-worker] Let workerIdleMemoryLimit accept 0 to always restart worker child processes[expect] Fix bigint error (#15702)[*] 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
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
[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
[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
[jest-circus] Revert #14110 as it was a breaking change
[*] Update semver dependency to get vulnerability fix
[jest-circus, jest-snapshot] Add support for snapshot matchers in concurrent tests (#14139)[jest-cli] Include type definitions to generated config files (#14078)[jest-snapshot] Support arrays as property matchers (#14025)[jest-core, jest-circus, jest-reporter, jest-runner] Added support for reporting about start individual test cases using jest-circus (#14174)[jest-circus] Prevent false test failures caused by promise rejections handled asynchronously (#14110)[jest-config] Handle frozen config object (#14054)[jest-config] Allow coverageDirectory and collectCoverageFrom in project config (#14180)[jest-core] Always use workers in watch mode to avoid crashes (#14059).[jest-environment-jsdom, jest-environment-node] Fix assignment of customExportConditions via testEnvironmentOptions when custom env subclass defines a default value (#13989)[jest-matcher-utils] Fix copying value of inherited getters (#14007)[jest-mock] Tweak typings to allow jest.replaceProperty() replace methods (#14008)[jest-mock] Improve user input validation and error messages of spyOn and replaceProperty methods (#14087)[jest-runtime] Bind jest.isolateModulesAsync to this (#14083)[jest-runtime] Forward wrapperLength to the Script constructor as columnOffset for accurate debugging (#14148)[jest-runtime] Guard _isMockFunction access with in (#14188)[jest-snapshot] Fix a potential bug when not using prettier and improve performance (#14036)[@jest/transform] Do not instrument .json modules (#14048)[jest-worker] Restart a shut down worker before sending it a task (#14015)[*] Update semver dependency to get vulnerability fix (#14262)[docs] Updated documentation for the --runTestsByPath CLI command (#14004)[docs] Updated documentation regarding the synchronous fallback when asynchronous code transforms are unavailable (#14056)[docs] Update jest statistics of use and downloads in website Index.Full Changelog: https://github.com/jestjs/jest/compare/v29.5.0...v29.6.0
[jest-changed-files] Support Sapling
[jest-changed-files] Support Sapling (#13941)[jest-circus, @jest/cli, jest-config] Add feature to randomize order of tests via CLI flag or through the config file(#12922)[jest-cli, jest-config, @jest/core, jest-haste-map, @jest/reporters, jest-runner, jest-runtime, @jest/types] Add workerThreads configuration option to allow using worker threads for parallelization (#13939)[jest-cli] Export yargsOptions (#13970)[jest-config] Add openHandlesTimeout option to configure possible open handles warning. (#13875)[@jest/create-cache-key-function] Allow passing length argument to createCacheKey() function and set its default value to 16 on Windows (#13827)[jest-message-util] Add support for AggregateError (#13946 & #13947)[jest-message-util] Add support for Error causes in test and it (#13935 & #13966)[jest-reporters] Add summaryThreshold option to summary reporter to allow overriding the internal threshold that is used to print the summary of all failed tests when the number of test suites surpasses it (#13895)[jest-runtime] Expose @sinonjs/fake-timers async APIs functions advanceTimersByTimeAsync(msToRun) (tickAsync(msToRun)), advanceTimersToNextTimerAsync(steps) (nextAsync), runAllTimersAsync (runAllAsync), and runOnlyPendingTimersAsync (runToLastAsync) (#13981)[jest-runtime, @jest/transform] Allow V8 coverage provider to collect coverage from files which were not loaded explicitly (#13974)[jest-snapshot] Add support to cts and mts TypeScript files to inline snapshots (#13975)[jest-worker] Add start method to worker farms (#13937)[jest-worker] Support passing a URL as path to worker (#13982)[babel-plugin-jest-hoist] Fix unwanted hoisting of nested jest usages (#13952)[jest-circus] Send test case results for todo tests (#13915)[jest-circus] Update message printed on test timeout (#13830)[jest-circus] Avoid creating the word "testfalse" when takesDoneCallback is false in the message printed on test timeout AND updated timeouts test (#13954)[jest-environment-jsdom] Stop setting document to null on teardown (#13972)[@jest/expect-utils] Update toStrictEqual() to be able to check jest.fn().mock.calls (#13960)[@jest/test-result] Allow TestResultsProcessor type to return a Promise (#13950)[jest-snapshot] Remove dependency on jest-haste-map (#13977)Full Changelog: https://github.com/facebook/jest/compare/v29.4.3...v29.5.0
[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
[expect, jest-circus, @jest/types] Implement numPassingAsserts of testResults to track the number of passing asserts in a test
[expect, jest-circus, @jest/types] Implement numPassingAsserts of testResults to track the number of passing asserts in a test (#13795)[jest-core] Add newlines to JSON output (#13817)[@jest/reporters] Automatic log folding in GitHub Actions Reporter (#13626)[@jest/expect-utils] toMatchObject diffs should include Symbol properties (#13810)[jest-runtime] Handle missing replaceProperty (#13823)[@jest/types] Add partial support for done callbacks in typings of each (#13756)Full Changelog: https://github.com/facebook/jest/compare/v29.4.0...v29.4.1
[expect, @jest/expect-utils] Support custom equality testers
[expect, @jest/expect-utils] Support custom equality testers (#13654)[jest-config, jest-worker] Use os.availableParallelism if available to calculate number of workers to spawn (#13738)[@jest/globals, jest-mock] Add jest.replaceProperty() that replaces property value (#13496)[jest-haste-map] ignore Sapling vcs directories (.sl/) (#13674)[jest-resolve] Support subpath imports (#13705, #13723, #13777)[jest-runtime] Add jest.isolateModulesAsync for scoped module initialization of asynchronous functions (#13680)[jest-runtime] Add jest.isEnvironmentTornDown function (#13741)[jest-test-result] Added skipped and focused status to FormattedTestResult (#13700)[jest-transform] Support for asynchronous createTransformer (#13762)[jest-environment-node] Fix non-configurable globals (#13687)[@jest/expect-utils] toMatchObject should handle Symbol properties (#13639)[jest-mock] Fix mockReset and resetAllMocks undefined return value(#13692)[jest-resolve] Add global paths to require.resolve.paths (#13633)[jest-resolve] Correct node core module detection when using node: specifiers (#13806)[jest-runtime] Support WASM files that import JS resources (#13608)[jest-runtime] Use the scriptTransformer cache in jest-runner (#13735)[jest-runtime] Enforce import assertions when importing JSON in ESM (#12755 & #13805)[jest-snapshot] Make sure to import babel outside of the sandbox (#13694)[jest-transform] Ensure the correct configuration is passed to preprocessors specified multiple times in the transform option (#13770)[@jest/fake-timers] Update @sinonjs/fake-timers (#13612)[docs] Improve custom puppeteer example to prevent worker warnings (#13619)Full Changelog: https://github.com/facebook/jest/compare/v29.3.1...v29.4.0
[jest-config] Do not warn about preset in ProjectConfig
[@jest/globals, jest-mock] Add jest.Spied* utility types
[@jest/globals, jest-mock] Add jest.Spied* utility types (#13440)[jest-environment-node] make globalThis.performance writable for Node 19 and fake timers (#13467)[jest-mock] Revert #13398 to restore mocking of setters (#13472)[*] Use sha1 instead of sha256 for hashing (#13421)Full Changelog: https://github.com/facebook/jest/compare/v29.2.0...v29.2.1
[@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
[expect, @jest/expect] Revert buggy inference of argument types for *CalledWith and *ReturnedWith matchers introduced in 29.1.0
[expect, @jest/expect] Revert buggy inference of argument types for *CalledWith and *ReturnedWith matchers introduced in 29.1.0 (#13339)[jest-worker] Add missing dependency on jest-util (#13341)Full Changelog: https://github.com/facebook/jest/compare/v29.1.1...v29.1.2
[expect, @jest/expect] support type inference for function parameters in CalledWith assertions
[expect, @jest/expect] support type inference for function parameters in CalledWith assertions (#13268)[expect, @jest/expect] Infer type of *ReturnedWith matchers argument (#13278)[@jest/environment, jest-runtime] Allow jest.requireActual and jest.requireMock to take a type argument (#13253)[@jest/environment] Allow jest.mock and jest.doMock to take a type argument (#13254)[@jest/fake-timers] Add jest.now() to return the current fake clock time (#13244, #13246)[@jest/mock] Add withImplementation method for temporarily overriding a mock (#13281)[expect] Export toThrow* matchers (#13328)[jest-circus, jest-jasmine2] Fix error messages for Node's assert.throes (#13322)[jest-haste-map] Remove __proto__ usage (#13256)[jest-mock] Improve spyOn typings to handle optional properties (#13247)[jest-mock] Fix mocking of getters and setters on classes (#13145)[jest-snapshot] Throw useful error when an array is passed as property matchers (#13263)[jest-snapshot] Prioritize parser used in the project (#13323)[jest-transform] Attempt to work around issues with atomic writes on Windows (#11423)Full Changelog: https://github.com/facebook/jest/compare/v29.0.3...v29.1.0
[@jest/environment, jest-runtime] Allow passing a generic type argument to jest.createMockFromModule () method
[@jest/environment, jest-runtime] Allow passing a generic type argument to jest.createMockFromModule<T>() method (#13202)[expect] Expose ExpectationResult type (#13240)[jest-snapshot] Expose Context type (#13240)[@jest/globals] Add jest.Mock type helper (#13235)[jest-core] Capture execError during TestScheduler.scheduleTests and dispatch to reporters (#13203)[jest-resolve] Make sure to resolve module paths after looking at exports (#13242)[jest-resolve] Improve error on module not found deep in the require stack (#8704)[jest-snapshot] Fix typings of snapshot matchers (#13240)[*] Fix inconsistent workspace prefixes (#13217)[jest-haste-map] Expose a minimal public API to TypeScript (#13023)Full Changelog: https://github.com/facebook/jest/compare/v29.0.2...v29.0.3
[jest-transform] Expose TransformFactory type
[jest-transform] Expose TransformFactory type (#13184)[babel-plugin-jest-hoist] Support imported jest in mock factory (#13188)[jest-mock] Align the behavior and return type of generateFromMetadata method (#13207)[jest-runtime] Support jest.resetModules() with ESM (#13211)Full Changelog: https://github.com/facebook/jest/compare/v29.0.1...v29.0.2
[jest-snapshot] Pass snapshotFormat through when diffing snapshots
[jest-snapshot] Pass snapshotFormat through when diffing snapshots (#13181)Full Changelog: https://github.com/facebook/jest/compare/v29.0.0...v29.0.1
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
chore: update @jridgewell/trace-mapping by @SimenB in https://github.com/facebook/jest/pull/13119
Mocked* utility types by @mrazauskas in https://github.com/facebook/jest/pull/13123MockedShallow type by @mrazauskas in https://github.com/facebook/jest/pull/13124jest.Mocked, jest.MockedClass, jest.MockedFunction and jest.MockedObject utility types by @mrazauskas in https://github.com/facebook/jest/pull/12727jest.mocked helper’s behaviour to deep mocked by @mrazauskas in https://github.com/facebook/jest/pull/13125SnapshotState by @SimenB in https://github.com/facebook/jest/pull/13149babel find config when updating inline snapshots by @SimenB in https://github.com/facebook/jest/pull/13150Full Changelog: https://github.com/facebook/jest/compare/v29.0.0-alpha.5...v29.0.0-alpha.6
fix: repair caching of typescript compiler instances by @Zebreus in https://github.com/facebook/jest/pull/13099
Full Changelog: https://github.com/facebook/jest/compare/v29.0.0-alpha.3...v29.0.0-alpha.4
[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-leak-detector] Use native FinalizationRegistry when it exists to get rid of external C dependency
[jest-leak-detector] Use native FinalizationRegistry when it exists to get rid of external C dependency (#12973)[jest-changed-files] Fix a lock-up after repeated invocations (#12757)[@jest/expect-utils] Fix deep equality of ImmutableJS OrderedSets (#12977)[jest-mock] Add index signature support for spyOn types (#13013, #13020)[jest-snapshot] Fix indentation of awaited inline snapshots (#12986)[*] Replace internal usage of pretty-format/ConvertAnsi with jest-serializer-ansi-escapes (#12935, #13004)[docs] Update spyOn docs (#13000)Full Changelog: https://github.com/facebook/jest/compare/v28.1.2...v28.1.3
[@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-circus] Add failing test modifier that inverts the behaviour of tests
[jest-circus] Add failing test modifier that inverts the behaviour of tests (#12610)[jest-environment-node, jest-environment-jsdom] Allow specifying customExportConditions (#12774)[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)[docs] Specified documentation about --filter CLI docs (#12799)[@jest-reporters] Move helper functions from utils.ts into separate files (#12782)[jest-resolve] Replace process.versions.pnp type declaration with @types/pnpapi devDependency (#12783)Full Changelog: https://github.com/facebook/jest/compare/v28.0.3...v28.1.0
[jest-worker] Add JestWorkerFarm helper type
[jest-serializer] Remove deprecated module from source tree
[jest-resolve] Expose ResolverOptions type (#12736)[expect] Add missing dependency jest-util (#12744)[jest-circus] Improve test.concurrent (#12748)[jest-resolve] Correctly throw an error if jsdom test environment is used, but not installed (#12749)[jest-serializer] Remove deprecated module from source tree (#12735)Full Changelog: https://github.com/facebook/jest/compare/v28.0.0...v28.0.1
[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-core] Stabilize test runners with event emitters
[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-node] Add all available globals to test globals, not just explicit ones (#12642)[@jest/reporters] Add GitHub Actions reporter (#12658)[@jest/reporters] Pass reporterContext to custom reporter constructors as third argument (#12657)[jest-resolve] Support package self-reference (#12682)[jest-runner] Exposing CallbackTestRunner, EmittingTestRunner abstract classes to help typing third party runners (#12646)[jest-runtime] [BREAKING] Remove Context type export, it must be imported from @jest/test-result (#12685)[jest-transform] [BREAKING] Make it required for process() and processAsync() methods to always return structured data (#12638)[expect] Fix print for the closeTo matcher (#12626)[jest-each] Fixes error message with incorrect count of missing arguments (#12464)[jest-haste-map] Make watchman existence check lazy+async (#12675)[jest-mock] Handle overridden Function.name property (#12674)[jest-resolver] Call custom resolver with core node.js modules (#12654)[*] [BREAKING] Drop support for typescript@4.2, minimum version is now 4.3 (#12648)[docs] Add upgrading guide (#12633)[jest-config] [BREAKING] Rename config option name to id (#11981)[jest-haste-map] Remove legacy isRegExpSupported (#12676)[jest-runner] [BREAKING] Second argument to constructor (Context) is not optional (#12640)Full Changelog: https://github.com/facebook/jest/compare/v28.0.0-alpha.8...v28.0.0-alpha.9
[jest-cli] [BREAKING] Remove undocumented --timers option
[jest-cli] [BREAKING] Remove undocumented --timers option (#12572)[jest-cli, jest-core] Add --ignoreProjects CLI argument to ignore test suites by project name (#12620)[@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-mock] Add contexts member to mock functions (#12601)[jest-reporters] Add GitHub Actions reporter (#11320)[jest-watcher] [BREAKING] Make PatternPrompt class to take entityName as third constructor parameter instead of this._entityName (#12591)[jest-config] [BREAKING] Add mjs and cjs to default moduleFileExtensions config (#12578)[jest-environment-node] Add MessageChannel, MessageEvent to globals (#12553)[jest-environment-node] Add structuredClone to globals (#12631)[@jest/reporters] Move missing icon file which is needed for NotifyReporter class. (#12593)[babel-jest] [BREAKING] Only export createTransformer (#12407)[docs] Add more information about how code transformers work (#12407)Full Changelog: https://github.com/facebook/jest/compare/v28.0.0-alpha.7...v28.0.0-alpha.8
[jest-cli, jest-core] Add --shard parameter for distributed parallel test execution
[jest-cli, jest-core] Add --shard parameter for distributed parallel test execution (#12546)[jest-runtime] Calling jest.resetModules function will clear FS and transform cache (#12531)[jest-test-result] Add duration property to JSON test output (#12518)[jest-jasmine2] Do not set duration to 0 for skipped tests (#12518)Full Changelog: https://github.com/facebook/jest/compare/v28.0.0-alpha.6...v28.0.0-alpha.7
[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-circus, jest-jasmine2] Allowed classes and functions as describe and it/test names
[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-config] [BREAKING] Rename moduleLoader to runtime (#10817)[jest-config] [BREAKING] Rename extraGlobals to sandboxInjectedGlobals (#10817)[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] Pass global config to Jest environment constructor for node environment (#12461)[jest-environment-node] [BREAKING] Second argument context to constructor is mandatory (#12469)[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 ConstructorLike, MethodLike, ConstructorLikeKeys, MethodLikeKeys, PropertyLikeKeys; remove exports of utility types ArgumentsOf, ArgsType, ConstructorArgumentsOf - TS builtin utility types ConstructorParameters and Parameters should be used instead (#12435)[jest-mock] Add support for auto-mocking async generator functions (#11080)[jest-runner] Allow passing testEnvironmentOptions via docblocks (#12470)[jest-runtime] [BREAKING] Runtime.createHasteMap now returns a promise (#12008)[expect] Throw useful error if expect.extend is called with invalid matchers (#12488)[expect] Fix iterableEquality ignores other properties (#8359)[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-environment-jsdom] Log JSDOM errors more cleanly (#12386)[@jest/expect-utils] [BREAKING] Fix false positives when looking for undefined prop (#8923)Full Changelog: https://github.com/facebook/jest/compare/v28.0.0-alpha.4...v28.0.0-alpha.5
[jest-core] Pass project config to globalSetup/globalTeardown function as second argument
[jest-core] Pass project config to globalSetup/globalTeardown function as second argument (#12440)[jest-mock] Improve isMockFunction to infer types of passed function (#12442)[jest-resolve, jest-runtime] Add support for async resolver (#11540)[jest-haste-map] Don't use partial results if file crawl errors (#12420)[jest-mock] Fix function overloads for spyOn to allow more correct type inference in complex object (#12442)[*] Use globalThis instead of global (#12447)Full Changelog: https://github.com/facebook/jest/compare/v28.0.0-alpha.3...v28.0.0-alpha.4
[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/expect] New module which extends expect with jest-snapshot matchers (#12404, #12410)
[@jest/expect] New module which extends expect with jest-snapshot matchers (#12404, #12410)[jest-resolve, jest-runtime] Add support for data: URI import and mock (#12392)[pretty-format] New maxWidth parameter (#12402)[jest-matcher-utils] Pass maxWidth to pretty-format to avoid printing every element in arrays by default (#12402)[expect] [BREAKING] Snapshot matcher types are moved to @jest/expect (#12404)Full Changelog: https://github.com/facebook/jest/compare/v28.0.0-alpha.1...v28.0.0-alpha.2
[jest-serializer] [BREAKING] Deprecate package in favour of using v8 APIs directly
[babel-jest] Export createTransformer function (#12399)[expect] Expose AsymmetricMatchers, MatcherFunction and MatcherFunctionWithState interfaces (#12363, #12376)[jest-config, @jest/types] Add ci to GlobalConfig (#12378)[@jest/schemas] New module for JSON schemas for Jest's config (#12384)[jest-config] Correctly detect CI environment and update snapshots accordingly (#12378)[jest-config] Pass moduleTypes to ts-node to enforce CJS when transpiling (#12397)[docs, examples] Update React examples to match with the new React guidelines for code examples (#12217)[docs] Add note about not mixing done() with Promises (#11077)[jest-serializer] [BREAKING] Deprecate package in favour of using v8 APIs directly (#12391)Full Changelog: https://github.com/facebook/jest/compare/v28.0.0-alpha.0...v28.0.0-alpha.1
[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
Your coding agent can read these notes before it upgrades. Set up the MCP server →