🚨 Breaking Changes
spy.mockReset
changes - by @Lordfirespeed in #6426 (db7a8)- Pass down context to test hooks - by @sheremet-va in #7034 (82c2e)
- Support Vite 6 - by @sheremet-va in #7026 (7abe8)
- coverage: Always exclude test files - by @AriPerkkio in #7254 (b5268)
- deps: Update fake-timers to v14.0.0 - by @xxzefgh and @hi-ogawa in #7097 (c98b4)
- expect: Check more properties for error equality - by @hi-ogawa and @sheremet-va in #5876 (10023)
- runner: Support
describe(..., { shuffle: boolean })
and inherit from parent suite - by @hi-ogawa in #6670 (aa1da) - snapshot: Reset snapshot state for
retry
andrepeats
- by @hi-ogawa in #6817 (e8ce9) - spy: SpyOn reuses mock if method is already spyed on - by @sheremet-va and @hi-ogawa in #6464 (b3e43)
- vitest: Don't expose default toFake config - by @sheremet-va in #6288 (e3144)
🚀 Features
- Support inline
diff
options and supportprintBasicPrototype
- by @hi-ogawa, @sheremet-va and Michał Grzegorzewski in #6740 (39186) - Allow a custom note when calling
ctx.skip()
dynamically - by @sheremet-va in #6805 (697c3) - Allow inline workspace configuration - by @sheremet-va in #6923 (562e1)
- Provide the current project to the global setup - by @sheremet-va in #6942 (a5bbc)
- Print project name as a label - by @sheremet-va in #6925 (a3bef)
- Print a deprecation warning if suite or test uses object as the third argument - by @sheremet-va in #7031 (407f1)
- Expose versions from
vitest/node
entry point and statically on Vitest - by @sheremet-va in #7029 (be8d4) diff.printBasicPrototype: false
by default - by @hi-ogawa in #7043 (2b5c5)- Prepare the Vitest API to be stable - by @sheremet-va in #6962 (9a1b5)
- Support Vite v6 in mocker package - by @cexbrayat in #7058 (96f47)
- Allow multi-browser configuration - by @sheremet-va in #6975 (78b62)
- Add resolved project names to the reporter API - by @userquin in #7213 (91758)
- Introduce the new reporter API - by @sheremet-va and @AriPerkkio in #7069 (76662)
- Add
describe.for
- by @hi-ogawa in #7253 (0ad28) - api:
- Add onBrowserInit event - by @sheremet-va in #7255 (80ce0)
- browser:
- cli:
- coverage:
thresholds
to support maximum uncovered items - by @jonahkagan in #7061 (bde98)
- expect:
- Add
toHaveBeenCalledExactlyOnceWith
expect matcher - by @jacoberdman2147 and @sheremet-va in #6894 (ff662) - Add
toHaveBeenCalledAfter
andtoHaveBeenCalledBefore
utility - by @Barbapapazes and @sheremet-va in #6056 (85e6f) - Add
toSatisfy
asymmetric matcher - by @hi-ogawa in #7022 (f691a) - Add
toBeOneOf
matcher - by @zirkelc and @hi-ogawa in #6974 (3d742)
- Add
- reporter:
- Add support for function type to classname option in the junit reporter - by @jpleclerc, Jean-Philippe Leclerc and @hi-ogawa in #6839 (dc238)
- reporters:
summary
option forverbose
anddefault
reporters - by @AriPerkkio in #6893 (511b7)
- runner:
- Test context can inject values from the config's
provide
- by @sheremet-va in #6813 (85c64) - Add "queued" state - by @sheremet-va and @AriPerkkio in #6931 (5f8d2)
- Test context can inject values from the config's
- snapshot:
- ui:
- Allow run individual tests/suites from the UI - by @userquin in #6641 (d9cc8)
- Make clicking on a test in the UI open the report section and scroll to the test failure if applicable - by @jacoberdman2147 in #6900 (1bf27)
- Allow hide/show node_modules in module graph tab - by @userquin in #7217 (50cf6)
- vitest:
- Include
coverageMap
in json report - by @sheremet-va in #6606 (9c8f7) - Add
onTestsRerun
method to global setup context - by @sheremet-va in #6803 (e26e0)
- Include
🐞 Bug Fixes
- Misc fix for vite 6 ecosystem ci - by @hi-ogawa in #6867 (80f8b)
- Respect
cacheDir
when optimizer is enabled - by @hi-ogawa in #6910 (0b08b) - Reset runningPromise after
finally
in case there is an error to avoid it getting stuck - by @sheremet-va in #6951 (02194) - Revert support for Vite 6 - by @sheremet-va (fbe5c)
- Support Node 21 - by @sheremet-va (92f7a)
- Don't use
Custom
internally - by @sheremet-va (46fc5) - Don't use
Custom
internally" - by @sheremet-va (db19f) - Don't use
Custom
type internally - by @sheremet-va in #7032 (7957f) - Persist cli filters as watch mode file filter - by @hi-ogawa in #6955 (cc703)
- Don't use dim color for succeeded tests - by @sheremet-va in #7059 (8a6f5)
- Fix missing chai types - by @hi-ogawa in #7149 (6a09c)
cancelCurrentRun
awaitsrunningPromise
- by @sheremet-va in #7168 (1dbf5)- Add Locator typings for nth, first and last. - by @xeger in #7176 (d262e)
- Batch console logs by microtask - by @hi-ogawa in #7183 (53d1d)
- Allow
getMockImplementation
to return "once" implementation - by @chaptergy in #7033 (39125) capturePrintError
logger duplicate event handlers - by @hi-ogawa in #7197 (e89c3)- Allow slots in vitest-browser-vue - by @sheremet-va in #7120 (2319f)
- Reset root workspace project on restart - by @sheremet-va in #7238 (6e518)
- Cleanup
vitest/reporters
entrypoint - by @sheremet-va in #7241 (aec0b) - Colors on
forks
pool - by @AriPerkkio in #7090 (8cab9) - Export
VitestRunner
type fromvitest/runners
- by @sheremet-va in #7240 (9b218) - Return test fn result to runner - by @wmertens in #7239 (48645)
- Re-apply default conditions if using vite 6 or later - by @thebanjomatic, thebanjomatic and @hi-ogawa in #7071 (84287)
- Prevent infinite loop on prettyDOM calls - by @tsirlucas in #7250 (a3a46)
- api:
- Don't report events during
vitest list
- by @sheremet-va in #7257 (1c2b2)
- Don't report events during
- benchmark:
- Disable type testing while benchmarking - by @AriPerkkio in #7068 (4e603)
- Rewrite reporter without
log-update
- by @AriPerkkio in #7019 (6d23f)
- browser:
- Improve source maps when
vi.mock
is present - by @sheremet-va in #6810 (8d179) - Explain TypeScript support in docs and add asymmetric matchers to types - by @sheremet-va in #6934 (ac1a7)
- Fix matchers.d.ts - by @hi-ogawa in #6995 (a485b)
- Fix user event state on preview provider - by @hi-ogawa in #7041 (8e944)
- Fix provider options types - by @hi-ogawa in #7115 (579bd)
- Only use locator.element on last expect.element attempt - by @tsirlucas in #7139 and #7152 (847d3)
- Use correct project when filtering
entries
in the browser mode - by @sheremet-va in #7167 (423d6) - Fix
console.time
with fake timers - by @hi-ogawa in #7207 (903f3) - Add instance validation to resolve coverage error - by @DevJoaoLopes and @AriPerkkio in #7231 (1e791)
- Improve source maps when
- coverage:
- Exclude browser mode iframe results - by @AriPerkkio in #6905 (e04a1)
- Correct coverage when
isolate: false
is used - by @AriPerkkio in #6957 (426ce) - Prevent crash when v8 incorrectly merges static_initializer's - by @AriPerkkio in #7150 (cb6db)
- deps:
- diff:
- junit:
- Fix testsuites time to be sum of all testsuite items - by @saitonakamura in #6985 (ca37a)
- pretty-format:
- reporters:
- Write buffered stdout/stderr on process exit - by @AriPerkkio in #6932 (80cde)
- Rewrite
dot
reporter withoutlog-update
- by @AriPerkkio in #6943 (be969) - Check
--hideSkippedTests
in base reporter - by @AriPerkkio in #6988 (721a5) - Show
retry
andrepeats
counts - by @AriPerkkio and @hi-ogawa in #7004 (3496a)
- runner:
- Long synchronous tasks does not time out - by @ferdodo and @sheremet-va in #2920 and #6944 (2fb58)
- Mark tests of
describe.todo
as'todo'
- by @AriPerkkio in #7171 (1d458)
- snapshot:
- typecheck:
- types:
- Make parameters non-nullable for Playwright options - by @apple-yagi in #6989 (fe2a1)
- ui:
- vite-node:
- watch:
- Don't indicate exit when no matching files - by @sheremet-va and @AriPerkkio in #7246 (003c0)
- workspace:
extends: true
correctly inherits all root config properties - by @sheremet-va in #7232 (798c0)