jest v28.0.0 Release Notes

  • ๐Ÿ”‹ Features

    • [babel-jest] Export createTransformer function (#12399)
    • [expect] Expose AsymmetricMatchers, MatcherFunction and MatcherFunctionWithState interfaces (#12363, #12376)
    • ๐ŸŒฒ [jest-circus] Support error logging before retry (#12201)
    • โœ… [jest-circus, jest-jasmine2] Allowed classes and functions as describe and it/test names (#12484)
    • ๐Ÿ’ฅ [jest-cli, jest-config] [BREAKING] Remove testURL config, use testEnvironmentOptions.url instead (#10797)
    • โœ… [jest-cli, jest-core] Add --shard parameter for distributed parallel test execution (#12546)
    • ๐Ÿ’ฅ [jest-cli] [BREAKING] Remove undocumented --timers option (#12572)
    • ๐Ÿ’ฅ [jest-config] [BREAKING] Stop shipping jest-environment-jsdom by default (#12354)
    • ๐Ÿ’ฅ [jest-config] [BREAKING] Stop shipping jest-jasmine2 by default (#12355)
    • [jest-config, @jest/types] Add ci to GlobalConfig (#12378)
    • ๐Ÿ’ฅ [jest-config] [BREAKING] Rename moduleLoader to runtime (#10817)
    • ๐Ÿ’ฅ [jest-config] [BREAKING] Rename extraGlobals to sandboxInjectedGlobals (#10817)
    • ๐Ÿ’ฅ [jest-config] [BREAKING] Throw an error instead of showing a warning if multiple configs are used (#12510)
    • ๐Ÿ’ฅ [jest-config] [BREAKING] Do not normalize long deprecated configuration options preprocessorIgnorePatterns, scriptPreprocessor, setupTestFrameworkScriptFile and testPathDirs (#12701)
    • โœ… [jest-cli, jest-core] Add --ignoreProjects CLI argument to ignore test suites by project name (#12620)
    • [jest-core] Pass project config to globalSetup/globalTeardown function as second argument (#12440)
    • โœ… [jest-core] Stabilize test runners with event emitters (#12641)
    • ๐Ÿ’ฅ [jest-core, jest-watcher] [BREAKING] Move TestWatcher class to jest-watcher package (#12652)
    • [jest-core] Allow using Summary Reporter as stand-alone reporter (#12687)
    • ๐Ÿ’ฅ [jest-environment-jsdom] [BREAKING] Upgrade jsdom to 19.0.0 (#12290)
    • ๐Ÿ’ฅ [jest-environment-jsdom] [BREAKING] Add default browser condition to exportConditions for jsdom environment (#11924)
    • ๐Ÿ’ฅ [jest-environment-jsdom] [BREAKING] Pass global config to Jest environment constructor for jsdom environment (#12461)
    • ๐Ÿ’ฅ [jest-environment-jsdom] [BREAKING] Second argument context to constructor is mandatory (#12469)
    • ๐Ÿ’ฅ [jest-environment-node] [BREAKING] Add default node and node-addon conditions to exportConditions for node environment (#11924)
    • ๐Ÿ’ฅ [jest-environment-node] [BREAKING] Pass global config to Jest environment constructor for node environment (#12461)
    • ๐Ÿ’ฅ [jest-environment-node] [BREAKING] Second argument context to constructor is mandatory (#12469)
    • โœ… [jest-environment-node] Add all available globals to test globals, not just explicit ones (#12642, #12696)
    • [@jest/expect] New module which extends expect with jest-snapshot matchers (#12404, #12410, #12418)
    • [@jest/expect-utils] New module exporting utils for expect (#12323)
    • ๐Ÿ’ฅ [@jest/fake-timers] [BREAKING] Rename timers configuration option to fakeTimers (#12572)
    • ๐Ÿ’ฅ [@jest/fake-timers] [BREAKING] Allow jest.useFakeTimers() and projectConfig.fakeTimers to take an options bag (#12572)
    • ๐Ÿ’ฅ [jest-haste-map] [BREAKING] HasteMap.create now returns a promise (#12008)
    • ๐Ÿ‘ [jest-haste-map] Add support for dependencyExtractor written in ESM (#12008)
    • ๐Ÿ’ฅ [jest-mock] [BREAKING] Rename exported utility types ClassLike, FunctionLike, ConstructorLikeKeys, MethodLikeKeys, PropertyLikeKeys; remove exports of utility types ArgumentsOf, ArgsType, ConstructorArgumentsOf - TS builtin utility types ConstructorParameters and Parameters should be used instead (#12435, #12489)
    • ๐Ÿคก [jest-mock] Improve isMockFunction to infer types of passed function (#12442)
    • ๐Ÿ’ฅ [jest-mock] [BREAKING] Improve the usage of jest.fn generic type argument (#12489)
    • ๐Ÿคก [jest-mock] Add support for auto-mocking async generator functions (#11080)
    • ๐Ÿคก [jest-mock] Add contexts member to mock functions (#12601)
    • [@jest/reporters] Add GitHub Actions reporter (#11320, #12658)
    • [@jest/reporters] Pass reporterContext to custom reporter constructors as third argument (#12657)
    • ๐Ÿ’ฅ [jest-resolve] [BREAKING] Add support for package.json exports (#11961, #12373)
    • ๐Ÿ“ฆ [jest-resolve] Support package self-reference (#12682)
    • ๐Ÿคก [jest-resolve, jest-runtime] Add support for data: URI import and mock (#12392)
    • ๐Ÿ‘ [jest-resolve, jest-runtime] Add support for async resolver (#11540)
    • ๐Ÿ’ฅ [jest-resolve] [BREAKING] Remove browser?: boolean from resolver options, conditions: ['browser'] should be used instead (#12707)
    • ๐Ÿ“ฆ [jest-resolve] Expose JestResolver, AsyncResolver, SyncResolver, PackageFilter, PathFilter and PackageJSON types (#12707, (#12712)
    • [jest-runner] Allow setupFiles module to export an async function (#12042)
    • โœ… [jest-runner] Allow passing testEnvironmentOptions via docblocks (#12470)
    • โœ… [jest-runner] Expose CallbackTestRunner, EmittingTestRunner abstract classes and CallbackTestRunnerInterface, EmittingTestRunnerInterface to help typing third party runners (#12646, #12715)
    • ๐Ÿ”’ [jest-runner] Lock version of source-map-support to 0.5.13 (#12720)
    • ๐Ÿ’ฅ [jest-runtime] [BREAKING] Runtime.createHasteMap now returns a promise (#12008)
    • [jest-runtime] Calling jest.resetModules function will clear FS and transform cache (#12531)
    • ๐Ÿ’ฅ [jest-runtime] [BREAKING] Remove Context type export, it must be imported from @jest/test-result (#12685)
    • [jest-runtime] Add import.meta.jest (#12698)
    • [@jest/schemas] New module for JSON schemas for Jest's config (#12384)
    • [@jest/source-map] Migrate from source-map to @jridgewell/trace-mapping (#12692)
    • ๐Ÿ’ฅ [jest-transform] [BREAKING] Make it required for process() and processAsync() methods to always return structured data (#12638)
    • โœ… [jest-test-result] Add duration property to JSON test output (#12518)
    • ๐Ÿ’ฅ [jest-watcher] [BREAKING] Make PatternPrompt class to take entityName as third constructor parameter instead of this._entityName (#12591)
    • ๐Ÿ’ฅ [jest-worker] [BREAKING] Allow only absolute workerPath (#12343)
    • ๐Ÿ’ฅ [jest-worker] [BREAKING] Default to advanced serialization when using child process workers (#10983)
    • [pretty-format] New maxWidth parameter (#12402)

    ๐Ÿ›  Fixes

    • [*] Use sha256 instead of md5 as hashing algortihm for compatibility with FIPS systems (#12722)
    • ๐Ÿ’ฅ [babel-jest] [BREAKING] Pass rootDir as root in Babel's options (#12689)
    • ๐Ÿšš [expect] Move typings of .not, .rejects and .resolves modifiers outside of Matchers interface (#12346)
    • [expect] Throw useful error if expect.extend is called with invalid matchers (#12488)
    • [expect] Fix iterableEquality ignores other properties (#8359)
    • ๐Ÿ–จ [expect] Fix print for the closeTo matcher (#12626)
    • [jest-changed-files] Improve changedFilesWithAncestor pattern for Mercurial SCM (#12322)
    • โœ… [jest-circus, @jest/types] Disallow undefined value in TestContext type (#12507)
    • โšก๏ธ [jest-config] Correctly detect CI environment and update snapshots accordingly (#12378)
    • [jest-config] Pass moduleTypes to ts-node to enforce CJS when transpiling (#12397)
    • ๐Ÿ’ฅ [jest-config] [BREAKING] Add mjs and cjs to default moduleFileExtensions config (#12578)
    • โœ… [jest-config, jest-haste-map] Allow searching for tests in node_modules by exposing retainAllFiles (#11084)
    • ๐Ÿ’ฅ [jest-core] [BREAKING] Exit with status 1 if no tests are found with --findRelatedTests flag (#12487)
    • [jest-core] Do not report unref-ed subprocesses as open handles (#12705)
    • โœ… [jest-each] %# is not replaced with index of the test case (#12517)
    • ๐Ÿ›  [jest-each] Fixes error message with incorrect count of missing arguments (#12464)
    • [jest-environment-jsdom] Make jsdom accessible to extending environments again (#12232)
    • ๐ŸŒฒ [jest-environment-jsdom] Log JSDOM errors more cleanly (#12386)
    • [jest-environment-node] Add MessageChannel, MessageEvent to globals (#12553)
    • ๐Ÿ‘ฏ [jest-environment-node] Add structuredClone to globals (#12631)
    • ๐Ÿ’ฅ [@jest/expect-utils] [BREAKING] Fix false positives when looking for undefined prop (#8923)
    • [jest-haste-map] Don't use partial results if file crawl errors (#12420)
    • [jest-haste-map] Make watchman existence check lazy+async (#12675)
    • ๐Ÿ’ฅ [jest-jasmine2, jest-types] [BREAKING] Move all jasmine specific types from @jest/types to its own package (#12125)
    • โœ… [jest-jasmine2] Do not set duration to 0 for skipped tests (#12518)
    • 0๏ธโƒฃ [jest-matcher-utils] Pass maxWidth to pretty-format to avoid printing every element in arrays by default (#12402)
    • ๐Ÿคก [jest-mock] Fix function overloads for spyOn to allow more correct type inference in complex object (#12442)
    • ๐Ÿคก [jest-mock] Handle overridden Function.name property (#12674)
    • [@jest/reporters] Notifications generated by the --notify flag are no longer persistent in GNOME Shell. (#11733)
    • ๐Ÿšš [@jest/reporters] Move missing icon file which is needed for NotifyReporter class. (#12593)
    • โšก๏ธ [@jest/reporters] Update v8-to-istanbul (#12697)
    • [jest-resolver] Call custom resolver with core node.js modules (#12654)
    • ๐Ÿ‘ [jest-runner] Correctly resolve source-map-support (#12706)
    • ๐Ÿ‘ท [jest-worker] Fix Farm execution results memory leak (#12497)

    ๐Ÿšง Chore & Maintenance

    • [*] [BREAKING] Drop support for Node v10 and v15 and target first LTS 16.13.0 (#12220)
    • [*] [BREAKING] Drop support for [email protected], minimum version is now 4.3 (#11142, #12648)
    • [*] Bundle all .d.ts files into a single index.d.ts per module (#12345)
    • [*] Use globalThis instead of global (#12447)
    • ๐Ÿ’ฅ [babel-jest] [BREAKING] Only export createTransformer (#12407)
    • ๐Ÿ“„ [docs] Add note about not mixing done() with Promises (#11077)
    • โšก๏ธ [docs, examples] Update React examples to match with the new React guidelines for code examples (#12217)
    • ๐Ÿ“„ [docs] Add clarity for module factory hoisting limitations (#12453)
    • ๐Ÿ“„ [docs] Add more information about how code transformers work (#12407)
    • โฌ†๏ธ [docs] Add upgrading guide (#12633)
    • ๐Ÿ’ฅ [expect] [BREAKING] Remove support for importing build/utils (#12323)
    • ๐Ÿ’ฅ [expect] [BREAKING] Migrate to ESM (#12344)
    • ๐Ÿ’ฅ [expect] [BREAKING] Snapshot matcher types are moved to @jest/expect (#12404)
    • โšก๏ธ [jest-cli] Update yargs to v17 (#12357)
    • ๐Ÿ’ฅ [jest-config] [BREAKING] Remove getTestEnvironment export (#12353)
    • ๐Ÿ’ฅ [jest-config] [BREAKING] Rename config option name to id (#11981)
    • [jest-create-cache-key-function] Added README.md file with basic usage instructions (#12492)
    • [@jest/core] Use index.ts instead of jest.ts as main export (#12329)
    • ๐Ÿ’ฅ [jest-environment-jsdom] [BREAKING] Migrate to ESM (#12340)
    • ๐Ÿ’ฅ [jest-environment-node] [BREAKING] Migrate to ESM (#12340)
    • ๐Ÿšš [jest-haste-map] Remove legacy isRegExpSupported (#12676)
    • โšก๏ธ [@jest/fake-timers] Update @sinonjs/fake_timers to v9 (#12357)
    • ๐Ÿ’ฅ [jest-jasmine2, jest-runtime] [BREAKING] Use Symbol to pass jest.setTimeout value instead of jasmine specific logic (#12124)
    • ๐Ÿ’ฅ [jest-phabricator] [BREAKING] Migrate to ESM (#12341)
    • ๐Ÿ’ฅ [jest-resolve] [BREAKING] Make requireResolveFunction argument mandatory (#12353)
    • ๐Ÿ’ฅ [jest-runner] [BREAKING] Remove some type exports from @jest/test-result (#12353)
    • ๐Ÿ’ฅ [jest-runner] [BREAKING] Second argument to constructor (Context) is not optional (#12640)
    • ๐Ÿ’ฅ [jest-serializer] [BREAKING] Deprecate package in favour of using v8 APIs directly (#12391)
    • ๐Ÿ’ฅ [jest-snapshot] [BREAKING] Migrate to ESM (#12342)
    • โšก๏ธ [jest-transform] Update write-file-atomic to v4 (#12357)
    • ๐Ÿ’ฅ [jest-types] [BREAKING] Remove Config.Glob and Config.Path (#12406)
    • [jest] Use index.ts instead of jest.ts as main export (#12329)

    ๐ŸŽ Performance

    • ๐Ÿ’ฅ [jest-haste-map] [BREAKING] Default to node crawler over shelling out to find if watchman is not enabled (#12320)