Releases: vitest-dev/vitest
Releases · vitest-dev/vitest
v2.1.3
🐞 Bug Fixes
- Fix error diff of
toBeNaN, toBeUndefined, toBeNull, toBeTruthy, toBeFalsy
- by @hi-ogawa in #6697 (e0027) - browser:
- Provide aria role intellisense - by @sheremet-va in #6629 (f36ea)
- Not.toBeInTheDocument works with locators API - by @sheremet-va in #6634 (8bef5)
- Use
/mockServiceWorker.js
instead of/__vitest_msw__
- by @sheremet-va in #6687 (4b2ce) - Don't override the esbuild option in the browser mode - by @sheremet-va in #6692 (d131f)
- expect:
- mocker:
- Specify correct spy dependency - by @sheremet-va (7e958)
- runner:
- vitest:
- Deprecate UserConfig in favor of ViteUserConfig - by @sheremet-va in #6626 (496bd)
- Don't hang with maxConcurrency 0 - by @sheremet-va in #6627 (946d8)
- Deprecate old task types and node-reliant types - by @sheremet-va in #6632 (00045)
- Fix
<empty line>
logs when interleavingconsole.log/error
- by @hi-ogawa in #6644 (9ece3) - Show rollup error details as test error - by @hi-ogawa in #6686 (47dde)
- Always inline setup files - by @sheremet-va in #6689 (19d64)
- Use
fast-glob
instead oftinyglobby
in Vitest - by @sheremet-va in #6688 (70baa)
- web-worker:
🏎 Performance
- Reuse full name in reported tasks, update generator types - by @sheremet-va in #6666 (7a0de)
View changes on GitHub
v2.1.2
🐞 Bug Fixes
- Move
Vitest.setServer
to postconfigureServer
hook to enable import analysis for workspace config loading - by @hi-ogawa in #6584 (e7f35) - benchmark:
- Clear
BenchmarkResult.samples
array to reduce memory usage - by @hi-ogawa and @AriPerkkio in #6541 (a6407)
- Clear
- browser:
- Fix dynamic import inside worker - by @hi-ogawa in #6569 (ea2d4)
- Fix browser mock factory event race condition - by @hi-ogawa in #6530 (f131f)
- Serve ui assets as static - by @hi-ogawa in #6564 (adcda)
- Update solidjs testing library lib - by @CamilleTeruel in #6548 (91442)
- Use
data:
protocol on preview provider file upload - by @userquin in #6501 (e9821) - Fix base for client script - by @hi-ogawa in #6510 (f9528)
- Throw an error if "@vitest/browser/context" is imported outside of the browser mode - by @sheremet-va in #6570 (383f1)
- coverage:
- Remove empty coverage folder on test failure too - by @AriPerkkio in #6547 (1371c)
- Include
*.astro
by default - by @AriPerkkio in #6565 (f8ff7) cleanOnRerun: false
to invalidate previous results - by @AriPerkkio in #6592 (88bde)
- expect:
- forks:
- Fix
--cpu-prof
and--heap-prof
not working by default - by @AriPerkkio in #6555 (2e4d894)
- Fix
- runner:
- Mark tests as skipped when
beforeAll
failed - by @hi-ogawa in #6524 (fb797) - Support fixture parsing of lowered async syntax - by @hi-ogawa in #6531 (b553c)
- Fix fixture parsing of lowered async syntax for non arrow functions - by @hi-ogawa in #6575 (3de00)
- Guard test hook callback - by @sheremet-va in #6604 (14971)
- Run
onTestFinished
andonTestFailed
duringretry
andrepeats
- by @hi-ogawa in #6609 (c5e29)
- Mark tests as skipped when
- ui:
- vite-node:
- vitest:
- Install dependencies with the same version when prompted - by @sheremet-va in #6611 (ed8b7)
- Make env.SSR consistent between different pools - by @sheremet-va in #6616 (8a8d3)
- Don't start a websocket server if api is disabled - by @sheremet-va in #6617 (82140)
- workspace:
View changes on GitHub
v2.1.1
🐞 Bug Fixes
- browser:
- workspace:
- Resolve glob pattern once to avoid name collision - by @sheremet-va in #6489 (36b5a)
View changes on GitHub
v2.1.0
This release makes another big change to the Browser Mode by introducing locators API:
test('renders blog posts', async () => {
const screen = page.render(<Blog />)
await expect.element(screen.getByRole('heading', { name: 'Blog' })).toBeInTheDocument()
const [firstPost] = screen.getByRole('listitem').all()
await firstPost.getByRole('button', { name: 'Delete' }).click()
expect(screen.getByRole('listitem').all()).toHaveLength(3)
})
You can use either vitest-browser-vue, vitest-browser-svelte or vitest-browser-react to render components and make assertions using locators. Locators are also available on the page
object from @vitest/browser/context
.
Potential Breaking Change
- workspace:
- Correctly resolve workspace globs and file paths - by @sheremet-va in #6316 (afdcb)
- This changes how the custom glob pattern in the workspace config is treated. Any file matching the glob is considered a Vitest config file. Any folder matching the glob pattern is treated as a workspace project and is subject to the regular config resolution (single
vitest.config.ts
orvite.config.ts
inside the folder) - For example,
projects/*
will match anything inside theprojects
folder. If it's a folder, we try to find the config inside that folder (if there is none, it is still treated as a project with the default config). If it's a file, it will be treated as a Vitest config.projects/**/*
previously would assume that you only wanted to have folders as projects, but now it will match every single file insideprojects
. - This change doesn't affect non-glob usage.
🚀 Features
- api:
- Make spec into a class instead of a tuple - by @sheremet-va in #6355 (874a1)
- browser:
- Move page.config to server.config, add more docs - by @sheremet-va in #6252 (af2b8)
- Make iframe scalable, improve documentation - by @sheremet-va in #6257 (74ca1)
- Introduce built-in locators - by @sheremet-va in #6084 (3347f)
- Support v8 coverage - by @AriPerkkio in #6273 (34199)
- Support
userEvent.upload
in playwright provider - by @sheremet-va in #6442 (cf148) - Support
--inspect
- by @AriPerkkio in #6433 (0499a) - Support
--inspect-brk
- by @AriPerkkio in #6434 (7ab0f)
- cli:
- Extend existing list command to output only a list of file names - by @Ma-hawaj and @sheremet-va in #6392 (008f0)
- coverage:
- Add
--exclude-after-remap
- by @AriPerkkio in #6309 (5932a)
- Add
- mocker:
- Introduce @vitest/mocker package, allow
{ spy: true }
instead of a factory - by @sheremet-va in #6289 (95f02)
- Introduce @vitest/mocker package, allow
- vitest:
- Add "provide" option - by @sheremet-va in #6253 (4409d)
- Add return type and promisable mockFactory - by @syi0808 and @sheremet-va in #6139 (f5e0b)
- Add
vi.advanceTimersToNextFrame
- by @bnjm and @sheremet-va in #6347 (8ff63) - Allow env to be stubbed to undefined - by @JSanchezIO and @sheremet-va in #6359 (c3b27)
- Migrate from
fast-glob
totinyglobby
- by @SuperchupuDev in #6274 (c321a)
🐞 Bug Fixes
- Correctly resolve nested mocks with
index
file - by @sheremet-va in #6266 (081cf) - Don't panic when coverage.reporter is a string - by @sheremet-va in #6267 (7b37d)
- Align RawMatcherFn type definition with Jest - by @wheresrhys in #6351 (d09f0)
- Cjs build of vite node server - by @AkaraChen in #6389 (12e70)
- Allow inlining vite's cached dependencies - by @chriswheeldon-peakon in #6284 (03208)
- Print unexpected error message if peer dependencies have a different version - by @sheremet-va in #6446 (b992b)
- Ignore importer when resolving Vitest - by @sheremet-va in #6469 (0b447)
expect.getState().testPath
always returns correct path - by @sheremet-va in #6472 (ac698)- UserEvent works consistently between providers - by @sheremet-va in #6480 (0b4da)
- browser:
- Print correct stack trace for unhandled errors - by @sheremet-va in #6134 (1da6c)
- Use documentElement as the root for selector - by @sheremet-va (d8077)
- Keep querying elements even if locator is created with elementLocator, add pubic @vitest/browser/utils - by @sheremet-va in #6296 (30dc5)
- Produce valid config file if preview provider is used - by @sheremet-va in #6305 (7f0ae)
- Correctly run in-source tests in the browser - by @sheremet-va in #6440 (c8531)
- Exclude missed packages from optimization, print help message - by @sheremet-va in #6445 (8d883)
- Define mocker as a dependency - by @sheremet-va in #6476 (9560a)
- coverage:
- Warn if
vitest
and@vitest/*
versions don't match - by @AriPerkkio in #6317 (e662c) - V8 to support source maps with multiple sources - by @AriPerkkio and @sheremet-va in #6120 (1f6cb)
- V8 to warn instead of crash when conversion fails - by @AriPerkkio in #6318 (91dea)
- Use project specific
vitenode
for uncovered files - by @AriPerkkio in #6044 (da52d)
- Warn if
- runner:
v2.1.0-beta.7
🚀 Features
- browser:
- Support
userEvent.upload
in playwright provider - by @sheremet-va in #6442 (cf148) - Support
--inspect
- by @AriPerkkio in #6433 (0499a) - Support
--inspect-brk
- by @AriPerkkio in #6434 (7ab0f)
- Support
- cli:
- Extend existing list command to output only a list of file names - by @Ma-hawaj and @sheremet-va in #6392 (008f0)
- mocker:
- Introduce @vitest/mocker package, allow
{ spy: true }
instead of a factory - by @sheremet-va in #6289 (95f02)
- Introduce @vitest/mocker package, allow
- vitest:
- Allow env to be stubbed to undefined - by @JSanchezIO and @sheremet-va in #6359 (c3b27)
🐞 Bug Fixes
- Cjs build of vite node server - by @AkaraChen in #6389 (12e70)
- Allow inlining vite's cached dependencies - by @chriswheeldon-peakon in #6284 (03208)
- Print unexpected error message if peer dependencies have a different version - by @sheremet-va in #6446 (b992b)
- Ignore importer when resolving Vitest - by @sheremet-va in #6469 (0b447)
- browser:
- Correctly run in-source tests in the browser - by @sheremet-va in #6440 (c8531)
- Exclude missed packages from optimization, print help message - by @sheremet-va in #6445 (8d883)
- runner:
- types:
- ui:
- Remove "filters" flickering - by @sheremet-va in #6463 (0223b)
- vite-node:
- vitest:
- Dispose vmForks listeners to avoid memory leak - by @sheremet-va in #6448 (2673c)
View changes on GitHub
v2.1.0-beta.6
🚀 Features
- api:
- Make spec into a class instead of a tuple - by @sheremet-va in #6355 (874a1)
- browser:
- Support v8 coverage - by @AriPerkkio in #6273 (34199)
- coverage:
- Add
--exclude-after-remap
- by @AriPerkkio in #6309 (5932a)
- Add
- vitest:
- Add return type and promisable mockFactory - by @syi0808 and @sheremet-va in #6139 (f5e0b)
- Add
vi.advanceTimersToNextFrame
- by @bnjm and @sheremet-va in #6347 (8ff63)
🐞 Bug Fixes
- Align RawMatcherFn type definition with Jest - by @wheresrhys in #6351 (d09f0)
- coverage:
- Use project specific
vitenode
for uncovered files - by @AriPerkkio in #6044 (da52d)
- Use project specific
- snapshot:
- typecheck:
- Run both runtime and typecheck tests if
typecheck.include
overlaps withinclude
- by @sheremet-va in #6256 (153ff)
- Run both runtime and typecheck tests if
- vitest:
- Always resolve vitest to the root version - by @sheremet-va in #6369 (163d7)
- workspace:
- Correctly resolve workspace globs and file paths - by @sheremet-va in #6316 (afdcb)
View changes on GitHub
v2.1.0-beta.5
🚀 Features
- vitest: Add "provide" option - by @sheremet-va in #6253 (4409d)
- browser: Recommend using vitest-browser-vue, vitest-browser-svelte or vitest-browser-react with built-in locators instead of
@testing-library/framework
packages (d79511)- Using built-in locators solves several issues we encountered after the Browser Mode rewrite in Vitest 2:
- They support Shadow DOM unlike
testing-library
that relies solely onquerySelector
andclosest
- Having a single query mechanism between all frameworks and providers allows us to give users easy-to-understand examples which makes documenting it much easier
- All locators have the retry-ability mechanism built-in when using
.click
/.fill
and otheruserEvent
methods - Locators use Playwright implementation which allows us to reuse established selectors from Playwright ecosystem
🐞 Bug Fixes
- browser:
- Produce valid config file if preview provider is used - by @sheremet-va in #6305 (7f0ae)
- coverage:
- Warn if
vitest
and@vitest/*
versions don't match - by @AriPerkkio in #6317 (e662c) - V8 to support source maps with multiple sources - by @AriPerkkio and @sheremet-va in #6120 (1f6cb)
- V8 to warn instead of crash when conversion fails - by @AriPerkkio in #6318 (91dea)
- Warn if
- vitest:
- Add more type guards for --merge-reports - by @sheremet-va in #6307 (0a5d8)
View changes on GitHub
v2.1.0-beta.4
🐞 Bug Fixes
- browser: Keep querying elements even if locator is created with elementLocator, add pubic @vitest/browser/utils - by @sheremet-va in #6296 (30dc5)
View changes on GitHub
v2.1.0-beta.3
🐞 Bug Fixes
- browser: Use documentElement as the root for selector - by @sheremet-va (d8077)
View changes on GitHub
v2.1.0-beta.2
No significant changes