Skip to content

27.0.0

Compare
Choose a tag to compare
@SimenB SimenB released this 25 May 08:18

Blog post

Features

  • [babel-jest] Add async transformation (#11192)
  • [jest-changed-files] Use '--' to separate paths from revisions (#11160)
  • [jest-circus] [BREAKING] Fail tests when multiple done() calls are made (#10624)
  • [jest-circus, jest-jasmine2] [BREAKING] Fail the test instead of just warning when describe returns a value (#10947)
  • [jest-config] [BREAKING] Default to Node testing environment instead of browser (JSDOM) (#9874)
  • [jest-config] [BREAKING] Use jest-circus as default test runner (#10686)
  • [jest-config] Add support for preset written in ESM (#11200)
  • [jest-config, jest-runtime] Support ESM for files other than .js and .mjs (#10823)
  • [jest-config, jest-runtime] [BREAKING] Use "modern" implementation as default for fake timers (#10874 & #11197)
  • [jest-config Allow passing forceNodeFilesystemAPI through to jest-haste-map (#11264)
  • [jest-config, jest-haste-map, jest-resolve, jest-runner, jest-runtime, jest-test-sequencer, jest-transform, jest-types] [BREAKING] Add custom HasteMap class implementation config option (#11107)
  • [jest-core] make TestWatcher extend emittery (#10324)
  • [jest-core] Run failed tests interactively the same way we do with snapshots (#10858)
  • [jest-core] more TestSequencer methods can be async (#10980)
  • [jest-core] Add support for testSequencer written in ESM (#11207)
  • [jest-core] Add support for globalSetup and globalTeardown written in ESM (#11267)
  • [jest-core] Add support for watchPlugins written in ESM (#11315)
  • [jest-core] Add support for runner written in ESM (#11232)
  • [jest-core] Add support for reporters written in ESM (#11427)
  • [jest-each] Add support for interpolation with object properties (#11388)
  • [jest-environment-node] Add AbortController to globals (#11182)
  • [@jest/fake-timers] Update to @sinonjs/fake-timers to v7 (#11198)
  • [jest-haste-map] Handle injected scm clocks (#10966)
  • [jest-haste-map] Add enableSymlinks configuration option to follow symlinks for test files (#9351)
  • [jest-repl, jest-runner] [BREAKING] Run transforms over environment (#8751)
  • [jest-repl] Add support for testEnvironment written in ESM (#11232)
  • [jest-runner] [BREAKING] set exit code to 1 if test logs after teardown (#10728)
  • [jest-runner] [BREAKING] Run transforms over runnner (#8823)
  • [jest-runner] [BREAKING] Run transforms over testRunnner (#8823)
  • [jest-runner] Possibility to use ESM for test environment (11033)
  • [jest-runner] Add support for testRunner written in ESM (#11232)
  • [jest-runtime] Detect reexports from CJS as named exports in ESM (#10988)
  • [jest-runtime] Support for async code transformations (#11191 & #11220)
  • [jest-reporters] Add static filepath property to all reporters (#11015)
  • [jest-snapshot] [BREAKING] Make prettier optional for inline snapshots - fall back to string replacement (#7792 & #11192)
  • [jest-snapshot] [BREAKING] Run transforms over snapshotResolver (#8751)
  • [jest-transform] Pass config options defined in Jest's config to transformer's process and getCacheKey functions (#10926)
  • [jest-transform] Add support for transformers written in ESM (#11163)
  • [jest-transform] [BREAKING] Do not export ScriptTransformer class, instead export the async function createScriptTransformer (#11163)
  • [jest-transform] Async code transformations (#9889)
  • [jest-transform] Support transpiled transformers (#11193)
  • [jest-transform] [BREAKING] requireAndTranspileModule always return a Promise, and the third parameter type is changed to RequireAndTranspileModuleOptions which accept applyInteropRequireDefault option (#11232)
  • [jest-transform] [BREAKING] createTranspilingRequire return function which return a Promise now (#11232)
  • [jest-util] add requireOrImportModule for importing CJS or ESM (#11199)
  • [jest-util] add applyInteropRequireDefault option on requireOrImportModule (#11232)
  • [jest-watcher] Added support for clearing the line when <C-u> is pressed in a watch mode pattern prompt (#11358)
  • [jest-worker] Add support for custom task queues and adds a PriorityQueue implementation. (#10921)
  • [jest-worker] Add in-order scheduling policy to jest worker (10902)
  • [pretty-format] Better print for sparse arrays (11326)
  • [pretty-print] Add option printBasicPrototype which determines whether or not the prototype should be printed for raw objects or arrays (#11441)

Fixes

  • [babel-plugin-jest-hoist] Add __dirname and __filename to whitelisted globals (#10903)
  • [expect] [BREAKING] Revise expect.not.objectContaining() to be the inverse of expect.objectContaining(), as documented. (#10708)
  • [expect] [BREAKING] Make toContain more strict with the received type (#10119 & #10929)
  • [expect] [BREAKING] matcherResult on JestAssertionError are now strings rather than functions (#10989)
  • [jest-circus] Fixed the issue of beforeAll & afterAll hooks getting executed even if it is inside a skipped describe block #10451
  • [jest-circus] Fix testLocation on Windows when using test.each (#10871)
  • [jest-cli] Use testFailureExitCode when bailing from a failed test (#10958)
  • [jest-cli] Print custom error if error thrown from global hooks is not an error already (#11003)
  • [jest-cli] Allow running multiple "projects" from programmatic API (#11307)
  • [jest-cli] Fix missing collectCoverage after init (#11353)
  • [jest-cli, jest-config, jest-types] Move all default values into jest-config (#9924)
  • [jest-config] [BREAKING] Change default file extension order by moving json behind ts and tsx (10572)
  • [jest-console] console.dir now respects the second argument correctly (#10638)
  • [jest-core] Don't report PerformanceObserver as open handle (#11123)
  • [jest-core] Use WeakRef to hold timers when detecting open handles (#11277)
  • [jest-core] Correctly detect open handles that were created in test functions using done callbacks (#11382)
  • [jest-core] Do not collect RANDOMBYTESREQUEST as open handles (#11278)
  • [jest-core] Wait briefly for open handles to close before flagging them when using --detectOpenHandles (#11429)
  • [jest-diff] [BREAKING] Use only named exports (#11371)
  • [jest-each] [BREAKING] Ignore excess words in headings (#8766)
  • [jest-each] Support array index with template strings (#10763)
  • [jest-each] Interpolate %% correctly (#11364)
  • [jest-each] Fix wrong interpolation when the value of array contains multiple % (#11364)
  • [jest-environment] [BREAKING] Drop support for runScript for test environments (#11155)
  • [jest-environment-jsdom] Use inner realm’s ArrayBuffer constructor (#10885)
  • [jest-environment-jsdom] [BREAKING] Remove Node globals setImmediate and clearImmediate #11222
  • [jest-get-type] [BREAKING] Convert to ES Module (#11359)
  • [jest-globals] [BREAKING] Disallow return values other than a Promise from hooks and tests (#10512)
  • [jest-globals] [BREAKING] Disallow mixing a done callback and returning a Promise from hooks and tests (#10512)
  • [jest-haste-map] Vendor NodeWatcher from sane (#10919)
  • [jest-jasmine2] Fixed the issue of beforeAll & afterAll hooks getting executed even if it is inside a skipped describe block when it has child tests marked as either only or todo #10451
  • [jest-jasmine2] Fixed the issues of child tests marked with only or todo getting executed even if it is inside a skipped parent describe block #10451
  • [jest-jasmine2] Wrap all test functions so they open handles that were created in test functions using done callbacks can be detected (#11382)
  • [jest-reporter] Handle empty files when reporting code coverage with V8 (#10819)
  • [jest-resolve] Replace read-pkg-up with escalade package (#10781)
  • [jest-resolve] Disable jest-pnp-resolver for Yarn 2 (#10847)
  • [jest-runtime] [BREAKING] Do not inject global variable into module wrapper (#10644)
  • [jest-runtime] [BREAKING] remove long-deprecated jest.addMatchers, jest.resetModuleRegistry, and jest.runTimersToTime (#9853)
  • [jest-runtime] Fix stack overflow and promise deadlock when importing mutual dependant ES module (#10892)
  • [jest-runtime] Prevent global module registry from leaking into isolateModules registry (#10963)
  • [jest-runtime] Refactor to prevent race condition when linking and evaluating ES Modules (#11150)
  • [jest-runtime] Throw correct error when attempting to load ESM via require (#11260)
  • [jest-runtime] Do not cache modules that throw during evaluation (#11263)
  • [jest-transform] Show enhanced SyntaxError message for all SyntaxErrors (#10749)
  • [jest-transform] [BREAKING] Refactor API to pass an options bag around rather than multiple boolean options (#10753)
  • [jest-transform] [BREAKING] Refactor API of transformers to pass an options bag rather than separate config and other options (#10834)
  • [jest-types] Fix Config.ts projects types (#11285)
  • [jest-util] Replace micromatch with picomatch to fix issues with negated globs (#11287)
  • [jest-validate] Use en-US locale to avoid case conversion problems while validating CLI options on machines with some certain locales(e.g. Turkish) set as default locale. (#11412)
  • [jest-worker] [BREAKING] Use named exports (#10623)
  • [jest-worker] Do not swallow errors during serialization (#10984)
  • [jest-worker] Handle ERR_IPC_CHANNEL_CLOSED errors properly (#11143)
  • [pretty-format] [BREAKING] Convert to ES Modules (#10515)
  • [pretty-format] Only call hasAttribute if it's a function (#11000)
  • [pretty-format] Handle jsdom attributes properly (#11189)
  • [pretty-format] Import pretty-format using named imports (#11360)

Chore & Maintenance

  • [*] [BREAKING] Only support Node LTS releases and Node 15 (#10685)
  • [*] [BREAKING] Add exports field to all package.jsons (#9921)
  • [*] Make it easier for Jest's packages to use the VM escape hatch (#10824)
  • [*] [BREAKING] Remove deprecated mapCoverage (#9968)
  • [babel-jest] [BREAKING] Migrate to ESM (#11193)
  • [docs] Correct example using browser-resolve (#11140)
  • [docs] Clarify timers configuration property (#11376)
  • [jest, jest-core] [BREAKING] Replace TestScheduler export with createTestScheduler (#11427)
  • [jest-config] [BREAKING] Remove enabledTestsMap config, use filter instead (#10787)
  • [jest-console] [BREAKING] Move root into config and take GlobalConfig as mandatory parameter for getConsoleOutput (#10126)
  • [jest-console] Export LogEntry (#11017)
  • [jest-fake-timers] Clarify global behavior of jest.useFakeTimers and jest.useRealTimers (#10867)
  • [jest-haste-map] [BREAKING] Migrate to ESM (#10875)
  • [jest-haste-map] [BREAKING] Remove support for deprecated option ignorePattern as function (#10348)
  • [jest-jasmine2] [BREAKING] Migrate to ESM (#10906)
  • [jest-jasmine2] [BREAKING] Remove unused options argument from Env constructor (#10240)
  • [jest-repl, jest-runtime] [BREAKING] Move the jest-runtime CLI into jest-repl (#10016 & #10925)
  • [jest-resolve] [BREAKING] Migrate to ESM (#10688)
  • [jest-resolve-dependencies] [BREAKING] Migrate to ESM (#10876)
  • [jest-mock] [BREAKING] Migrate to ESM (#10887)
  • [jest-reporters] [BREAKING] Make node-notifier a peer dependency (#10977)
  • [jest-resolve, jest-runtime] [BREAKING] Use Maps instead of objects for all cached resources (#10968)
  • [jest-runner] [BREAKING] Migrate to ESM (#10900)
  • [jest-runtime] [BREAKING] Remove deprecated and unused getSourceMapInfo from Runtime (#9969)
  • [jest-transformer] [BREAKING] Remove unused isCoreModule option (#11166)
  • [jest-util] No longer checking enumerable when adding process.domain (#10862)
  • [jest-validate] [BREAKING] Remove recursiveBlacklist option in favor of previously introduced recursiveDenylist (#10650)
  • [website] Replace 'Github' with 'GitHub' (#11279)
  • [website] Remove a language code from the link to the Node.js website (#11282)
  • [website] Remove a duplicated word (#11281)
  • [website] Add french to website (#11361)

Performance

  • [jest-resolve] Cache reading and parsing of package.jsons (#11076)
  • [jest-runtime, jest-transform] share cacheFS between runtime and transformer (#10901)
  • [jest-runtime] Load chalk only once per worker (#10864)
  • [jest-worker] Fix memory leak of previous task arguments while no new task is scheduled (#11187)