[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.exports is always the ESM default, __esModule unwrapping is no longer applied (#16143)
[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)
[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)
This PR contains the following updates:
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@jest/globals](https://github.com/jestjs/jest) ([source](https://github.com/jestjs/jest/tree/HEAD/packages/jest-globals)) | [`30.2.0` → `30.4.1`](https://renovatebot.com/diffs/npm/@jest%2fglobals/30.2.0/30.4.1) |  |  |
| [jest](https://jestjs.io/) ([source](https://github.com/jestjs/jest/tree/HEAD/packages/jest)) | [`30.2.0` → `30.4.2`](https://renovatebot.com/diffs/npm/jest/30.2.0/30.4.2) |  |  |
---
### Release Notes
<details>
<summary>jestjs/jest (@​jest/globals)</summary>
### [`v30.4.1`](https://github.com/jestjs/jest/blob/HEAD/CHANGELOG.md#3041)
[Compare Source](https://github.com/jestjs/jest/compare/v30.4.0...v30.4.1)
##### Features
- `[jest-config, jest-core, jest-runner, jest-schemas, jest-types]` Allow custom runner configuration options via tuple format `['runner-path', {options}]` ([#​16141](https://github.com/jestjs/jest/pull/16141))
##### Fixes
- `[jest-runtime]` Align CJS-from-ESM default export with Node: `module.exports` is always the ESM default, `__esModule` unwrapping is no longer applied ([#​16143](https://github.com/jestjs/jest/pull/16143))
### [`v30.4.0`](https://github.com/jestjs/jest/blob/HEAD/CHANGELOG.md#3040)
[Compare Source](https://github.com/jestjs/jest/compare/v30.3.0...v30.4.0)
##### Features
- `[babel-jest]` Support collecting coverage from `.mts`, `.cts` (and other) files ([#​15994](https://github.com/jestjs/jest/pull/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](https://github.com/jestjs/jest/pull/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](https://github.com/jestjs/jest/pull/15984))
- `[jest-config]` Add support for `jest.config.mts` as a valid configuration file ([#​16005](https://github.com/jestjs/jest/pull/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](https://github.com/jestjs/jest/pull/16133))
- `[@jest/fake-timers]` Accept `Temporal.Duration` in `jest.advanceTimersByTime()` and `jest.advanceTimersByTimeAsync()` ([#​16128](https://github.com/jestjs/jest/pull/16128))
- `[@jest/fake-timers]` Accept `Temporal.Instant` and `Temporal.ZonedDateTime` in `jest.setSystemTime()` and `useFakeTimers({now})` ([#​16128](https://github.com/jestjs/jest/pull/16128))
- `[@jest/fake-timers]` Support faking `Temporal.Now.*` ([#​16131](https://github.com/jestjs/jest/pull/16131))
- `[jest-mock]` Add `clearMocksOnScope(scope)` on `ModuleMocker` for clearing every mock function exposed on a scope object ([#​16088](https://github.com/jestjs/jest/pull/16088))
- `[jest-resolve]` Add `canResolveSync()` on `Resolver` so callers can detect when a user-configured resolver only exports an `async` hook ([#​16064](https://github.com/jestjs/jest/pull/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](https://github.com/jestjs/jest/pull/16062))
- `[jest-runtime]` Support `require()` of ES modules on Node v24.9+ ([#​16074](https://github.com/jestjs/jest/pull/16074))
- `[jest-runtime]` Validate TC39 import attributes (`with { type: 'json' }`) on ESM imports ([#​16127](https://github.com/jestjs/jest/pull/16127))
- `[@jest/transform]` Add `canTransformSync(filename)` on `ScriptTransformer` so callers can pick the sync vs async transform path ([#​16062](https://github.com/jestjs/jest/pull/16062))
- `[jest-util]` Add `isError` helper ([#​16076](https://github.com/jestjs/jest/pull/16076))
- `[pretty-format]` Support React 19 ([#​16123](https://github.com/jestjs/jest/pull/16123))
##### Fixes
- `[expect-utils]` Fix `toStrictEqual` failing on `structuredClone` results due to cross-realm constructor mismatch ([#​15959](https://github.com/jestjs/jest/pull/15959))
- `[@jest/expect-utils]` Prevent `toMatchObject`/subset matching from throwing when encountering exotic iterables ([#​15952](https://github.com/jestjs/jest/pull/15952))
- `[fake-timers]` Convert `Date` to milliseconds before passing to `@sinonjs/fake-timers` ([#​16029](https://github.com/jestjs/jest/pull/16029))
- `[jest]` Export `GlobalConfig` and `ProjectConfig` TypeScript types ([#​16132](https://github.com/jestjs/jest/pull/16132))
- `[jest-circus]` Prevent crash when `asyncError` is undefined for non-Error throws ([#​16003](https://github.com/jestjs/jest/pull/16003))
- `[jest-circus, jest-jasmine2]` Include `Error.cause` in JSON `failureMessages` output ([#​15967](https://github.com/jestjs/jest/pull/15967))
- `[jest-config]` Fix preset path resolution on Windows when the preset uses subpath `exports` ([#​15961](https://github.com/jestjs/jest/pull/15961))
- `[jest-config]` Allow `collectCoverage` and `coverageProvider` in project config without a validation warning ([#​16132](https://github.com/jestjs/jest/pull/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](https://github.com/jestjs/jest/pull/16132))
- `[jest-environment-node]` Fix `--localstorage-file` warning on Node 25+ ([#​16086](https://github.com/jestjs/jest/pull/16086))
- `[jest-reporters]` Apply global coverage threshold to unmatched pattern files in addition to glob/path thresholds ([#​16137](https://github.com/jestjs/jest/pull/16137))
- `[jest-reporters, jest-runner, jest-runtime, jest-transform]` Fix coverage report not showing correct code coverage when using `projects` config option ([#​16140](https://github.com/jestjs/jest/pull/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](https://github.com/jestjs/jest/pull/16130))
- `[jest-runtime]` Improve CJS-from-ESM interop: `__esModule`/Babel default unwrap, broader named-export coverage, and shared CJS singleton across importers ([#​16050](https://github.com/jestjs/jest/pull/16050))
- `[jest-runtime]` Load `.js` files with ESM syntax but no `"type":"module"` marker as native ESM ([#​16050](https://github.com/jestjs/jest/pull/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](https://github.com/jestjs/jest/pull/16078))
- `[jest-runtime]` Fix deadlocks and double-evaluation in concurrent ESM and wasm imports ([#​16050](https://github.com/jestjs/jest/pull/16050))
- `[jest-runtime]` Fix error when `require()` is called after the Jest environment has been torn down ([#​15951](https://github.com/jestjs/jest/pull/15951))
- `[jest-runtime]` Fix missing error when `import()` is called after the Jest environment has been torn down ([#​16080](https://github.com/jestjs/jest/pull/16080))
- `[jest-runtime]` Fix virtual `unstable_mockModule` registrations not respected in ESM ([#​16081](https://github.com/jestjs/jest/pull/16081))
- `[jest-runtime]` Apply `moduleNameMapper` when resolving modules with `require.resolve()` and the `paths` option ([#​16135](https://github.com/jestjs/jest/pull/16135))
##### Chore & Maintenance
- `[@jest/fake-timers]` Upgrade `@sinonjs/fake-timers` ([#​16139](https://github.com/jestjs/jest/pull/16139))
- `[jest-runtime]` Use synchronous `linkRequests` / `instantiate` for ESM linking on Node v24.9+ ([#​16063](https://github.com/jestjs/jest/pull/16063))
### [`v30.3.0`](https://github.com/jestjs/jest/blob/HEAD/CHANGELOG.md#3030)
[Compare Source](https://github.com/jestjs/jest/compare/v30.2.0...v30.3.0)
##### Features
- `[jest-config]` Add `defineConfig` and `mergeConfig` helpers for type-safe Jest config ([#​15844](https://github.com/jestjs/jest/pull/15844))
- `[jest-fake-timers]` Add `setTimerTickMode` to configure how timers advance
- `[*]` Reduce token usage when run through LLMs ([`3f17932`](https://github.com/jestjs/jest/commit/3f17932061c0203999451e5852664093de876709))
##### Fixes
- `[jest-config]` Keep CLI coverage output when using `--json` with `--outputFile` ([#​15918](https://github.com/jestjs/jest/pull/15918))
- `[jest-mock]` Use `Symbol` from test environment ([#​15858](https://github.com/jestjs/jest/pull/15858))
- `[jest-reporters]` Fix issue where console output not displayed for GHA reporter even with `silent: false` option ([#​15864](https://github.com/jestjs/jest/pull/15864))
- `[jest-runtime]` Fix issue where user cannot utilize dynamic import despite specifying `--experimental-vm-modules` Node option ([#​15842](https://github.com/jestjs/jest/pull/15842))
- `[jest-test-sequencer]` Fix issue where failed tests due to compilation errors not getting re-executed even with `--onlyFailures` CLI option ([#​15851](https://github.com/jestjs/jest/pull/15851))
- `[jest-util]` Make sure `process.features.require_module` is `false` ([#​15867](https://github.com/jestjs/jest/pull/15867))
##### Chore & Maintenance
- `[*]` Replace remaining micromatch uses with picomatch
- `[deps]` Update to sinon/fake-timers v15
- `[docs]` Update V30 migration guide to notify users on `jest.mock()` work with case-sensitive path ([#​15849](https://github.com/jestjs/jest/pull/15849))
- Updated Twitter icon to match the latest brand guidelines ([#​15869](https://github.com/jestjs/jest/pull/15869))
</details>
---
### Configuration
📅 **Schedule**: (UTC)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **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 these updates again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My44OS4xIiwidXBkYXRlZEluVmVyIjoiNDMuMTcxLjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
30.2.0→30.4.130.2.0→30.4.2Release Notes
jestjs/jest (@jest/globals)
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)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 these updates again.
This PR has been generated by Mend Renovate.
402b4c3dbfto11b0635e7311b0635e73to10726d06fb10726d06fbto5400850b765400850b76to332051c37fchore(deps): update jest monorepo to v30.3.0to chore(deps): update jest monorepo to v30.4.1332051c37fto30c1a12cda30c1a12cdato5ad78518abPull request closed