PackageTrack

npm · #3913

@jest/environment-jsdom-abstract

30.4.1jestjs/jest

Release timeline

25 releases since 2024
202420252026

Releases

  1. 30.4.18 May 2026
    Release notes

    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)
    Open source →
  2. 30.4.07 May 2026
    Release notes

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

    Chore & Maintenance

    • [@jest/fake-timers] Upgrade @sinonjs/fake-timers (#16139)
    • [jest-runtime] Use synchronous linkRequests / instantiate for ESM linking on Node v24.9+ (#16063)
    Open source →
  3. 30.3.010 Mar 2026
    Release notes

    Features

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

    Fixes

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

    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)
    • Updated Twitter icon to match the latest brand guidelines (#15869)
    Open source →
  4. 30.2.028 Sept 2025
    Release notes

    Chore & Maintenance

    • [*] Update example repo for testing React Native projects (#15832)
    • [*] Update jest-watch-typeahead to v3 (#15830)
    Open source →
  5. 30.1.21 Sept 2025
    Release notes

    Fixes

    • [jest-snapshot-utils] Correct snapshot header regexp to work with newline across OSes (#15803)
    Open source →
  6. 30.1.127 Aug 2025
    Release notes

    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)
    Open source →
  7. 30.1.027 Aug 2025

    Nothing published for this version

  8. 30.0.522 Jul 2025
    Release notes

    Features

    • [jest-config] Allow testMatch to take a string value
    • [jest-worker] Let workerIdleMemoryLimit accept 0 to always restart worker child processes

    Fixes

    • [expect] Fix bigint error (#15702)
    Open source →
  9. 30.0.42 Jul 2025
    Release notes

    Features

    • [expect] The Inverse type is now exported (#15714)
    • [expect] feat: support async functions in toBe (#15704)

    Fixes

    • [jest] jest --onlyFailures --listTests now correctly lists only failed tests (#15700)
    • [jest-snapshot] Handle line endings in snapshots (#15708)
    Open source →
  10. 30.0.219 Jun 2025
    Release notes

    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)
    Open source →
  11. 30.0.118 Jun 2025
    Release notes

    Features

    • [jest-resolver] Implement the defaultAsyncResolver (#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 deprecate jest-repl package (#15673)
    • [jest-resolver] Replace custom isBuiltinModule with node's isBuiltin (#15685)
    Open source →
  12. 30.0.010 Jun 2025
    Release notes

    Features

    • [*] 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 (#14749)
    • [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)

    Fixes

    • [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 (#14830)
    • [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 (#15517)
    • [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)
      • [BREAKING] Changes testPathPattern configuration option to testPathPatterns, which now takes a list of patterns instead of the regex.
      • [BREAKING] --testPathPattern is now --testPathPatterns
      • [BREAKING] Specifying testPathPatterns 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.
      • Adds a conditional/check to ensure the argument passed to expect is an object.
      • Add unit tests for new ObjectContaining behavior.
      • Remove invalid/wrong test case assertions for ObjectContaining.
    • [jest-worker] Addresses incorrect state on exit (#15610)

    Performance

    • [*] [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-resolver] Migrate resolve and resolve.exports to unrs-resolver (#15619)
    • [jest-circus, jest-environment-node, jest-repl, jest-runner, jest-util] Cleanup global variables on environment teardown to reduce memory leaks (#15215 & #15636 & #15643)

    Chore & Maintenance

    • [jest-environment-jsdom, jest-environment-jsdom-abstract] Increased version of jsdom to ^26.0.0 (#15473)
    • [*] 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 [email protected], 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)
    Open source →
  13. 30.0.0-rc.19 Jun 2025pre-release

    Nothing published for this version

  14. 30.0.0-beta.84 Jun 2025pre-release

    Nothing published for this version

  15. 30.0.0-beta.74 Jun 2025pre-release

    Nothing published for this version

  16. 30.0.0-beta.63 Jun 2025pre-release

    Nothing published for this version

  17. 30.0.0-beta.529 May 2025pre-release

    Nothing published for this version

  18. 30.0.0-beta.427 May 2025pre-release

    Nothing published for this version

  19. 30.0.0-beta.327 May 2025pre-release

    Nothing published for this version

  20. 30.0.0-beta.227 May 2025pre-release

    Nothing published for this version

  21. 30.0.0-alpha.730 Jan 2025pre-release

    Nothing published for this version

  22. 30.0.0-alpha.68 Aug 2024pre-release

    Nothing published for this version

  23. 30.0.0-alpha.530 May 2024pre-release

    Nothing published for this version

  24. 30.0.0-alpha.412 May 2024pre-release

    Nothing published for this version

  25. 30.0.0-alpha.320 Feb 2024pre-release

    Nothing published for this version