v3.9.0
π Highlights
v3.9.0 is a significant release of @nuxt/test-utils
. Most notably:
- We've split it out from the core nuxt/nuxt repository for a decoupled release cycle.
- We've merged in
nuxt-vitest
andvitest-environment-nuxt
into a single repository for both runtime unit testing and e2e/browser testing with Nuxt. - We've added documentation on https://nuxt.com/docs/getting-started/testing to get you started.
β Upgrading
... from @nuxt/test-utils
If you were upgrading from @nuxt/test-utils
, the only significant change is to update your imports to @nuxt/test-utils/e2e
(for clarity).
If you were using the jest
runner, this should now be auto-detected and you can remove runner: 'jest'
from your test configuration.
... from nuxt-vitest
If you previously used nuxt-vitest
, we have now merged it into @nuxt/test-utils
, as well as implementing a range of fixes.
π Here are the required steps.
-
Uninstall
nuxt-vitest
npm remove nuxt-vitest
-
Update your
vitest
versions to v1, and update@nuxt/test-utils
andvitest-environment-nuxt
to the latest versions:"devDependencies": { - "@nuxt/test-utils": "^3.8.1", + "@nuxt/test-utils": "^3.9.0", - "@vitest/coverage-v8": "0.33.0", + "@vitest/coverage-v8": "^1.0.4", "@vue/test-utils": "^2.4.3", - "nuxt-vitest": "^0.11.5", - "vitest": "^0.33.0", + "vitest": "^1.0.4", + "vitest-environment-nuxt": "^1.0.0" },
-
Update your
nuxt.config
if you have added thenuxt-vitest
module to it, and update the configuration fromvitest
totestUtils
:export default defineNuxtConfig({ modules: [ - 'nuxt-vitest' + '@nuxt/test-utils/module' ], - vitest: {} + testUtils: {} })
-
Update any imports from
nuxt-vitest
andvitest-environment-nuxt
and@nuxt/test-utils
:- import { mountSuspended } from 'nuxt-vitest/utils' // or 'vitest-environment-nuxt/utils' + import { mountSuspended } from '@nuxt/test-utils/runtime' - import { defineVitestConfig } from 'vitest-environment-nuxt/config' // or 'nuxt-vitest/config' + import { defineVitestConfig } from '@nuxt/test-utils/config' - import { setup, $fetch } from '@nuxt/test-utils' + import { setup, $fetch } from '@nuxt/test-utils/e2e'
-
Ensure vitest is running in a module context (either by checking you have
type: 'module'
set in yourpackage.json
, or by renaming yourvitest.config
file tovitest.config.mts
orvitest.config.mjs
.
If you encounter any problems with this upgrade path, please let us know by raising an issue. π
π Changelog
π Enhancements
- Add nuxt-vitest re-exports (#230)
- Add nuxt-vitest and vitest-environment-nuxt code and tests (f4ae58ac)
- Use internal implementation of nuxt-vitest (#235)
- e2e: Auto-detect jest runner (ae37b0ee)
β οΈ Read .env.test + allow overriding with nuxt.dotenv (#655)
π©Ή Fixes
- Add @nuxt/test-utils-nightly to deps to inline (0caf44d0)
- Use implied .d.mts types (d9694f21)
- Add setupState type to mountSuspended return type (#400)
- Add runtime fixture to workspace and address regressions (#240)
- Opt-in to future vitest option (#247)
- Use vite-ignore for playwright dynamic import (c1ac4a08)
- Do not set process.browser globally (#250)
- Support transpiling nuxt nightly releases (c63f69c8)
- Rewrite mock plugin for compat with vite 5/rollup 4 (d0ba5af3)
- Do not skip transforms on test files (3bbcc1ea)
- Add @vitest/ui to peer deps (7f4f6053)
- Use buildDir option (#596)
β οΈ Load nuxt app within setupFiles (#260)- Teardown build directories after tests (#597)
- Import useRouter explicitly in entry (129d8335)
- Return absolute path for stub entry (180bb306)
- Don't return absolute path in dev mode (f47dd9a3)
- Clone overrides (df84d0c1)
- Skip vite-plugin-vue-inspector:post plugin (8a6a0523)
- Clean up wrappers when calling renderSuspended (5b189115)
- Exclude vite-plugin-checker from runtime vitest config (053a5dff)
- Resolve devtools url after vitest config is resolved (1206db79)
- Remove module override of app.rootId (e662c1f0)
- Remove rootId environment option (dead5e3d)
- Add back rootId environment option" (827180ec)
- runtime-utils: Don't stub helpers when shallow (#632)
- Avoid enumerating keys on render context (43b2724b)
- Support typescript entry file (c5806009)
- vitest-environment: Normalise setupFiles before merge (#653)
- module: Close nuxt before shutting down (17cf9435)
- runtime: Do not assign readonly setup state (8d799275)
- runtime: Implement setProps (522f8bf5)
- vitest-environment: Handle different entry format (5c07bb48)
- runtime: Import reactive and unref (d68cdae9)
π Refactors
- Move to monorepo (#31)
- Split core utils to core/ (f144cb40)
- Clean up internal code imports (#245)
- Use defu rather than mergeConfig from vite (#246)
- Further split vitest from vite config (ef58e4cb)
- Split out mock transform plugin w/ tests (a37fa408)
- Remove rollup implementation of transform plugin (71345967)
- module: Rename config key to testUtils (c2b09732)
π Documentation
- playground: Demo usage of co-exists unit and nuxt testing (#6)
- Add JSDoc comments (#205)
- Add documentation for mountSuspended (#227)
- Add basic README and missing LICENCE (51eb9de2)
- Remove links to nuxt-vitest (254605df)
- Update links to nuxt docs on testing (2e619a89)
π¦ Build
- Fix build issues and correct dependencies (3e2f8b29)
- Move runtime-utils.mjs -> runtime-utils/index.mjs (#634)
β οΈ Use /runtime subpath export (de9a2a81)- Prefer /e2e subpath export (88952fb0)
β Tests
- Update playground to 0.4.5 devtools (7d4a6b28)
- Add useHead to fixture (6d4bb420)
- Add type tests (9de62b6e)
- Await 2 ticks after navigation for route to update (cb6c1e3a)
- Correct test assertion (c644bdb3)
- Avoid depending on specific number of ticks (e98d71ea)
- Update test to use server rather than live api (7df6be28)
- Add a few more basic examples for e2e tests (490753c4)
- Add jest example/test (#224)
- Add type test (#241)
- Make indexeddb plugin client-only (0477e414)
- Add tests for events emitted from defineModel (#629)
- Add failing test for exposed methods on components within suspense (a4ec3f83)
- Remove workaround for route update (c9699ad1)
- Add example of importing a dynamic route (fe420b9c)
- Re-organise test suite (9c877821)
- Add failing test for setProps (dc93e003)
- Reenable expose test (204037e4)
- Add example fixture with @nuxt/content (#631)
- Add example fixture with @nuxtjs/i18n (#633)
- Add generate assertion and enable browser (94513939)
π¨ Styles
- Lint (35ee16ef)
- Lint and update test (cd4dbf9d)
- Lint (91723acc)
- Lint (caf4d827)
- Lint (8b428b46)
- Sort imports (6c84c9e4)
π€ CI
- Add testing workflow (ce74b0b5)
- Add lint workflow for pushes to main (f141b8d4)
- Add workflow to test examples (0c3c318f)
- Prepare environment before running module test (5be069dc)
- 'nightly' releases on pushes to main (#210)
- Fetch full history (d61614b1)
- Install playwright manually (58906de3)
- Remove extra branch from release workflow (e24d884f)
- Prepare build environment (6d8e71ad)
- Run unit tests in ci (cbd5616a)
- Support automated release prs (#623)
- Fetch all commits in creating changelog (6f22b096)
- Disable changelog creation script for now (5ef70c35)
- Reenable changelogensets (fb754d54)
β οΈ Breaking Changes
β οΈ Read .env.test + allow overriding with nuxt.dotenv (#655)β οΈ Ignore query params when checking if an endpoint is mocked (c1f8890b)β οΈ Load nuxt app within setupFiles (#260)β οΈ Use /runtime subpath export (de9a2a81)β οΈ Drop support for vitest < 0.34 (#654)
β€οΈ Contributors
- Daniel Roe (@danielroe)
- Harlan Wilton (@harlan-zw)
- Tim Van Den Eijnden (@TimvdEijnden)
- Juho Rutila (@nice-game-hints)
- Ola Alsaker (@OlaAlsaker)
- Erikwu (@erikkkwu)
- Yasser Lahbibi (@yassilah)
- Pooya Parsa (@pi0)
- Julien Huang (@huang-julien)
- Niko-chaffinchicas (@niko-chaffinchicas)
- Oskar Olsson (@oskarols)
- Aapo Kiiso (@aapokiiso)
- Anthony Fu (@antfu)
- Ryoji-yamauchi-blc (@ryoji-yamauchi-blc)
- Enkot (@enkot)
- ιθΆ (@DevDengChao)
- Vasily Kuzin (@ExEr7um)
- Maarten Van Hunsel (@maartenvanhunsel)
- Odynn Aguilar (@odinti)
- Floriankapaun (@floriankapaun)
- Mark Van Alphen (@mvanalphen)
- Ghazi Alhouwari (@ghazialhouwari)
- Paul Melero (@gangsthub)