Blog post: https://jestjs.io/blog/2022/04/25/jest-28
Features
[babel-jest]
ExportcreateTransformer
function (#12399)[expect]
ExposeAsymmetricMatchers
,MatcherFunction
andMatcherFunctionWithState
interfaces (#12363, #12376)[jest-circus]
Support error logging before retry (#12201)[jest-circus, jest-jasmine2]
Allowed classes and functions asdescribe
andit
/test
names (#12484)[jest-cli, jest-config]
[BREAKING] RemovetestURL
config, usetestEnvironmentOptions.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 shippingjest-environment-jsdom
by default (#12354)[jest-config]
[BREAKING] Stop shippingjest-jasmine2
by default (#12355)[jest-config, @jest/types]
Addci
toGlobalConfig
(#12378)[jest-config]
[BREAKING] RenamemoduleLoader
toruntime
(#10817)[jest-config]
[BREAKING] RenameextraGlobals
tosandboxInjectedGlobals
(#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 optionspreprocessorIgnorePatterns
,scriptPreprocessor
,setupTestFrameworkScriptFile
andtestPathDirs
(#12701)[jest-cli, jest-core]
Add--ignoreProjects
CLI argument to ignore test suites by project name (#12620)[jest-core]
Pass project config toglobalSetup
/globalTeardown
function as second argument (#12440)[jest-core]
Stabilize test runners with event emitters (#12641)[jest-core, jest-watcher]
[BREAKING] MoveTestWatcher
class tojest-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 defaultbrowser
condition toexportConditions
forjsdom
environment (#11924)[jest-environment-jsdom]
[BREAKING] Pass global config to Jest environment constructor forjsdom
environment (#12461)[jest-environment-jsdom]
[BREAKING] Second argumentcontext
to constructor is mandatory (#12469)[jest-environment-node]
[BREAKING] Add defaultnode
andnode-addon
conditions toexportConditions
fornode
environment (#11924)[jest-environment-node]
[BREAKING] Pass global config to Jest environment constructor fornode
environment (#12461)[jest-environment-node]
[BREAKING] Second argumentcontext
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 extendsexpect
withjest-snapshot
matchers (#12404, #12410, #12418)[@jest/expect-utils]
New module exporting utils forexpect
(#12323)[@jest/fake-timers]
[BREAKING] Renametimers
configuration option tofakeTimers
(#12572)[@jest/fake-timers]
[BREAKING] Allowjest.useFakeTimers()
andprojectConfig.fakeTimers
to take an options bag (#12572)[jest-haste-map]
[BREAKING]HasteMap.create
now returns a promise (#12008)[jest-haste-map]
Add support fordependencyExtractor
written in ESM (#12008)[jest-mock]
[BREAKING] Rename exported utility typesClassLike
,FunctionLike
,ConstructorLikeKeys
,MethodLikeKeys
,PropertyLikeKeys
; remove exports of utility typesArgumentsOf
,ArgsType
,ConstructorArgumentsOf
- TS builtin utility typesConstructorParameters
andParameters
should be used instead (#12435, #12489)[jest-mock]
ImproveisMockFunction
to infer types of passed function (#12442)[jest-mock]
[BREAKING] Improve the usage ofjest.fn
generic type argument (#12489)[jest-mock]
Add support for auto-mocking async generator functions (#11080)[jest-mock]
Addcontexts
member to mock functions (#12601)[@jest/reporters]
Add GitHub Actions reporter (#11320, #12658)[@jest/reporters]
PassreporterContext
to custom reporter constructors as third argument (#12657)[jest-resolve]
[BREAKING] Add support forpackage.json
exports
(#11961, #12373)[jest-resolve]
Support package self-reference (#12682)[jest-resolve, jest-runtime]
Add support fordata:
URI import and mock (#12392)[jest-resolve, jest-runtime]
Add support for async resolver (#11540)[jest-resolve]
[BREAKING] Removebrowser?: boolean
from resolver options,conditions: ['browser']
should be used instead (#12707)[jest-resolve]
ExposeJestResolver
,AsyncResolver
,SyncResolver
,PackageFilter
,PathFilter
andPackageJSON
types (#12707, (#12712)[jest-runner]
AllowsetupFiles
module to export an async function (#12042)[jest-runner]
Allow passingtestEnvironmentOptions
via docblocks (#12470)[jest-runner]
ExposeCallbackTestRunner
,EmittingTestRunner
abstract classes andCallbackTestRunnerInterface
,EmittingTestRunnerInterface
to help typing third party runners (#12646, #12715)[jest-runner]
Lock version ofsource-map-support
to 0.5.13 (#12720)[jest-runtime]
[BREAKING]Runtime.createHasteMap
now returns a promise (#12008)[jest-runtime]
Callingjest.resetModules
function will clear FS and transform cache (#12531)[jest-runtime]
[BREAKING] RemoveContext
type export, it must be imported from@jest/test-result
(#12685)[jest-runtime]
Addimport.meta.jest
(#12698)[@jest/schemas]
New module for JSON schemas for Jest's config (#12384)[@jest/source-map]
Migrate fromsource-map
to@jridgewell/trace-mapping
(#12692)[jest-transform]
[BREAKING] Make it required forprocess()
andprocessAsync()
methods to always return structured data (#12638)[jest-test-result]
Add duration property to JSON test output (#12518)[jest-watcher]
[BREAKING] MakePatternPrompt
class to takeentityName
as third constructor parameter instead ofthis._entityName
(#12591)[jest-worker]
[BREAKING] Allow only absoluteworkerPath
(#12343)[jest-worker]
[BREAKING] Default to advanced serialization when using child process workers (#10983)[pretty-format]
NewmaxWidth
parameter (#12402)
Fixes
[*]
Usesha256
instead ofmd5
as hashing algortihm for compatibility with FIPS systems (#12722)[babel-jest]
[BREAKING] PassrootDir
asroot
in Babel's options (#12689)[expect]
Move typings of.not
,.rejects
and.resolves
modifiers outside ofMatchers
interface (#12346)[expect]
Throw useful error ifexpect.extend
is called with invalid matchers (#12488)[expect]
FixiterableEquality
ignores other properties (#8359)[expect]
Fix print for thecloseTo
matcher (#12626)[jest-changed-files]
ImprovechangedFilesWithAncestor
pattern for Mercurial SCM (#12322)[jest-circus, @jest/types]
Disallow undefined value inTestContext
type (#12507)[jest-config]
Correctly detect CI environment and update snapshots accordingly (#12378)[jest-config]
PassmoduleTypes
tots-node
to enforce CJS when transpiling (#12397)[jest-config]
[BREAKING] Addmjs
andcjs
to defaultmoduleFileExtensions
config (#12578)[jest-config, jest-haste-map]
Allow searching for tests innode_modules
by exposingretainAllFiles
(#11084)[jest-core]
[BREAKING] Exit with status1
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]
Makejsdom
accessible to extending environments again (#12232)[jest-environment-jsdom]
Log JSDOM errors more cleanly (#12386)[jest-environment-node]
AddMessageChannel
,MessageEvent
to globals (#12553)[jest-environment-node]
AddstructuredClone
to globals (#12631)[@jest/expect-utils]
[BREAKING] Fix false positives when looking forundefined
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 alljasmine
specific types from@jest/types
to its own package (#12125)[jest-jasmine2]
Do not setduration
to0
for skipped tests (#12518)[jest-matcher-utils]
Pass maxWidth topretty-format
to avoid printing every element in arrays by default (#12402)[jest-mock]
Fix function overloads forspyOn
to allow more correct type inference in complex object (#12442)[jest-mock]
Handle overriddenFunction.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 forNotifyReporter
class. (#12593)[@jest/reporters]
Updatev8-to-istanbul
(#12697)[jest-resolver]
Call custom resolver with core node.js modules (#12654)[jest-runner]
Correctly resolvesource-map-support
(#12706)[jest-worker]
FixFarm
execution results memory leak (#12497)
Chore & Maintenance
[*]
[BREAKING] Drop support for Node v10 and v15 and target first LTS16.13.0
(#12220)[*]
[BREAKING] Drop support fortypescript@3.8
, minimum version is now4.3
(#11142, #12648)[*]
Bundle all.d.ts
files into a singleindex.d.ts
per module (#12345)[*]
UseglobalThis
instead ofglobal
(#12447)[babel-jest]
[BREAKING] Only exportcreateTransformer
(#12407)[docs]
Add note about not mixingdone()
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 importingbuild/utils
(#12323)[expect]
[BREAKING] Migrate to ESM (#12344)[expect]
[BREAKING] Snapshot matcher types are moved to@jest/expect
(#12404)[jest-cli]
Updateyargs
to v17 (#12357)[jest-config]
[BREAKING] RemovegetTestEnvironment
export (#12353)[jest-config]
[BREAKING] Rename config optionname
toid
(#11981)[jest-create-cache-key-function]
Added README.md file with basic usage instructions (#12492)[@jest/core]
Useindex.ts
instead ofjest.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 legacyisRegExpSupported
(#12676)[@jest/fake-timers]
Update@sinonjs/fake_timers
to v9 (#12357)[jest-jasmine2, jest-runtime]
[BREAKING] UseSymbol
to passjest.setTimeout
value instead ofjasmine
specific logic (#12124)[jest-phabricator]
[BREAKING] Migrate to ESM (#12341)[jest-resolve]
[BREAKING] MakerequireResolveFunction
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 usingv8
APIs directly (#12391)[jest-snapshot]
[BREAKING] Migrate to ESM (#12342)[jest-transform]
Updatewrite-file-atomic
to v4 (#12357)[jest-types]
[BREAKING] RemoveConfig.Glob
andConfig.Path
(#12406)[jest]
Useindex.ts
instead ofjest.ts
as main export (#12329)
Performance
[jest-haste-map]
[BREAKING] Default tonode
crawler over shelling out tofind
ifwatchman
is not enabled (#12320)
New Contributors
- @marcelltoth made their first contribution in #12290
- @soryy708 made their first contribution in #12010
- @dmitryvinn-fb made their first contribution in #12379
- @cola119 made their first contribution in #12375
- @holylander made their first contribution in #12257
- @jsjoeio made their first contribution in #11077
- @tbossi made their first contribution in #12392
- @ryanwilsonperkin made their first contribution in #12402
- @yesmeck made their first contribution in #12408
- @benblank made their first contribution in #12441
- @john-u made their first contribution in #12453
- @cjr125 made their first contribution in #11084
- @davidjgoss made their first contribution in #11566
- @SixTfour made their first contribution in #8923
- @aditya04848 made their first contribution in #12385
- @rick-shar-ww made their first contribution in #8333
- @shooit made their first contribution in #11080
- @d7my11 made their first contribution in #8359
- @BudgieInWA made their first contribution in #11733
- @IIIEII made their first contribution in #12497
- @mhnaeem made their first contribution in #12492
- @adrianbienias made their first contribution in #12501
- @TrickyPi made their first contribution in #12510
- @F3n67u made their first contribution in #12517
- @dmitryvinn made their first contribution in #12532
- @brandon-leapyear made their first contribution in #12526
- @marionebl made their first contribution in #12546
- @matthias-ccri made their first contribution in #12601
- @Kaiguang made their first contribution in #12616
- @ockham made their first contribution in #11320
- @msonnberger made their first contribution in #12608
- @nate-io made their first contribution in #12607
- @fatso83 made their first contribution in #12407
- @Araxeus made their first contribution in #12631
- @Udit-takkar made their first contribution in #11981
- @ChocolateLoverRaj made their first contribution in #12654
- @adi611 made their first contribution in #12555
- @fisker made their first contribution in #12653
- @flakolefluk made their first contribution in #12464
- @L4vlet made their first contribution in #12626
- @Gerrit0 made their first contribution in #12612
- @robhogan made their first contribution in #12676
- @wrslatz made their first contribution in #12693
- @katlim-br made their first contribution in #12702
- @zackasaurus made their first contribution in #12201
- @darmbrust made their first contribution in #12722
- @Ash-KODES made their first contribution in #12565
Full Changelog: v27.5.1...v28.0.0