test-utils

🧪 Test utilities for Nuxt

MIT License

Downloads
682.7K
Stars
273
Committers
49

Bot releases are visible (Hide)

test-utils - v3.12.1 Latest Release

Published by danielroe 6 months ago

compare changes

🩹 Fixes

  • Publish playwright.d.ts (#797)

❤️ Contributors

  • Ryota Watanabe (@wattanx)
test-utils - v3.12.0

Published by danielroe 7 months ago

compare changes

🚀 Enhancements

  • e2e: Add 'route'/'hydration' options for page.goto() (#739)
  • e2e: Add playwright runner (#776)

🩹 Fixes

  • config: Remove nuxt's custom vite logger (eca52f5c)

🏡 Chore

  • Force correct typing for e2e subpath (9fd93a8c)
  • Don't run publish step separately (0078d0bc)

🤖 CI

❤️ Contributors

  • Daniel Roe (@danielroe)
  • Max Schmitt (@mxschmitt)
test-utils - v3.11.0

Published by danielroe 9 months ago

compare changes

🚀 Enhancements

  • vitest-environment: Add support for in-source testing (#651)

🩹 Fixes

  • runtime: Reset modules after nuxt setup runs (#726)

✅ Tests

  • Add example of mocking vue-router (e293cea1)
  • Add example of mocking nuxt useRoute (fe465193)

❤️ Contributors

  • Daniel Roe (@danielroe)
test-utils - v3.10.0

Published by danielroe 9 months ago

compare changes

🚀 Enhancements

  • e2e: Add cucumber test runner (#711)
  • e2e: Support env option for startServer (#640)

🩹 Fixes

  • runtime-utils: Resolve to in RouterLink stub (#687)
  • Mark afterAll and setup hooks as async (#702)
  • module: Always append import when mocking (#701)

🏡 Chore

  • Add required dev deps to app-vitest example (#712)
  • Pin vue/nuxt versions (00674cd0)

✅ Tests

  • Update config key (25060645)
  • Add example test for nuxt-injected value (#663)
  • Update to actually use $t (#675)

🤖 CI

❤️ Contributors

  • Bobbie Goede (@BobbieGoede)
  • Daniel Roe (@danielroe)
  • Julien Huang (@huang-julien)
  • Albert Brand (@AlbertBrand)
  • Steve Pewsey (@StevenPewsey)
test-utils - v3.9.0

Published by danielroe 10 months ago

👀 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 and vitest-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.

  1. Uninstall nuxt-vitest

    npm remove nuxt-vitest
    
  2. Update your vitest versions to v1, and update @nuxt/test-utils and vitest-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"
      },
    
  3. Update your nuxt.config if you have added the nuxt-vitest module to it, and update the configuration from vitest to testUtils:

      export default defineNuxtConfig({
       modules: [
    -    'nuxt-vitest'
    +    '@nuxt/test-utils/module'
       ],
    -  vitest: {}
    +  testUtils: {}
      })
    
  4. Update any imports from nuxt-vitest and vitest-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'
    
  5. Ensure vitest is running in a module context (either by checking you have type: 'module' set in your package.json, or by renaming your vitest.config file to vitest.config.mts or vitest.config.mjs.

If you encounter any problems with this upgrade path, please let us know by raising an issue. 🙏

👉 Changelog

compare changes

🚀 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

🤖 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)