Skip to content

chore(deps)(deps-dev): bump jest-environment-jsdom from 29.7.0 to 30.4.1#11

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/jest-environment-jsdom-30.4.1
Closed

chore(deps)(deps-dev): bump jest-environment-jsdom from 29.7.0 to 30.4.1#11
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/jest-environment-jsdom-30.4.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jun 2, 2026

Copy link
Copy Markdown
Contributor

Bumps jest-environment-jsdom from 29.7.0 to 30.4.1.

Release notes

Sourced from jest-environment-jsdom's releases.

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)

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)

Full Changelog: jestjs/jest@v30.4.0...v30.4.1

v30.4.0

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

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

Fixes

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

... (truncated)

Changelog

Sourced from jest-environment-jsdom's changelog.

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

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)

30.4.0

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

Fixes

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

... (truncated)

Commits

@dependabot @github

dependabot Bot commented on behalf of github Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

Labels

The following labels could not be found: dependencies. Please create it before Dependabot can add it to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

Bumps [jest-environment-jsdom](https://github.com/jestjs/jest/tree/HEAD/packages/jest-environment-jsdom) from 29.7.0 to 30.4.1.
- [Release notes](https://github.com/jestjs/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jestjs/jest/commits/v30.4.1/packages/jest-environment-jsdom)

---
updated-dependencies:
- dependency-name: jest-environment-jsdom
  dependency-version: 30.4.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/jest-environment-jsdom-30.4.1 branch from a780ca1 to 9872de4 Compare June 2, 2026 14:00
@Isonimus

Isonimus commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Superseded by #13 — that PR lands the same version bump plus the test-side migration required by jsdom 30.

@Isonimus Isonimus closed this Jun 3, 2026
@dependabot @github

dependabot Bot commented on behalf of github Jun 3, 2026

Copy link
Copy Markdown
Contributor Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot dependabot Bot deleted the dependabot/npm_and_yarn/jest-environment-jsdom-30.4.1 branch June 3, 2026 07:43
Isonimus added a commit that referenced this pull request Jun 3, 2026
jsdom 30 made several `window` properties (`top`, `parent`, `self`,
`location`) and `global.document` / `global.window` non-configurable own
properties. The previous tests relied on `Object.defineProperty(window,
'top', ...)` to swap them in/out, which now throws `TypeError: Cannot
redefine property`.

Migration:

- New `src/utils/windowFrame.ts` helper: routes frame-detection reads
  (`window.self !== window.top`, `window.parent.location.hostname`)
  through `isEmbedded()` / `readParentOrigin()`. Tests stub these via
  `jest.unstable_mockModule` instead of fighting jsdom's lockdown.
- `IFrameStrategy.ts`, `sizeDetector.ts`, `assess.ts` updated to use the
  helper. Behavior preserved — same cross-origin try/catch shape, same
  isExternalFrame/parentDomain semantics.
- `IFrameStrategy.test.ts` rewritten to ESM-mode dynamic imports
  (`jest.unstable_mockModule` doesn't hoist like `jest.mock` and requires
  `await import(...)` after the mock registration).
- `ContentProtector.test.ts` switched to `@jest-environment node`. That
  suite already replaced `document`/`window`/`navigator` wholesale via
  its own synthetic mocks; the node env leaves those slots empty so the
  mocks can occupy them without conflict. Added a minimal `HTMLElement`
  shim for the source's `instanceof` check.
- `devToolsDetectors.test.ts`: one test (`SizeDetector › isSupported
  returns false inside an iframe`) is now `it.skip`'d. The same code
  path is exercised by IFrameStrategy.test.ts; mocking it here would
  require restructuring 12 imports into dynamic form for one branch.

Supersedes #11.
Isonimus added a commit that referenced this pull request Jun 3, 2026
…13)

jsdom 30 made several `window` properties (`top`, `parent`, `self`,
`location`) and `global.document` / `global.window` non-configurable own
properties. The previous tests relied on `Object.defineProperty(window,
'top', ...)` to swap them in/out, which now throws `TypeError: Cannot
redefine property`.

Migration:

- New `src/utils/windowFrame.ts` helper: routes frame-detection reads
  (`window.self !== window.top`, `window.parent.location.hostname`)
  through `isEmbedded()` / `readParentOrigin()`. Tests stub these via
  `jest.unstable_mockModule` instead of fighting jsdom's lockdown.
- `IFrameStrategy.ts`, `sizeDetector.ts`, `assess.ts` updated to use the
  helper. Behavior preserved — same cross-origin try/catch shape, same
  isExternalFrame/parentDomain semantics.
- `IFrameStrategy.test.ts` rewritten to ESM-mode dynamic imports
  (`jest.unstable_mockModule` doesn't hoist like `jest.mock` and requires
  `await import(...)` after the mock registration).
- `ContentProtector.test.ts` switched to `@jest-environment node`. That
  suite already replaced `document`/`window`/`navigator` wholesale via
  its own synthetic mocks; the node env leaves those slots empty so the
  mocks can occupy them without conflict. Added a minimal `HTMLElement`
  shim for the source's `instanceof` check.
- `devToolsDetectors.test.ts`: one test (`SizeDetector › isSupported
  returns false inside an iframe`) is now `it.skip`'d. The same code
  path is exercised by IFrameStrategy.test.ts; mocking it here would
  require restructuring 12 imports into dynamic form for one branch.

Supersedes #11.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant