Update dependency jest to v30 - #23
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
February 5, 2019 15:47
74a7954 to
64b0c47
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
February 16, 2019 03:44
64b0c47 to
db8e4be
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
February 23, 2019 05:57
db8e4be to
4830bdf
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
4 times, most recently
from
March 12, 2019 16:54
1298d1a to
bd689a7
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
4 times, most recently
from
April 4, 2019 02:04
0c183bf to
9fa755e
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
2 times, most recently
from
May 5, 2019 02:23
77acac1 to
7f160aa
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
June 1, 2019 03:49
7f160aa to
2482d6a
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
July 1, 2019 03:47
2482d6a to
b9c3cdb
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
August 16, 2019 06:44
b9c3cdb to
8063992
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
September 1, 2019 07:36
8063992 to
d31165a
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
February 8, 2020 23:58
d31165a to
bb62a65
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
May 8, 2020 08:57
bb62a65 to
035ef69
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
July 1, 2020 11:49
035ef69 to
d72bb2c
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
August 22, 2020 19:00
d72bb2c to
7522957
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
October 27, 2020 08:49
7522957 to
1205443
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
November 26, 2020 22:55
1205443 to
cb8bade
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
June 6, 2021 22:20
cb8bade to
a275254
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
October 18, 2021 21:58
a275254 to
9d5836a
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
March 7, 2022 15:48
9d5836a to
c92688c
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
May 15, 2022 22:41
c92688c to
fca3f27
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
August 27, 2023 14:30
b05bcdf to
565172c
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
September 12, 2023 07:19
565172c to
4991a6c
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
June 10, 2025 06:52
4991a6c to
9a00839
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
3 times, most recently
from
June 25, 2025 02:04
c38e2b4 to
9fca49b
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
July 3, 2025 01:26
9fca49b to
641d41e
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
July 22, 2025 02:41
641d41e to
960882f
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
2 times, most recently
from
August 13, 2025 14:36
81ef723 to
3194ee0
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
3 times, most recently
from
August 27, 2025 16:51
56db871 to
baf1209
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
3 times, most recently
from
September 2, 2025 16:43
1ef6731 to
a963085
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
2 times, most recently
from
September 28, 2025 09:07
860d007 to
edcb134
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
October 21, 2025 15:51
edcb134 to
6ac33d4
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
November 10, 2025 23:45
6ac33d4 to
1a93b9c
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
November 18, 2025 22:58
1a93b9c to
a9fe193
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
December 3, 2025 20:01
a9fe193 to
a7563c1
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
December 31, 2025 12:47
a7563c1 to
453fddd
Compare
renovate
Bot
force-pushed
the
renovate/major-jest-monorepo
branch
from
January 8, 2026 19:44
453fddd to
ef8d2c7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^23.6.0→^30.5.0Release Notes
jestjs/jest (jest)
v30.5.0Compare Source
Features
[@jest/expect-utils, jest-mock]AddmockFn.whenCalledWith(...args)for configuring return values per argument list, with first-class asymmetric-matcher support (#16053)[@jest/expect-utils]ExportAsymmetricMatcherandFunctionParameterstypes (previously private toexpect) (#16053)[jest-circus, jest-core, jest-jasmine2, jest-test-result, jest-types]--collectTestsnow expandstest.each/describe.eachcases and reports per-status counts (skipped/todo via the newwouldRunflag for selected tests) plus a summary line that match a real run, including under--testNamePatternand.only/fdescribefocus on both the circus and jasmine2 runners (#16259)[jest-circus, jest-environment, jest-runtime, jest-types]Add describe-level retries viajest.retryTimes(..., {entireDescribe: true})(#16322)[jest-circus, jest-message-util, jest-reporters, jest-types]AddretryMessagestoAssertionResultand exportformatErrorStack, so the retry log renders nestedcauseandAggregateErrorsections with code frames instead of serialized[cause]:/[errors]:markers (#16316)[jest-circus, jest-types]AddunhandledErrorsDetailedtoCircus.RunResult, so an unhandled rejection reports itscausechain andAggregateErrorentries with code frames instead of a pre-serialized stack (#16316)[jest-haste-map]ReplaceNodeWatcherandFSEventsWatcherwith@parcel/watcherfor the non-watchman watch path (#16188)[jest-resolve]Bumpunrs-resolverto 1.12.1, removejest-pnp-resolverand unnecessary checks (#15721)[jest-resolve]Honor Node's--preserve-symlinks/NODE_PRESERVE_SYMLINKSin the default resolver by passingsymlinks: falsetounrs-resolver(#16260)[jest-runtime]Apply automocking and manual__mocks__files to synchronously evaluable ESM graphs on Node 24.9+ - static imports, dynamicimport()andrequire()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]Routeprocess.getBuiltinModulethrough the sandbox, so it returns the sandboxprocessand the hookednode:moduleinstead of the host's (#16391)[jest-runtime]Throw an actionable error frommodule.register()andmodule.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]ThrowERR_SOURCE_PHASE_NOT_DEFINEDwith an actionable message forimport sourceandimport.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]Setimport.meta.maintotruein the test file andfalsein every module it loads, matching Node 24+ (#16367)[jest-runtime]Resolve themodule-syncexport condition, so a package that exposes its ESM entry point forrequire()loads the same file Node would (#16336)[jest-snapshot]Add external snapshot paths to custom reporter failure details (#16374)Fixes
[jest-console, jest-reporters]CustomConsolenow buffers console output soTestResult.consoleis populated for reporters whenverboseis enabled, whileGitHubActionsReporteravoids replaying buffered output in verbose mode (#16155)[expect, jest-message-util, jest-pattern, jest-regex-util, jest-util]Revertnode:protocol imports to restore webpack/browser-bundle compatibility (#16167)[expect]WidentoMatchObjectandobjectContainingparameter type fromRecord<string, unknown>toobjectso class instances are accepted (#16196)[jest-circus]Call a generator test body with the shared test context, sothismatches what a regular test function receives (#16347)[jest-circus]Capture the error listeners of the parent process instead of the in-sandboxprocess, so listeners registered before the test file survive teardown and sandbox listeners no longer leak onto the parent (#16347)[jest-circus]ClearcurrentlyRunningTestafter skipped and todo tests (#16342)[jest-circus]Prevent latedone()callbacks from affecting later test or hook invocations (#16343)[jest-circus, jest-jasmine2]Honor--expandwhen formattingnode:assertfailures, instead of always collapsing the diff (#16347)[jest-circus, jest-jasmine2, jest-message-util]Serialize the inner errors of anAggregateErrorintofailureMessages,retryReasonsandunhandledErrors, so--jsonoutput 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 missingfindRelatedTests,outputFile, andreplnameentries toValidConfigso they no longer trigger spurious "Unknown option" warnings (#16224)[jest-config]Use--configfor the global config when multiple--projectsare specified (#16273)[jest-core]Serializebigintvalues in--jsonand--outputFileoutput as their literal form (4n), instead of failing the run withTypeError: Do not know how to serialize a BigInt(#16338)[jest-core]Do not report aCustomGCasync resource (used by N-API addons such as napi-rs for per-isolate GC bookkeeping) as an open handle, since it isnapi_unref'd by the addon and can never keep the event loop alive (#16379)[jest-each]Keep a$&,$`,$'or$$inside a%pparam value out of the replacement, so the title shows the value instead of the text around it (#16338)[jest-each]Interpolate abigintinto a%jtitle as its literal form ("4n") at any depth, instead of throwingTypeError: Do not know how to serialize a BigIntwhile collecting the tests (#16338)[jest-environment, jest-runtime]BindsandboxInjectedGlobalsto the right values wheninjectGlobalsisfalse, instead of shifting every one of them by a position (#16377)[jest-environment-node, jest-util]Only warn about a conflictingglobalsCleanupmode 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 onEPERM(#16295)[jest-haste-map]Keep indexing when an outside process holds a file open on Windows, instead of failing the whole crawl onEPERM(#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 underthrowOnModuleCollision(#16354)[jest-haste-map]Attach the watchman client'serrorlistener before the first command, so a watchman failure falls back to the node crawler instead of crashing on an unhandlederrorevent, and always end the client (#16355)[jest-haste-map]Stop delivering watch events afterWatchmanWatcheris closed, and route its warnings through the configured console (#16355)[jest-haste-map]Restore the nestedduplicatesindex correctly inModuleMap.fromJSON, so a haste collision reported inside a test worker raisesDuplicateHasteCandidatesErrorinstead of aTypeError(#16353)[jest-haste-map]Match watched files on a full extension, somoduleFileExtensions: ['js']no longer acceptsfoo.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 anAggregateErrorthrown inside a test (#16316)[jest-message-util]Indent nestedcauseandAggregateErrorsections 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/mockRejectedValuenow 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/jsdoma peer dependency (#16166)[jest-mock]Remove the leftover own accessor descriptor when restoring aspyOnof an inherited getter or setter, so the instance keeps reflecting the prototype (#16226)[jest-resolve]IncludeextensionsToTreatAsEsmin theshouldLoadAsEsmcache key, so projects with different extension lists don't read each other's answers (#16369)[jest-resolve]MakegetModuleIDAsyncbuild and cachedata:URI module IDs the same way asgetModuleID(#16370)[jest-resolve]Keep thenode: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 fornode:protocol specifiers under the unprefixed name they are stored as (#16388)[jest-resolve]ApplymoduleNameMapperconsistently to both spellings of core module specifiers (fsvsnode:fs) (#16390)[jest-resolve]Keep virtual and ordinary mock module IDs isolated across test files (#16296)[jest-resolve]Guard missingrequire.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.cjsfile instead of loading it as ESM, matching Node (#16368)[@jest/source-map]Keep source map sources that name a scheme, such aswebpack:///, instead of resolving them into a path that does not exist (#16327)[@jest/source-map]Look up--testLocationInResultspositions 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'sinstall, 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 whengetAllV8CoverageInfoCopyis called afterteardown, 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, somodule.exports = require('./dep.mjs')loads instead of failing withmodule is not defined(#16363)[jest-runtime]Scope module mocks instantiated insidejest.isolateModules/isolateModulesAsyncto 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 beforerequire()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 originalERR_REQUIRE_ASYNC_MODULEwhen arequire()of a top-level-await graph is retried, instead of a spurious "concurrentimport()" error (#16364)[jest-runtime]Throw the evaluation error when another caller'simport()of the same module failed while we awaited it, instead of resolving with the errored module (#16364)[jest-runtime]Mark the result ofrequire()ing an ES module that has a default export with__esModule: truethrough a live-binding facade, and serve the same object fromrequire.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-nullrequire.main(#16367)[jest-runtime]Populatemodule.childrenwith the modules a file loads, matching Node (#16368)[jest-runtime]Provideimport.meta.resolveandimport.meta.jestindata:URI modules, accept any-case mediatype parameters, and use Node's error codes for invaliddata: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 inimport.meta.url(#16375)[jest-runtime]Share modules between overlapping graphs when a CommonJS modulerequire()s an ES module mid-load, instead of evaluating shared dependencies twice (#16375)[jest-runtime]ThrowERR_REQUIRE_CYCLE_MODULElike Node when a CommonJS modulerequire()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 itsnode:specifier (#16341)[jest-runtime]Fall back to native ESM when a.jsfile contains ESM syntax but has no"type":"module"marker (#16152)[jest-runtime]Allowrequire()of ESM-marked files on Node < 24.9 via transform fallback (#16244)[jest-runtime, @jest/transform]Surface actionableERR_REQUIRE_ESMerror for files with untransformed ESM syntax instead of the generic "unexpected token" message (#16244)[jest-runtime]Support older test environments whosemoduleMockerdoes not implementclearMocksOnScope(#16169)[jest-runtime]Applyjest.unstable_mockModulewhen the mocked file itself isrequire()d, not only when it is imported as a dependency (#16389)[jest-runtime]Applyjest.unstable_mockModuleto statically importeddata:URIs on Node 24.9+, matching dynamicimport()(#16389)[jest-runtime]Run an asyncjest.unstable_mockModulefactory once per module instead of twice, and fail the import instead of crashing the worker when the factory rejects (#16389)[jest-runtime]Hide arequire(esm)module that failed to evaluate fromrequire.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, matchingrequire()and Node (#16389)[jest-runtime]ThrowERR_REQUIRE_ASYNC_MODULEwhenrequire(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'sJSON, so their objects passinstanceof Objectinside the test likerequire()d JSON does (#16389)[jest-runtime]Accept everyfile:URL string in the sandboxedmodule.createRequire, including one with alocalhostauthority, as Node does (#16389)[jest-runtime]Point at{virtual: true}whenjest.mockorjest.unstable_mockModuleis given a module that cannot be resolved (#16389)[jest-reporters]Fix coverage report table formatting in CI/GitHub Actions environments whereprocess.stdout.columnsis undefined by falling back to theCOLUMNSenv var or80columns 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]StopglobsToMatcherreusing a cached matcher compiled with different picomatch options, and keep itsdot: truedefault whendotis passed asundefined(#16381)[pretty-format]Move thereact-isaliases into the@jestscope, so they cannot be shadowed by unrelated packages published under the alias names (#16333)Chore & Maintenance
[docs]Document the intentional divergences from Node's module system in the ECMAScript Modules page (#16368)[docs]Note deprecation ofreact-test-rendererin React Native tutorial andpretty-formatREADME (#16294)[docs]Use@testing-library/react-nativein the React Native tutorial instead of the deprecatedreact-test-renderer(#16318)[babel-jest, @jest/transform]Updatebabel-plugin-istanbulto v8 (#16049)[jest-config, @jest/reporters, jest-runtime]Updateglobto v13 (#16397)[jest-haste-map]Refactor massive class into multiple files (#16180)[jest-haste-map]Dropwalkerdependency; replace hand-rolled directory recursion in the JS crawler and watcher startup withfdir(#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 thewatchman --versionprobe withget-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, memoizeisCoreModuleand the options cache-key serialization, skip mapper preparation when nomoduleNameMapperis configured, run each mapper regex once, and stop re-parsingNODE_OPTIONSon every default-resolver call (#16371)[jest-resolve]Cut warm resolution cost to about a third: reuse oneunrs-resolverfactory 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 anErrorfor misses thatfindNodeModuleswallows; add a__benchmarks__suite for the default resolver (#16373)[jest-runner, @jest/source-map]Replacesource-map-supportwith 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 onerequire.cacheproxy across modules, and cache empty files (#16376)[@jest/source-map]DeprecategetCallsitein favour ofSourceMapSupport#getCallsite(#16327)[jest-runtime]Avoid magicalnullvalue in ESM loader (#16160)v30.4.2Compare Source
Fixes
[jest-runtime]Fix named imports from CJS modules whosemodule.exportsis a function with own-property exports (#16150)v30.4.1Compare Source
Features
[jest-config, jest-core, jest-runner, jest-schemas, jest-types]Allow custom runner configuration options via tuple format['runner-path', {options}](#16141)Fixes
[jest-runtime]Align CJS-from-ESM default export with Node:module.exportsis always the ESM default,__esModuleunwrapping is no longer applied (#16143)v30.4.0Compare Source
Features
[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-testsflag to discover and list tests without executing them (#16006)[jest-config, jest-runner, jest-worker]AddworkerGracefulExitTimeoutconfig option to control how long workers are given to exit before being force-killed (#15984)[jest-config]Add support forjest.config.mtsas a valid configuration file (#16005)[jest-config, jest-core, jest-reporters, jest-runner]verboseandsilentcan now be set per-project; the project-level value overrides the global value for that project's tests (#16133)[@jest/fake-timers]AcceptTemporal.Durationinjest.advanceTimersByTime()andjest.advanceTimersByTimeAsync()(#16128)[@jest/fake-timers]AcceptTemporal.InstantandTemporal.ZonedDateTimeinjest.setSystemTime()anduseFakeTimers({now})(#16128)[@jest/fake-timers]Support fakingTemporal.Now.*(#16131)[jest-mock]AddclearMocksOnScope(scope)onModuleMockerfor clearing every mock function exposed on a scope object (#16088)[jest-resolve]AddcanResolveSync()onResolverso callers can detect when a user-configured resolver only exports anasynchook (#16064)[jest-runtime]Use synchronousevaluate()for ES modules without top-levelawaiton Node versions that support it (v24.9+), and prefer the synchronous transform path when a sync transformer is configured (#16062)[jest-runtime]Supportrequire()of ES modules on Node v24.9+ (#16074)[jest-runtime]Validate TC39 import attributes (with { type: 'json' }) on ESM imports (#16127)[@jest/transform]AddcanTransformSync(filename)onScriptTransformerso callers can pick the sync vs async transform path (#16062)[jest-util]AddisErrorhelper (#16076)[pretty-format]Support React 19 (#16123)Fixes
[expect-utils]FixtoStrictEqualfailing onstructuredCloneresults due to cross-realm constructor mismatch (#15959)[@jest/expect-utils]PreventtoMatchObject/subset matching from throwing when encountering exotic iterables (#15952)[fake-timers]ConvertDateto milliseconds before passing to@sinonjs/fake-timers(#16029)[jest]ExportGlobalConfigandProjectConfigTypeScript types (#16132)[jest-circus]Prevent crash whenasyncErroris undefined for non-Error throws (#16003)[jest-circus, jest-jasmine2]IncludeError.causein JSONfailureMessagesoutput (#15967)[jest-config]Fix preset path resolution on Windows when the preset uses subpathexports(#15961)[jest-config]AllowcollectCoverageandcoverageProviderin 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-filewarning 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 usingprojectsconfig option (#16140)[jest-runtime]Resolveexpectand@jest/expectfrom the internal module registry so test-file imports share the sameJestAssertionErroras the globalexpect(#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.jsfiles with ESM syntax but no"type":"module"marker as native ESM (#16050)[jest-runtime]Extend the.js-with-ESM-syntax fallback torequire()on Node v24.9+ - falls back torequire(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 whenrequire()is called after the Jest environment has been torn down (#15951)[jest-runtime]Fix missing error whenimport()is called after the Jest environment has been torn down (#16080)[jest-runtime]Fix virtualunstable_mockModuleregistrations not respected in ESM (#16081)[jest-runtime]ApplymoduleNameMapperwhen resolving modules withrequire.resolve()and thepathsoption (#16135)Chore & Maintenance
[@jest/fake-timers]Upgrade@sinonjs/fake-timers(#16139)[jest-runtime]Use synchronouslinkRequests/instantiatefor ESM linking on Node v24.9+ (#16063)v30.3.0Compare Source
Features
[jest-config]AdddefineConfigandmergeConfighelpers for type-safe Jest config (#15844)[jest-fake-timers]AddsetTimerTickModeto configure how timers advance[*]Reduce token usage when run through LLMs (3f17932)Fixes
[jest-config]Keep CLI coverage output when using--jsonwith--outputFile(#15918)[jest-mock]UseSymbolfrom test environment (#15858)[jest-reporters]Fix issue where console output not displayed for GHA reporter even withsilent: falseoption (#15864)[jest-runtime]Fix issue where user cannot utilize dynamic import despite specifying--experimental-vm-modulesNode option (#15842)[jest-test-sequencer]Fix issue where failed tests due to compilation errors not getting re-executed even with--onlyFailuresCLI option (#15851)[jest-util]Make sureprocess.features.require_moduleisfalse(#15867)Chore & Maintenance
[*]Replace remaining micromatch uses with picomatch[deps]Update to sinon/fake-timers v15[docs]Update V30 migration guide to notify users onjest.mock()work with case-sensitive path (#15849)v30.2.0Compare Source
Chore & Maintenance
[*]Update example repo for testing React Native projects (#15832)[*]Updatejest-watch-typeaheadto v3 (#15830)v30.1.3Compare Source
Fixes
unstable_mockModulewithnode:prefixed core modules.v30.1.2Compare Source
Fixes
[jest-snapshot-utils]Correct snapshot header regexp to work with newline across OSes (#15803)v30.1.1Compare Source
Fixes
[jest-snapshot-utils]Fix deprecated goo.gl snapshot warning not handling Windows end-of-line sequences (#15800)[jest-snapshot-utils]Improve messaging about goo.gl snapshot link change (#15821)v30.1.0Compare Source
v30.0.5Compare Source
Features
[jest-config]AllowtestMatchto take a string value[jest-worker]LetworkerIdleMemoryLimitaccept 0 to always restart worker child processesFixes
[expect]Fixbiginterror (#15702)v30.0.4Compare Source
Features
[expect]TheInversetype is now exported (#15714)[expect]feat: supportasync functionsintoBe(#15704)Fixes
[jest]jest --onlyFailures --listTests now correctly lists only failed tests (#15700)[jest-snapshot]Handle line endings in snapshots (#15708)v30.0.3Compare Source
Fixes
[jest-config]Fix ESM TS config loading in a CJS project (#15694)[jest-core]jest --onlyFailures --listTests now correctly lists only failed tests(#15700)Features
[jest-diff]Show non-printable control characters to diffs (#15696)v30.0.2Compare Source
Fixes
[jest-matcher-utils]Make 'deepCyclicCopyObject' safer by setting descriptors to a null-prototype object (#15689)[jest-util]Make garbage collection protection property writable (#15689)v30.0.1Compare Source
Features
[jest-resolver]Implement thedefaultAsyncResolver(#15679)Fixes
[jest-resolver]Resolve builtin modules correctly (#15683)[jest-environment-node, jest-util]Avoid setting globals cleanup protection symbol when feature is off (#15684)Chore & Maintenance
[*]Remove and deprecatejest-replpackage (#15673)[jest-resolver]Replace customisBuiltinModulewith node'sisBuiltin(#15685)v30.0.0Compare Source
Features
[*]RenamedglobalsCleanupModetoglobalsCleanupand--waitNextEventLoopTurnForUnhandledRejectionEventsto--waitForUnhandledRejections[expect]AddArrayOfasymmetric matcher for validating array elements. (#15567)[babel-jest]Add optionexcludeJestPresetto allow opting out ofbabel-preset-jest(#15164)[expect]Revert #15038 to fixexpect(fn).toHaveBeenCalledWith(expect.objectContaining(...))when there are multiple calls (#15508)[jest-circus, jest-cli, jest-config]AddwaitNextEventLoopTurnForUnhandledRejectionEventsflag to minimise performance impact of correct detection of unhandled promise rejections introduced in #14315 (#14681)[jest-circus]Add awaitBeforeRetryoption tojest.retryTimes(#14738)[jest-circus]Add aretryImmediatelyoption tojest.retryTimes(#14696)[jest-circus, jest-jasmine2]AllowsetupFilesAfterEnvto export an async function (#14749)[jest-circus, jest-test-result]AddstartedAttimestamp inTestCaseResultObjectwithinonTestCaseResult(#15145)[jest-cli]ExportbuildArgv(#15310)[jest-config][BREAKING] Addmtsandctsto defaultmoduleFileExtensionsconfig (#14369)[jest-config][BREAKING] UpdatetestMatchandtestRegexdefault option for supportingmjs,cjs,mts, andcts(#14584)[jest-config]Loads config file from provided path inpackage.json(#14044)[jest-config]Allow loadingjest.config.ctsfiles (#14070)[jest-config]ShowrootDirin error message when apresetfails to load (#15194)[jest-config]Support loading TS config files usingesbuild-registervia 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]AddperfStatsto surface test setup overhead (#14622)[@jest/core][BREAKING] Changed--filterto accept an object with shape{ filtered: Array<string> }to match documentation (#13319)[@jest/core]Support--outputFileoption for--listTests(#14980)[@jest/core]Stringify Errors properly with--jsonflag (#15329)[@jest/core, @jest/test-sequencer][BREAKING] ExposesglobalConfig&contextstoTestSequencer(#14535, & #14543)[jest-each]Introduce%$option to add number of the test to its title (#14710)[@jest/environment][BREAKING] Remove deprecatedjest.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 thejsdomenvironment, allowing usage of custom versions of JSDOM (#14717)[jest-environment-node]Update jest environment with dispose symbolsSymbol(#14888 & #14909)[expect, @jest/expect][BREAKING] Add type inference for function parameters inCalledWithassertions (#15129)[@jest/expect-utils]Properly compare all types ofTypedArrays (#15178)[@jest/fake-timers][BREAKING] Upgrade@sinonjs/fake-timersto v13 (#14544 & #15470)[@jest/fake-timers]Exposing new modern timers functionadvanceTimersToFrame()which advances all timers by the needed milliseconds to execute callbacks currently scheduled withrequestAnimationFrame(#14598)[jest-matcher-utils]AddSERIALIZABLE_PROPERTIESto allow custom serialization of objects (#14893)[jest-mock]Add support for the Explicit Resource Management proposal to use theusingkeyword withjest.spyOn(object, methodName)(#14895)[jest-reporters]Add support for DEC mode 2026 (#15008)[jest-resolver]Supportfile://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 functionjest.advanceTimersToFrame()from@jest/fake-timers(#14598)[jest-runtime]Supportimport.meta.filenameandimport.meta.dirname(available from Node 20.11) (#14854)[jest-runtime]Supportimport.meta.resolve(#14930)[jest-runtime][BREAKING] Make it mandatory to passglobalConfigto theRuntimeconstructor (#15044)[jest-runtime]Addunstable_unmockModule(#15080)[jest-runtime]AddonGenerateMocktransformer callback for auto generated callbacks (#15433 & #15482)[jest-runtime][BREAKING] Usevm.compileFunctionovervm.Script(#15461)[@jest/schemas]Upgrade@sinclair/typeboxto v0.34 (#15450)[@jest/types]test.each(): Accept a readonly (as const) table properly (#14565)[@jest/types]Improve argument type inference passed totestanddescribecallback functions fromeachtables (#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 fromjest-snapshotinto its own package (#15095)[pretty-format][BREAKING] Do not render empty string children ('') in React plugin (#14470)Fixes
[expect]ShowAggregateErrorto display (#15346)[*]Replaceexitwithexit-x(#15399)[babel-plugin-jest-hoist]Usedenylistinstead of the deprecatedblacklistfor Babel 8 support (#14109)[babel-plugin-jest-hoist]Do not rely on buggy Babel behaviour (#15415)[expect]Check error instance type fortoThrow/toThrowError(#14576)[expect]Improve diff for failingexpect.objectContaining(#15038)[expect]UseArray.isArrayto check if an array is anArray(#15101)[expect]Fix Errorcauseassertion errors (#15339)[jest-changed-files]Print underlying errors when VCS commands fail (#15052)[jest-changed-files]Abortsl rootcall if output resembles a steam locomotive (#15053)[jest-circus][BREAKING] Prevent false test failures caused by promise rejections handled asynchronously (#14315)[jest-circus]Replace recursivemakeTestResultsimplementation with iterative one (#14760)[jest-circus]Omitexpect.hasAssertions()errors if a test already has errors (#14866)[jest-circus, jest-expect, jest-snapshot]Passtest.failingtests 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 respectrunInBandoption (#14578)[jest-config]SupporttestTimeoutin project config (#14697)[jest-config]SupportcoverageReportersin project config (#14830)[jest-config]Allowreportersin project config (#14768)[jest-config]Allow Node16/NodeNext/BundlermoduleResolutionin project's tsconfig (#14739)[@jest/create-cache-key-function]Correct the return type ofcreateCacheKey(#15159)[jest-each]Allow$keypathtemplates withnullorundefinedvalues (#14831)Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.