[{"data":1,"prerenderedAt":6357},["ShallowReactive",2],{"navigation":3,"-docs-getting-started-testing":1107,"-docs-getting-started-testing-surround":6352},[4,1018],{"title":5,"titleTemplate":6,"icon":7,"path":8,"stem":9,"children":10,"page":108},"Docs",null,"i-lucide-bookmark","/docs","docs",[11,109,345,805,897,934,976],{"title":12,"titleTemplate":13,"icon":14,"path":15,"stem":16,"children":17,"page":108},"Get Started","%s · Get Started with Nuxt","i-lucide-rocket","/docs/getting-started","docs/1.getting-started",[18,23,28,33,38,43,48,53,58,63,68,73,78,83,88,93,98,103],{"title":19,"path":20,"stem":21,"titleTemplate":6,"icon":22},"Introduction","/docs/getting-started/introduction","docs/1.getting-started/01.introduction","i-lucide-info",{"title":24,"path":25,"stem":26,"titleTemplate":6,"icon":27},"Installation","/docs/getting-started/installation","docs/1.getting-started/02.installation","i-lucide-play",{"title":29,"path":30,"stem":31,"titleTemplate":6,"icon":32},"Configuration","/docs/getting-started/configuration","docs/1.getting-started/03.configuration","i-lucide-cog",{"title":34,"path":35,"stem":36,"titleTemplate":6,"icon":37},"Views","/docs/getting-started/views","docs/1.getting-started/04.views","i-lucide-panels-top-left",{"title":39,"path":40,"stem":41,"titleTemplate":6,"icon":42},"Assets","/docs/getting-started/assets","docs/1.getting-started/05.assets","i-lucide-image",{"title":44,"path":45,"stem":46,"titleTemplate":6,"icon":47},"Styling","/docs/getting-started/styling","docs/1.getting-started/06.styling","i-lucide-palette",{"title":49,"path":50,"stem":51,"titleTemplate":6,"icon":52},"Routing","/docs/getting-started/routing","docs/1.getting-started/07.routing","i-lucide-milestone",{"title":54,"path":55,"stem":56,"titleTemplate":6,"icon":57},"SEO and Meta","/docs/getting-started/seo-meta","docs/1.getting-started/08.seo-meta","i-lucide-file-search",{"title":59,"path":60,"stem":61,"titleTemplate":6,"icon":62},"Transitions","/docs/getting-started/transitions","docs/1.getting-started/09.transitions","i-lucide-toggle-right",{"title":64,"path":65,"stem":66,"titleTemplate":6,"icon":67},"Data Fetching","/docs/getting-started/data-fetching","docs/1.getting-started/10.data-fetching","i-lucide-cable",{"title":69,"path":70,"stem":71,"titleTemplate":6,"icon":72},"State Management","/docs/getting-started/state-management","docs/1.getting-started/11.state-management","i-lucide-database",{"title":74,"path":75,"stem":76,"titleTemplate":6,"icon":77},"Error Handling","/docs/getting-started/error-handling","docs/1.getting-started/12.error-handling","i-lucide-bug-off",{"title":79,"path":80,"stem":81,"titleTemplate":6,"icon":82},"Server","/docs/getting-started/server","docs/1.getting-started/13.server","i-lucide-pc-case",{"title":84,"path":85,"stem":86,"titleTemplate":6,"icon":87},"Layers","/docs/getting-started/layers","docs/1.getting-started/14.layers","i-lucide-layers",{"title":89,"path":90,"stem":91,"titleTemplate":6,"icon":92},"Prerendering","/docs/getting-started/prerendering","docs/1.getting-started/15.prerendering","i-lucide-file-code-2",{"title":94,"path":95,"stem":96,"titleTemplate":6,"icon":97},"Deployment","/docs/getting-started/deployment","docs/1.getting-started/16.deployment","i-lucide-cloud",{"title":99,"path":100,"stem":101,"titleTemplate":6,"icon":102},"Testing","/docs/getting-started/testing","docs/1.getting-started/17.testing","i-lucide-circle-check",{"title":104,"path":105,"stem":106,"titleTemplate":6,"icon":107},"Upgrade Guide","/docs/getting-started/upgrade","docs/1.getting-started/18.upgrade","i-lucide-circle-arrow-up",false,{"title":110,"titleTemplate":6,"icon":111,"path":112,"stem":113,"children":114,"page":108},"Guide","i-lucide-book-open","/docs/guide","docs/2.guide",[115,158,271,322],{"title":116,"titleTemplate":117,"icon":118,"path":119,"stem":120,"children":121,"page":108},"Key Concepts","%s · Nuxt Concepts","i-lucide-medal","/docs/guide/concepts","docs/2.guide/1.concepts",[122,126,130,134,138,142,146,150,154],{"title":123,"path":124,"stem":125,"titleTemplate":6},"Auto-imports","/docs/guide/concepts/auto-imports","docs/2.guide/1.concepts/1.auto-imports",{"title":127,"path":128,"stem":129,"titleTemplate":6},"Nuxt Lifecycle","/docs/guide/concepts/nuxt-lifecycle","docs/2.guide/1.concepts/10.nuxt-lifecycle",{"title":131,"path":132,"stem":133,"titleTemplate":6},"Vue.js Development","/docs/guide/concepts/vuejs-development","docs/2.guide/1.concepts/2.vuejs-development",{"title":135,"path":136,"stem":137,"titleTemplate":6},"Rendering Modes","/docs/guide/concepts/rendering","docs/2.guide/1.concepts/3.rendering",{"title":139,"path":140,"stem":141,"titleTemplate":6},"Server Engine","/docs/guide/concepts/server-engine","docs/2.guide/1.concepts/4.server-engine",{"title":143,"path":144,"stem":145,"titleTemplate":6},"Modules","/docs/guide/concepts/modules","docs/2.guide/1.concepts/5.modules",{"title":147,"path":148,"stem":149,"titleTemplate":6},"ES Modules","/docs/guide/concepts/esm","docs/2.guide/1.concepts/7.esm",{"title":151,"path":152,"stem":153,"titleTemplate":6},"TypeScript","/docs/guide/concepts/typescript","docs/2.guide/1.concepts/8.typescript",{"title":155,"path":156,"stem":157,"titleTemplate":6},"Code Style","/docs/guide/concepts/code-style","docs/2.guide/1.concepts/9.code-style",{"title":159,"titleTemplate":160,"icon":161,"path":162,"stem":163,"children":164,"page":108},"Directory Structure","%s · Nuxt Directory Structure","i-lucide-folders","/docs/guide/directory-structure","docs/2.guide/2.directory-structure",[165,170,174,178,182,186,190,194,198,202,206,210,214,218,222,226,230,235,239,243,247,251,255,259,263,267],{"title":166,"path":167,"stem":168,"titleTemplate":6,"icon":169},".nuxt","/docs/guide/directory-structure/nuxt","docs/2.guide/2.directory-structure/0.nuxt","i-lucide-folder",{"title":171,"path":172,"stem":173,"titleTemplate":6,"icon":169},".output","/docs/guide/directory-structure/output","docs/2.guide/2.directory-structure/0.output",{"title":175,"path":176,"stem":177,"titleTemplate":6,"icon":169},"assets","/docs/guide/directory-structure/assets","docs/2.guide/2.directory-structure/1.assets",{"title":179,"path":180,"stem":181,"titleTemplate":6,"icon":169},"components","/docs/guide/directory-structure/components","docs/2.guide/2.directory-structure/1.components",{"title":183,"path":184,"stem":185,"titleTemplate":6,"icon":169},"composables","/docs/guide/directory-structure/composables","docs/2.guide/2.directory-structure/1.composables",{"title":187,"path":188,"stem":189,"titleTemplate":6,"icon":169},"content","/docs/guide/directory-structure/content","docs/2.guide/2.directory-structure/1.content",{"title":191,"path":192,"stem":193,"titleTemplate":6,"icon":169},"layouts","/docs/guide/directory-structure/layouts","docs/2.guide/2.directory-structure/1.layouts",{"title":195,"path":196,"stem":197,"titleTemplate":6,"icon":169},"middleware","/docs/guide/directory-structure/middleware","docs/2.guide/2.directory-structure/1.middleware",{"title":199,"path":200,"stem":201,"titleTemplate":6,"icon":169},"modules","/docs/guide/directory-structure/modules","docs/2.guide/2.directory-structure/1.modules",{"title":203,"path":204,"stem":205,"titleTemplate":6,"icon":169},"node_modules","/docs/guide/directory-structure/node_modules","docs/2.guide/2.directory-structure/1.node_modules",{"title":207,"path":208,"stem":209,"titleTemplate":6,"icon":169},"pages","/docs/guide/directory-structure/pages","docs/2.guide/2.directory-structure/1.pages",{"title":211,"path":212,"stem":213,"titleTemplate":6,"icon":169},"plugins","/docs/guide/directory-structure/plugins","docs/2.guide/2.directory-structure/1.plugins",{"title":215,"path":216,"stem":217,"titleTemplate":6,"icon":169},"public","/docs/guide/directory-structure/public","docs/2.guide/2.directory-structure/1.public",{"title":219,"path":220,"stem":221,"titleTemplate":6,"icon":169},"server","/docs/guide/directory-structure/server","docs/2.guide/2.directory-structure/1.server",{"title":223,"path":224,"stem":225,"titleTemplate":6,"icon":169},"shared","/docs/guide/directory-structure/shared","docs/2.guide/2.directory-structure/1.shared",{"title":227,"path":228,"stem":229,"titleTemplate":6,"icon":169},"utils","/docs/guide/directory-structure/utils","docs/2.guide/2.directory-structure/1.utils",{"title":231,"path":232,"stem":233,"titleTemplate":6,"icon":234},".env","/docs/guide/directory-structure/env","docs/2.guide/2.directory-structure/2.env","i-lucide-file",{"title":236,"path":237,"stem":238,"titleTemplate":6,"icon":234},".gitignore","/docs/guide/directory-structure/gitignore","docs/2.guide/2.directory-structure/2.gitignore",{"title":240,"path":241,"stem":242,"titleTemplate":6,"icon":234},".nuxtignore","/docs/guide/directory-structure/nuxtignore","docs/2.guide/2.directory-structure/2.nuxtignore",{"title":244,"path":245,"stem":246,"titleTemplate":6,"icon":234},".nuxtrc","/docs/guide/directory-structure/nuxtrc","docs/2.guide/2.directory-structure/2.nuxtrc",{"title":248,"path":249,"stem":250,"titleTemplate":6,"icon":234},"app.vue","/docs/guide/directory-structure/app","docs/2.guide/2.directory-structure/3.app",{"title":252,"path":253,"stem":254,"titleTemplate":6,"icon":234},"app.config.ts","/docs/guide/directory-structure/app-config","docs/2.guide/2.directory-structure/3.app-config",{"title":256,"path":257,"stem":258,"titleTemplate":6,"icon":234},"error.vue","/docs/guide/directory-structure/error","docs/2.guide/2.directory-structure/3.error",{"title":260,"path":261,"stem":262,"titleTemplate":6,"icon":234},"nuxt.config.ts","/docs/guide/directory-structure/nuxt-config","docs/2.guide/2.directory-structure/3.nuxt-config",{"title":264,"path":265,"stem":266,"titleTemplate":6,"icon":234},"package.json","/docs/guide/directory-structure/package","docs/2.guide/2.directory-structure/3.package",{"title":268,"path":269,"stem":270,"titleTemplate":6,"icon":234},"tsconfig.json","/docs/guide/directory-structure/tsconfig","docs/2.guide/2.directory-structure/3.tsconfig",{"title":272,"titleTemplate":273,"icon":274,"path":275,"stem":276,"children":277,"page":108},"Going Further","%s · Nuxt Advanced","i-lucide-star","/docs/guide/going-further","docs/2.guide/3.going-further",[278,282,286,290,294,298,302,306,310,314,318],{"title":279,"path":280,"stem":281,"titleTemplate":6},"Experimental Features","/docs/guide/going-further/experimental-features","docs/2.guide/3.going-further/1.experimental-features",{"title":283,"path":284,"stem":285,"titleTemplate":6},"Features","/docs/guide/going-further/features","docs/2.guide/3.going-further/1.features",{"title":287,"path":288,"stem":289,"titleTemplate":6},"How Nuxt Works?","/docs/guide/going-further/internals","docs/2.guide/3.going-further/1.internals",{"title":291,"path":292,"stem":293,"titleTemplate":6},"Runtime Config","/docs/guide/going-further/runtime-config","docs/2.guide/3.going-further/10.runtime-config",{"title":295,"path":296,"stem":297,"titleTemplate":6},"Nightly Release Channel","/docs/guide/going-further/nightly-release-channel","docs/2.guide/3.going-further/11.nightly-release-channel",{"title":299,"path":300,"stem":301,"titleTemplate":6},"Lifecycle Hooks","/docs/guide/going-further/hooks","docs/2.guide/3.going-further/2.hooks",{"title":303,"path":304,"stem":305,"titleTemplate":6},"Module Author Guide","/docs/guide/going-further/modules","docs/2.guide/3.going-further/3.modules",{"title":307,"path":308,"stem":309,"titleTemplate":6},"Nuxt Kit","/docs/guide/going-further/kit","docs/2.guide/3.going-further/4.kit",{"title":311,"path":312,"stem":313,"titleTemplate":6},"NuxtApp","/docs/guide/going-further/nuxt-app","docs/2.guide/3.going-further/6.nuxt-app",{"title":315,"path":316,"stem":317,"titleTemplate":6},"Authoring Nuxt Layers","/docs/guide/going-further/layers","docs/2.guide/3.going-further/7.layers",{"title":319,"path":320,"stem":321,"titleTemplate":6},"Debugging","/docs/guide/going-further/debugging","docs/2.guide/3.going-further/9.debugging",{"title":323,"titleTemplate":324,"icon":325,"path":326,"stem":327,"children":328,"page":108},"Recipes","%s · Recipes","i-lucide-cooking-pot","/docs/guide/recipes","docs/2.guide/4.recipes",[329,333,337,341],{"title":330,"path":331,"stem":332,"titleTemplate":6},"Custom Routing","/docs/guide/recipes/custom-routing","docs/2.guide/4.recipes/1.custom-routing",{"title":334,"path":335,"stem":336,"titleTemplate":6},"Vite Plugins","/docs/guide/recipes/vite-plugin","docs/2.guide/4.recipes/2.vite-plugin",{"title":338,"path":339,"stem":340,"titleTemplate":6},"Custom useFetch","/docs/guide/recipes/custom-usefetch","docs/2.guide/4.recipes/3.custom-usefetch",{"title":342,"path":343,"stem":344,"titleTemplate":6},"Sessions and Authentication","/docs/guide/recipes/sessions-and-authentication","docs/2.guide/4.recipes/4.sessions-and-authentication",{"title":346,"titleTemplate":347,"icon":348,"path":349,"stem":350,"children":351,"page":108},"API","%s · Nuxt API","i-lucide-code-xml","/docs/api","docs/3.api",[352,416,539,654,721,787,800],{"title":353,"titleTemplate":354,"icon":355,"path":356,"stem":357,"children":358,"page":108},"Components","%s · Nuxt Components","i-lucide-box","/docs/api/components","docs/3.api/1.components",[359,363,367,371,375,379,384,388,392,396,400,404,408,412],{"title":360,"path":361,"stem":362,"titleTemplate":6},"\u003CClientOnly>","/docs/api/components/client-only","docs/3.api/1.components/1.client-only",{"title":364,"path":365,"stem":366,"titleTemplate":6},"\u003CDevOnly>","/docs/api/components/dev-only","docs/3.api/1.components/1.dev-only",{"title":368,"path":369,"stem":370,"titleTemplate":6},"\u003CNuxtClientFallback>","/docs/api/components/nuxt-client-fallback","docs/3.api/1.components/1.nuxt-client-fallback",{"title":372,"path":373,"stem":374,"titleTemplate":6},"\u003CNuxtPicture>","/docs/api/components/nuxt-picture","docs/3.api/1.components/10.nuxt-picture",{"title":376,"path":377,"stem":378,"titleTemplate":6},"\u003CTeleport>","/docs/api/components/teleports","docs/3.api/1.components/11.teleports",{"title":380,"path":381,"stem":382,"titleTemplate":6,"badge":383},"\u003CNuxtRouteAnnouncer>","/docs/api/components/nuxt-route-announcer","docs/3.api/1.components/12.nuxt-route-announcer","New",{"title":385,"path":386,"stem":387,"titleTemplate":6},"\u003CNuxtPage>","/docs/api/components/nuxt-page","docs/3.api/1.components/2.nuxt-page",{"title":389,"path":390,"stem":391,"titleTemplate":6},"\u003CNuxtLayout>","/docs/api/components/nuxt-layout","docs/3.api/1.components/3.nuxt-layout",{"title":393,"path":394,"stem":395,"titleTemplate":6},"\u003CNuxtLink>","/docs/api/components/nuxt-link","docs/3.api/1.components/4.nuxt-link",{"title":397,"path":398,"stem":399,"titleTemplate":6},"\u003CNuxtLoadingIndicator>","/docs/api/components/nuxt-loading-indicator","docs/3.api/1.components/5.nuxt-loading-indicator",{"title":401,"path":402,"stem":403,"titleTemplate":6},"\u003CNuxtErrorBoundary>","/docs/api/components/nuxt-error-boundary","docs/3.api/1.components/6.nuxt-error-boundary",{"title":405,"path":406,"stem":407,"titleTemplate":6},"\u003CNuxtWelcome>","/docs/api/components/nuxt-welcome","docs/3.api/1.components/7.nuxt-welcome",{"title":409,"path":410,"stem":411,"titleTemplate":6},"\u003CNuxtIsland>","/docs/api/components/nuxt-island","docs/3.api/1.components/8.nuxt-island",{"title":413,"path":414,"stem":415,"titleTemplate":6},"\u003CNuxtImg>","/docs/api/components/nuxt-img","docs/3.api/1.components/9.nuxt-img",{"title":417,"titleTemplate":418,"icon":419,"path":420,"stem":421,"children":422,"page":108},"Composables","%s · Nuxt Composables","i-lucide-arrow-left-right","/docs/api/composables","docs/3.api/2.composables",[423,427,431,435,439,443,447,451,455,459,463,467,471,475,479,483,487,491,495,499,503,507,511,515,519,523,527,531,535],{"title":424,"path":425,"stem":426,"titleTemplate":6},"onPrehydrate","/docs/api/composables/on-prehydrate","docs/3.api/2.composables/on-prehydrate",{"title":428,"path":429,"stem":430,"titleTemplate":6},"useAppConfig","/docs/api/composables/use-app-config","docs/3.api/2.composables/use-app-config",{"title":432,"path":433,"stem":434,"titleTemplate":6},"useAsyncData","/docs/api/composables/use-async-data","docs/3.api/2.composables/use-async-data",{"title":436,"path":437,"stem":438,"titleTemplate":6},"useCookie","/docs/api/composables/use-cookie","docs/3.api/2.composables/use-cookie",{"title":440,"path":441,"stem":442,"titleTemplate":6},"useError","/docs/api/composables/use-error","docs/3.api/2.composables/use-error",{"title":444,"path":445,"stem":446,"titleTemplate":6},"useFetch","/docs/api/composables/use-fetch","docs/3.api/2.composables/use-fetch",{"title":448,"path":449,"stem":450,"titleTemplate":6},"useHead","/docs/api/composables/use-head","docs/3.api/2.composables/use-head",{"title":452,"path":453,"stem":454,"titleTemplate":6},"useHeadSafe","/docs/api/composables/use-head-safe","docs/3.api/2.composables/use-head-safe",{"title":456,"path":457,"stem":458,"titleTemplate":6},"useHydration","/docs/api/composables/use-hydration","docs/3.api/2.composables/use-hydration",{"title":460,"path":461,"stem":462,"titleTemplate":6},"useLazyAsyncData","/docs/api/composables/use-lazy-async-data","docs/3.api/2.composables/use-lazy-async-data",{"title":464,"path":465,"stem":466,"titleTemplate":6},"useLazyFetch","/docs/api/composables/use-lazy-fetch","docs/3.api/2.composables/use-lazy-fetch",{"title":468,"path":469,"stem":470,"titleTemplate":6},"useLoadingIndicator","/docs/api/composables/use-loading-indicator","docs/3.api/2.composables/use-loading-indicator",{"title":472,"path":473,"stem":474,"titleTemplate":6},"useNuxtApp","/docs/api/composables/use-nuxt-app","docs/3.api/2.composables/use-nuxt-app",{"title":476,"path":477,"stem":478,"titleTemplate":6},"useNuxtData","/docs/api/composables/use-nuxt-data","docs/3.api/2.composables/use-nuxt-data",{"title":480,"path":481,"stem":482,"titleTemplate":6},"usePreviewMode","/docs/api/composables/use-preview-mode","docs/3.api/2.composables/use-preview-mode",{"title":484,"path":485,"stem":486,"titleTemplate":6},"useRequestEvent","/docs/api/composables/use-request-event","docs/3.api/2.composables/use-request-event",{"title":488,"path":489,"stem":490,"titleTemplate":6},"useRequestFetch","/docs/api/composables/use-request-fetch","docs/3.api/2.composables/use-request-fetch",{"title":492,"path":493,"stem":494,"titleTemplate":6},"useRequestHeader","/docs/api/composables/use-request-header","docs/3.api/2.composables/use-request-header",{"title":496,"path":497,"stem":498,"titleTemplate":6},"useRequestHeaders","/docs/api/composables/use-request-headers","docs/3.api/2.composables/use-request-headers",{"title":500,"path":501,"stem":502,"titleTemplate":6},"useRequestURL","/docs/api/composables/use-request-url","docs/3.api/2.composables/use-request-url",{"title":504,"path":505,"stem":506,"titleTemplate":6},"useResponseHeader","/docs/api/composables/use-response-header","docs/3.api/2.composables/use-response-header",{"title":508,"path":509,"stem":510,"titleTemplate":6},"useRoute","/docs/api/composables/use-route","docs/3.api/2.composables/use-route",{"title":512,"path":513,"stem":514,"titleTemplate":6,"badge":383},"useRouteAnnouncer","/docs/api/composables/use-route-announcer","docs/3.api/2.composables/use-route-announcer",{"title":516,"path":517,"stem":518,"titleTemplate":6},"useRouter","/docs/api/composables/use-router","docs/3.api/2.composables/use-router",{"title":520,"path":521,"stem":522,"titleTemplate":6},"useRuntimeConfig","/docs/api/composables/use-runtime-config","docs/3.api/2.composables/use-runtime-config",{"title":524,"path":525,"stem":526,"titleTemplate":6},"useRuntimeHook","/docs/api/composables/use-runtime-hook","docs/3.api/2.composables/use-runtime-hook",{"title":528,"path":529,"stem":530,"titleTemplate":6},"useSeoMeta","/docs/api/composables/use-seo-meta","docs/3.api/2.composables/use-seo-meta",{"title":532,"path":533,"stem":534,"titleTemplate":6},"useServerSeoMeta","/docs/api/composables/use-server-seo-meta","docs/3.api/2.composables/use-server-seo-meta",{"title":536,"path":537,"stem":538,"titleTemplate":6},"useState","/docs/api/composables/use-state","docs/3.api/2.composables/use-state",{"title":540,"titleTemplate":541,"icon":542,"path":543,"stem":544,"children":545,"page":108},"Utils","%s · Nuxt Utils","i-lucide-square-function","/docs/api/utils","docs/3.api/3.utils",[546,550,554,558,562,566,570,574,578,582,586,590,594,598,602,606,610,614,618,622,626,630,634,638,642,646,650],{"title":547,"path":548,"stem":549,"titleTemplate":6},"$fetch","/docs/api/utils/dollarfetch","docs/3.api/3.utils/$fetch",{"title":551,"path":552,"stem":553,"titleTemplate":6},"abortNavigation","/docs/api/utils/abort-navigation","docs/3.api/3.utils/abort-navigation",{"title":555,"path":556,"stem":557,"titleTemplate":6},"addRouteMiddleware","/docs/api/utils/add-route-middleware","docs/3.api/3.utils/add-route-middleware",{"title":559,"path":560,"stem":561,"titleTemplate":6,"badge":383},"callOnce","/docs/api/utils/call-once","docs/3.api/3.utils/call-once",{"title":563,"path":564,"stem":565,"titleTemplate":6},"clearError","/docs/api/utils/clear-error","docs/3.api/3.utils/clear-error",{"title":567,"path":568,"stem":569,"titleTemplate":6},"clearNuxtData","/docs/api/utils/clear-nuxt-data","docs/3.api/3.utils/clear-nuxt-data",{"title":571,"path":572,"stem":573,"titleTemplate":6},"clearNuxtState","/docs/api/utils/clear-nuxt-state","docs/3.api/3.utils/clear-nuxt-state",{"title":575,"path":576,"stem":577,"titleTemplate":6},"createError","/docs/api/utils/create-error","docs/3.api/3.utils/create-error",{"title":579,"path":580,"stem":581,"titleTemplate":6},"defineNuxtComponent","/docs/api/utils/define-nuxt-component","docs/3.api/3.utils/define-nuxt-component",{"title":583,"path":584,"stem":585,"titleTemplate":6},"defineNuxtRouteMiddleware","/docs/api/utils/define-nuxt-route-middleware","docs/3.api/3.utils/define-nuxt-route-middleware",{"title":587,"path":588,"stem":589,"titleTemplate":6},"definePageMeta","/docs/api/utils/define-page-meta","docs/3.api/3.utils/define-page-meta",{"title":591,"path":592,"stem":593,"titleTemplate":6},"defineRouteRules","/docs/api/utils/define-route-rules","docs/3.api/3.utils/define-route-rules",{"title":595,"path":596,"stem":597,"titleTemplate":6},"navigateTo","/docs/api/utils/navigate-to","docs/3.api/3.utils/navigate-to",{"title":599,"path":600,"stem":601,"titleTemplate":6},"onBeforeRouteLeave","/docs/api/utils/on-before-route-leave","docs/3.api/3.utils/on-before-route-leave",{"title":603,"path":604,"stem":605,"titleTemplate":6},"onBeforeRouteUpdate","/docs/api/utils/on-before-route-update","docs/3.api/3.utils/on-before-route-update",{"title":607,"path":608,"stem":609,"titleTemplate":6},"onNuxtReady","/docs/api/utils/on-nuxt-ready","docs/3.api/3.utils/on-nuxt-ready",{"title":611,"path":612,"stem":613,"titleTemplate":6},"prefetchComponents","/docs/api/utils/prefetch-components","docs/3.api/3.utils/prefetch-components",{"title":615,"path":616,"stem":617,"titleTemplate":6},"preloadComponents","/docs/api/utils/preload-components","docs/3.api/3.utils/preload-components",{"title":619,"path":620,"stem":621,"titleTemplate":6},"preloadRouteComponents","/docs/api/utils/preload-route-components","docs/3.api/3.utils/preload-route-components",{"title":623,"path":624,"stem":625,"titleTemplate":6},"prerenderRoutes","/docs/api/utils/prerender-routes","docs/3.api/3.utils/prerender-routes",{"title":627,"path":628,"stem":629,"titleTemplate":6,"badge":383},"refreshCookie","/docs/api/utils/refresh-cookie","docs/3.api/3.utils/refresh-cookie",{"title":631,"path":632,"stem":633,"titleTemplate":6},"refreshNuxtData","/docs/api/utils/refresh-nuxt-data","docs/3.api/3.utils/refresh-nuxt-data",{"title":635,"path":636,"stem":637,"titleTemplate":6},"reloadNuxtApp","/docs/api/utils/reload-nuxt-app","docs/3.api/3.utils/reload-nuxt-app",{"title":639,"path":640,"stem":641,"titleTemplate":6},"setPageLayout","/docs/api/utils/set-page-layout","docs/3.api/3.utils/set-page-layout",{"title":643,"path":644,"stem":645,"titleTemplate":6},"setResponseStatus","/docs/api/utils/set-response-status","docs/3.api/3.utils/set-response-status",{"title":647,"path":648,"stem":649,"titleTemplate":6},"showError","/docs/api/utils/show-error","docs/3.api/3.utils/show-error",{"title":651,"path":652,"stem":653,"titleTemplate":6},"updateAppConfig","/docs/api/utils/update-app-config","docs/3.api/3.utils/update-app-config",{"title":655,"titleTemplate":656,"icon":657,"path":658,"stem":659,"children":660,"page":108},"Commands","%s · Nuxt Commands","i-lucide-square-terminal","/docs/api/commands","docs/3.api/4.commands",[661,665,669,673,677,681,685,689,693,697,701,705,709,713,717],{"title":662,"path":663,"stem":664,"titleTemplate":6},"nuxi add","/docs/api/commands/add","docs/3.api/4.commands/add",{"title":666,"path":667,"stem":668,"titleTemplate":6},"nuxi analyze","/docs/api/commands/analyze","docs/3.api/4.commands/analyze",{"title":670,"path":671,"stem":672,"titleTemplate":6},"nuxi build","/docs/api/commands/build","docs/3.api/4.commands/build",{"title":674,"path":675,"stem":676,"titleTemplate":6},"nuxi build-module","/docs/api/commands/build-module","docs/3.api/4.commands/build-module",{"title":678,"path":679,"stem":680,"titleTemplate":6},"nuxi cleanup","/docs/api/commands/cleanup","docs/3.api/4.commands/cleanup",{"title":682,"path":683,"stem":684,"titleTemplate":6},"nuxi dev","/docs/api/commands/dev","docs/3.api/4.commands/dev",{"title":686,"path":687,"stem":688,"titleTemplate":6},"nuxi devtools","/docs/api/commands/devtools","docs/3.api/4.commands/devtools",{"title":690,"path":691,"stem":692,"titleTemplate":6},"nuxi generate","/docs/api/commands/generate","docs/3.api/4.commands/generate",{"title":694,"path":695,"stem":696,"titleTemplate":6},"nuxi info","/docs/api/commands/info","docs/3.api/4.commands/info",{"title":698,"path":699,"stem":700,"titleTemplate":6},"nuxi init","/docs/api/commands/init","docs/3.api/4.commands/init",{"title":702,"path":703,"stem":704,"titleTemplate":6},"nuxi module","/docs/api/commands/module","docs/3.api/4.commands/module",{"title":706,"path":707,"stem":708,"titleTemplate":6},"nuxi prepare","/docs/api/commands/prepare","docs/3.api/4.commands/prepare",{"title":710,"path":711,"stem":712,"titleTemplate":6},"nuxi preview","/docs/api/commands/preview","docs/3.api/4.commands/preview",{"title":714,"path":715,"stem":716,"titleTemplate":6},"nuxi typecheck","/docs/api/commands/typecheck","docs/3.api/4.commands/typecheck",{"title":718,"path":719,"stem":720,"titleTemplate":6},"nuxi upgrade","/docs/api/commands/upgrade","docs/3.api/4.commands/upgrade",{"title":307,"titleTemplate":722,"icon":723,"path":724,"stem":725,"children":726,"page":108},"%s · Nuxt Kit","i-lucide-package","/docs/api/kit","docs/3.api/5.kit",[727,730,733,737,741,745,749,753,757,761,765,768,771,775,779,783],{"title":143,"path":728,"stem":729,"titleTemplate":6},"/docs/api/kit/modules","docs/3.api/5.kit/1.modules",{"title":291,"path":731,"stem":732,"titleTemplate":6},"/docs/api/kit/runtime-config","docs/3.api/5.kit/10.runtime-config",{"title":734,"path":735,"stem":736,"titleTemplate":6},"Templates","/docs/api/kit/templates","docs/3.api/5.kit/10.templates",{"title":738,"path":739,"stem":740,"titleTemplate":6},"Nitro","/docs/api/kit/nitro","docs/3.api/5.kit/11.nitro",{"title":742,"path":743,"stem":744,"titleTemplate":6},"Resolving","/docs/api/kit/resolving","docs/3.api/5.kit/12.resolving",{"title":746,"path":747,"stem":748,"titleTemplate":6},"Logging","/docs/api/kit/logging","docs/3.api/5.kit/13.logging",{"title":750,"path":751,"stem":752,"titleTemplate":6},"Builder","/docs/api/kit/builder","docs/3.api/5.kit/14.builder",{"title":754,"path":755,"stem":756,"titleTemplate":6},"Examples","/docs/api/kit/examples","docs/3.api/5.kit/15.examples",{"title":758,"path":759,"stem":760,"titleTemplate":6},"Programmatic Usage","/docs/api/kit/programmatic","docs/3.api/5.kit/2.programmatic",{"title":762,"path":763,"stem":764,"titleTemplate":6},"Compatibility","/docs/api/kit/compatibility","docs/3.api/5.kit/3.compatibility",{"title":123,"path":766,"stem":767,"titleTemplate":6},"/docs/api/kit/autoimports","docs/3.api/5.kit/4.autoimports",{"title":353,"path":769,"stem":770,"titleTemplate":6},"/docs/api/kit/components","docs/3.api/5.kit/5.components",{"title":772,"path":773,"stem":774,"titleTemplate":6},"Context","/docs/api/kit/context","docs/3.api/5.kit/6.context",{"title":776,"path":777,"stem":778,"titleTemplate":6},"Pages","/docs/api/kit/pages","docs/3.api/5.kit/7.pages",{"title":780,"path":781,"stem":782,"titleTemplate":6},"Layout","/docs/api/kit/layout","docs/3.api/5.kit/8.layout",{"title":784,"path":785,"stem":786,"titleTemplate":6},"Plugins","/docs/api/kit/plugins","docs/3.api/5.kit/9.plugins",{"title":788,"titleTemplate":6,"icon":789,"path":790,"stem":791,"children":792,"page":108},"Advanced","i-lucide-brain","/docs/api/advanced","docs/3.api/6.advanced",[793,796],{"title":299,"path":794,"stem":795,"titleTemplate":6},"/docs/api/advanced/hooks","docs/3.api/6.advanced/1.hooks",{"title":797,"path":798,"stem":799,"titleTemplate":6},"Import meta","/docs/api/advanced/import-meta","docs/3.api/6.advanced/2.import-meta",{"title":801,"path":802,"stem":803,"titleTemplate":804,"icon":32},"Nuxt Configuration","/docs/api/nuxt-config","docs/3.api/6.nuxt-config","%s",{"title":754,"titleTemplate":806,"icon":807,"path":808,"stem":809,"children":810,"page":108},"%s · Nuxt Examples","i-lucide-app-window-mac","/docs/examples","docs/4.examples",[811,815,837,852,888],{"title":812,"path":813,"stem":814,"titleTemplate":6},"Hello World","/docs/examples/hello-world","docs/4.examples/0.hello-world",{"title":283,"path":816,"stem":817,"children":818,"page":108},"/docs/examples/features","docs/4.examples/1.features",[819,823,826,829,833],{"title":820,"path":821,"stem":822,"titleTemplate":6},"Auto Imports","/docs/examples/features/auto-imports","docs/4.examples/1.features/1.auto-imports",{"title":64,"path":824,"stem":825,"titleTemplate":6},"/docs/examples/features/data-fetching","docs/4.examples/1.features/2.data-fetching",{"title":69,"path":827,"stem":828,"titleTemplate":6},"/docs/examples/features/state-management","docs/4.examples/1.features/3.state-management",{"title":830,"path":831,"stem":832,"titleTemplate":6},"Meta Tags","/docs/examples/features/meta-tags","docs/4.examples/1.features/4.meta-tags",{"title":834,"path":835,"stem":836,"titleTemplate":6},"Layouts","/docs/examples/features/layouts","docs/4.examples/1.features/5.layouts",{"title":49,"path":838,"stem":839,"children":840,"page":108},"/docs/examples/routing","docs/4.examples/2.routing",[841,845,848],{"title":842,"path":843,"stem":844,"titleTemplate":6},"Middleware","/docs/examples/routing/middleware","docs/4.examples/2.routing/middleware",{"title":776,"path":846,"stem":847,"titleTemplate":6},"/docs/examples/routing/pages","docs/4.examples/2.routing/pages",{"title":849,"path":850,"stem":851,"titleTemplate":6},"Universal Router","/docs/examples/routing/universal-router","docs/4.examples/2.routing/universal-router",{"title":788,"path":853,"stem":854,"children":855,"page":108},"/docs/examples/advanced","docs/4.examples/4.advanced",[856,859,862,866,870,874,878,881,884],{"title":84,"path":857,"stem":858,"titleTemplate":6},"/docs/examples/advanced/config-extends","docs/4.examples/4.advanced/config-extends",{"title":74,"path":860,"stem":861,"titleTemplate":6},"/docs/examples/advanced/error-handling","docs/4.examples/4.advanced/error-handling",{"title":863,"path":864,"stem":865,"titleTemplate":6},"JSX / TSX","/docs/examples/advanced/jsx","docs/4.examples/4.advanced/jsx",{"title":867,"path":868,"stem":869,"titleTemplate":6},"Locale","/docs/examples/advanced/locale","docs/4.examples/4.advanced/locale",{"title":871,"path":872,"stem":873,"titleTemplate":6},"Module Extend Pages","/docs/examples/advanced/module-extend-pages","docs/4.examples/4.advanced/module-extend-pages",{"title":875,"path":876,"stem":877,"titleTemplate":6},"Teleport","/docs/examples/advanced/teleport","docs/4.examples/4.advanced/teleport",{"title":99,"path":879,"stem":880,"titleTemplate":6},"/docs/examples/advanced/testing","docs/4.examples/4.advanced/testing",{"title":436,"path":882,"stem":883,"titleTemplate":6},"/docs/examples/advanced/use-cookie","docs/4.examples/4.advanced/use-cookie",{"title":885,"path":886,"stem":887,"titleTemplate":6},"Use Custom Fetch Composable","/docs/examples/advanced/use-custom-fetch-composable","docs/4.examples/4.advanced/use-custom-fetch-composable",{"title":889,"path":890,"stem":891,"children":892,"page":108},"Experimental","/docs/examples/experimental","docs/4.examples/7.experimental",[893],{"title":894,"path":895,"stem":896,"titleTemplate":6},"WASM","/docs/examples/experimental/wasm","docs/4.examples/7.experimental/wasm",{"title":898,"titleTemplate":899,"icon":900,"path":901,"stem":902,"children":903,"page":108},"Community","%s · Nuxt Community","i-lucide-messages-square","/docs/community","docs/5.community",[904,909,914,919,924,929],{"title":905,"path":906,"stem":907,"titleTemplate":6,"icon":908},"Getting Help","/docs/community/getting-help","docs/5.community/2.getting-help","i-lucide-life-buoy",{"title":910,"path":911,"stem":912,"titleTemplate":6,"icon":913},"Reporting Bugs","/docs/community/reporting-bugs","docs/5.community/3.reporting-bugs","i-lucide-bug",{"title":915,"path":916,"stem":917,"titleTemplate":6,"icon":918},"Contribution","/docs/community/contribution","docs/5.community/4.contribution","i-lucide-git-pull-request",{"title":920,"path":921,"stem":922,"titleTemplate":6,"icon":923},"Framework","/docs/community/framework-contribution","docs/5.community/5.framework-contribution","i-lucide-github",{"title":925,"path":926,"stem":927,"titleTemplate":6,"icon":928},"Roadmap","/docs/community/roadmap","docs/5.community/6.roadmap","i-lucide-map",{"title":930,"path":931,"stem":932,"titleTemplate":6,"icon":933},"Releases","/docs/community/changelog","docs/5.community/7.changelog","i-lucide-bell-dot",{"title":935,"titleTemplate":936,"icon":937,"path":938,"stem":939,"children":940,"page":108},"Migrate to Nuxt Bridge","Migrate to Nuxt Bridge: %s","i-lucide-ship","/docs/bridge","docs/6.bridge",[941,945,948,951,955,959,963,966,969,972],{"title":942,"path":943,"stem":944,"titleTemplate":6},"Overview","/docs/bridge/overview","docs/6.bridge/1.overview",{"title":29,"path":946,"stem":947,"titleTemplate":6},"/docs/bridge/configuration","docs/6.bridge/10.configuration",{"title":151,"path":949,"stem":950,"titleTemplate":6},"/docs/bridge/typescript","docs/6.bridge/2.typescript",{"title":952,"path":953,"stem":954,"titleTemplate":6},"Legacy Composition API","/docs/bridge/bridge-composition-api","docs/6.bridge/3.bridge-composition-api",{"title":956,"path":957,"stem":958,"titleTemplate":6},"Plugins and Middleware","/docs/bridge/plugins-and-middleware","docs/6.bridge/4.plugins-and-middleware",{"title":960,"path":961,"stem":962,"titleTemplate":6},"New Composition API","/docs/bridge/nuxt3-compatible-api","docs/6.bridge/5.nuxt3-compatible-api",{"title":830,"path":964,"stem":965,"titleTemplate":6},"/docs/bridge/meta","docs/6.bridge/6.meta",{"title":291,"path":967,"stem":968,"titleTemplate":6},"/docs/bridge/runtime-config","docs/6.bridge/7.runtime-config",{"title":738,"path":970,"stem":971,"titleTemplate":6},"/docs/bridge/nitro","docs/6.bridge/8.nitro",{"title":973,"path":974,"stem":975,"titleTemplate":6},"Vite","/docs/bridge/vite","docs/6.bridge/9.vite",{"title":977,"titleTemplate":978,"icon":107,"path":979,"stem":980,"children":981,"page":108},"Migrate to Nuxt 3","Migrate to Nuxt 3: %s","/docs/migration","docs/7.migration",[982,985,989,992,995,998,1001,1004,1007,1011,1015],{"title":942,"path":983,"stem":984,"titleTemplate":6},"/docs/migration/overview","docs/7.migration/1.overview",{"title":986,"path":987,"stem":988,"titleTemplate":6},"Build Tooling","/docs/migration/bundling","docs/7.migration/10.bundling",{"title":79,"path":990,"stem":991,"titleTemplate":6},"/docs/migration/server","docs/7.migration/11.server",{"title":29,"path":993,"stem":994,"titleTemplate":6},"/docs/migration/configuration","docs/7.migration/2.configuration",{"title":143,"path":996,"stem":997,"titleTemplate":6},"/docs/migration/module-authors","docs/7.migration/20.module-authors",{"title":820,"path":999,"stem":1000,"titleTemplate":6},"/docs/migration/auto-imports","docs/7.migration/3.auto-imports",{"title":830,"path":1002,"stem":1003,"titleTemplate":6},"/docs/migration/meta","docs/7.migration/4.meta",{"title":956,"path":1005,"stem":1006,"titleTemplate":6},"/docs/migration/plugins-and-middleware","docs/7.migration/5.plugins-and-middleware",{"title":1008,"path":1009,"stem":1010,"titleTemplate":6},"Pages and Layouts","/docs/migration/pages-and-layouts","docs/7.migration/6.pages-and-layouts",{"title":1012,"path":1013,"stem":1014,"titleTemplate":6},"Component Options","/docs/migration/component-options","docs/7.migration/7.component-options",{"title":291,"path":1016,"stem":1017,"titleTemplate":6},"/docs/migration/runtime-config","docs/7.migration/8.runtime-config",{"title":1019,"path":1020,"stem":1021,"children":1022,"page":108},"Blog","/blog","blog",[1023,1027,1031,1035,1039,1043,1047,1051,1055,1059,1063,1067,1071,1075,1079,1083,1087,1091,1095,1099,1103],{"title":1024,"path":1025,"stem":1026},"Announcing 3.0","/blog/v3","blog/1.v3",{"title":1028,"path":1029,"stem":1030},"Nuxt 3.3","/blog/v3-3","blog/10.v3-3",{"title":1032,"path":1033,"stem":1034},"Nuxt 3.4","/blog/v3-4","blog/11.v3-4",{"title":1036,"path":1037,"stem":1038},"Nuxt 3.5","/blog/v3-5","blog/12.v3-5",{"title":1040,"path":1041,"stem":1042},"Nuxt 3.6","/blog/v3-6","blog/13.v3-6",{"title":1044,"path":1045,"stem":1046},"Nuxt on the Edge","/blog/nuxt-on-the-edge","blog/14.nuxt-on-the-edge",{"title":1048,"path":1049,"stem":1050},"Nuxt DevTools v1.0","/blog/nuxt-devtools-v1-0","blog/18.nuxt-devtools-v1-0",{"title":1052,"path":1053,"stem":1054},"Nuxt: A vision for 2023","/blog/vision-2023","blog/2.vision-2023",{"title":1056,"path":1057,"stem":1058},"The Evolution of Shiki v1.0","/blog/shiki-v1","blog/21.shiki-v1",{"title":1060,"path":1061,"stem":1062},"Refreshed Nuxt ESLint Integrations","/blog/eslint-module","blog/24.eslint-module",{"title":1064,"path":1065,"stem":1066},"Introducing Nuxt Scripts","/blog/nuxt-scripts","blog/26.nuxt-scripts",{"title":1068,"path":1069,"stem":1070},"Introducing Nuxt Icon v1","/blog/nuxt-icon-v1-0","blog/29.nuxt-icon-v1-0",{"title":1072,"path":1073,"stem":1074},"Introducing Nuxt DevTools","/blog/introducing-nuxt-devtools","blog/3.introducing-nuxt-devtools",{"title":1076,"path":1077,"stem":1078},"Announcing Nuxt 3 Release Candidate","/blog/nuxt3-rc","blog/3.nuxt3-rc",{"title":1080,"path":1081,"stem":1082},"Nuxt 2 End-of-Life (EOL)","/blog/nuxt2-eol","blog/4.nuxt2-eol",{"title":1084,"path":1085,"stem":1086},"Introducing Nuxt 3 Beta","/blog/nuxt3-beta","blog/4.nuxt3-beta",{"title":1088,"path":1089,"stem":1090},"Going Full Static","/blog/going-full-static","blog/5.going-full-static",{"title":1092,"path":1093,"stem":1094},"Introducing Smart Prefetching","/blog/introducing-smart-prefetching","blog/6.introducing-smart-prefetching",{"title":1096,"path":1097,"stem":1098},"Understanding how fetch works in Nuxt 2.12","/blog/understanding-how-fetch-works-in-nuxt-2-12","blog/7.understanding-how-fetch-works-in-nuxt-2-12",{"title":1100,"path":1101,"stem":1102},"Nuxt 2 Static Improvements","/blog/nuxt-static-improvements","blog/8.nuxt-static-improvements",{"title":1104,"path":1105,"stem":1106},"Nuxt 2: From Terminal to Browser","/blog/nuxtjs-from-terminal-to-browser","blog/9.nuxtjs-from-terminal-to-browser",{"id":1108,"title":99,"body":1109,"description":6346,"extension":6347,"links":6,"meta":6348,"navigation":6349,"path":100,"seo":6350,"stem":101,"titleTemplate":6,"__hash__":6351},"docs/docs/1.getting-started/17.testing.md",{"type":1110,"value":1111,"toc":6330},"minimal",[1112,1125,1140,1150,1154,1160,1201,1319,1323,1339,1344,1493,1517,1526,1530,1536,1555,1628,1639,1809,1825,1888,1913,1917,1922,1929,1936,1942,1956,1966,2089,2093,2098,2104,2109,2132,2135,2284,2454,2460,2469,2484,2492,2498,2501,2646,2806,2812,2821,2921,2939,2959,3189,3195,3200,3207,3444,3452,3629,3635,3640,3647,3652,3722,3729,3824,3843,3847,3855,3869,3874,3959,3964,4035,4041,4047,4647,4653,4657,4681,4684,4693,4831,4850,4856,4860,4899,4903,4927,4930,5106,5114,5117,5120,5129,5390,5394,5400,5403,5455,5461,5464,5536,5542,5545,5600,5604,5610,5616,5635,5690,5694,5702,5774,5781,5950,5955,5966,6114,6117,6326],[1113,1114,1115],"tip",{},[1116,1117,1118,1119,1124],"p",{},"If you are a module author, you can find more specific information in the ",[1120,1121,1123],"a",{"href":1122},"/docs/guide/going-further/modules#testing","Module Author's guide",".",[1116,1126,1127,1128,1132,1133,1139],{},"Nuxt offers first-class support for end-to-end and unit testing of your Nuxt application via ",[1129,1130,1131],"code",{},"@nuxt/test-utils",", a library of test utilities and configuration that currently powers the ",[1120,1134,1138],{"href":1135,"rel":1136},"https://github.com/nuxt/nuxt/tree/main/test",[1137],"nofollow","tests we use on Nuxt itself"," and tests throughout the module ecosystem.",[1113,1141,1145],{"icon":1142,"target":1143,"to":1144},"i-lucide-video","_blank","https://www.youtube.com/watch?v=yGzwk9xi9gU",[1116,1146,1147,1148,1124],{},"Watch a video from Alexander Lichter about getting started with the ",[1129,1149,1131],{},[1151,1152,24],"h2",{"id":1153},"installation",[1116,1155,1156,1157,1159],{},"In order to allow you to manage your other testing dependencies, ",[1129,1158,1131],{}," ships with various optional peer dependencies. For example:",[1161,1162,1163,1175,1191],"ul",{},[1164,1165,1166,1167,1170,1171,1174],"li",{},"you can choose between ",[1129,1168,1169],{},"happy-dom"," and ",[1129,1172,1173],{},"jsdom"," for a runtime Nuxt environment",[1164,1176,1166,1177,1180,1181,1180,1184,1170,1187,1190],{},[1129,1178,1179],{},"vitest",", ",[1129,1182,1183],{},"cucumber",[1129,1185,1186],{},"jest",[1129,1188,1189],{},"playwright"," for end-to-end test runners",[1164,1192,1193,1196,1197,1200],{},[1129,1194,1195],{},"playwright-core"," is only required if you wish to use the built-in browser testing utilities (and are not using ",[1129,1198,1199],{},"@playwright/test"," as your test runner)",[1202,1203,1204,1244,1270,1295],"code-group",{},[1205,1206,1212],"pre",{"className":1207,"code":1208,"filename":1209,"language":1210,"meta":1211,"style":1211},"language-bash shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","npm i --save-dev @nuxt/test-utils vitest @vue/test-utils happy-dom playwright-core\n","npm","bash","",[1129,1213,1214],{"__ignoreMap":1211},[1215,1216,1219,1222,1226,1229,1232,1235,1238,1241],"span",{"class":1217,"line":1218},"line",1,[1215,1220,1209],{"class":1221},"sT2Ow",[1215,1223,1225],{"class":1224},"s5UST"," i",[1215,1227,1228],{"class":1224}," --save-dev",[1215,1230,1231],{"class":1224}," @nuxt/test-utils",[1215,1233,1234],{"class":1224}," vitest",[1215,1236,1237],{"class":1224}," @vue/test-utils",[1215,1239,1240],{"class":1224}," happy-dom",[1215,1242,1243],{"class":1224}," playwright-core\n",[1205,1245,1248],{"className":1207,"code":1246,"filename":1247,"language":1210,"meta":1211,"style":1211},"yarn add --dev @nuxt/test-utils vitest @vue/test-utils happy-dom playwright-core\n","yarn",[1129,1249,1250],{"__ignoreMap":1211},[1215,1251,1252,1254,1257,1260,1262,1264,1266,1268],{"class":1217,"line":1218},[1215,1253,1247],{"class":1221},[1215,1255,1256],{"class":1224}," add",[1215,1258,1259],{"class":1224}," --dev",[1215,1261,1231],{"class":1224},[1215,1263,1234],{"class":1224},[1215,1265,1237],{"class":1224},[1215,1267,1240],{"class":1224},[1215,1269,1243],{"class":1224},[1205,1271,1274],{"className":1207,"code":1272,"filename":1273,"language":1210,"meta":1211,"style":1211},"pnpm add -D @nuxt/test-utils vitest @vue/test-utils happy-dom playwright-core\n","pnpm",[1129,1275,1276],{"__ignoreMap":1211},[1215,1277,1278,1280,1282,1285,1287,1289,1291,1293],{"class":1217,"line":1218},[1215,1279,1273],{"class":1221},[1215,1281,1256],{"class":1224},[1215,1283,1284],{"class":1224}," -D",[1215,1286,1231],{"class":1224},[1215,1288,1234],{"class":1224},[1215,1290,1237],{"class":1224},[1215,1292,1240],{"class":1224},[1215,1294,1243],{"class":1224},[1205,1296,1299],{"className":1207,"code":1297,"filename":1298,"language":1210,"meta":1211,"style":1211},"bun add --dev @nuxt/test-utils vitest @vue/test-utils happy-dom playwright-core\n","bun",[1129,1300,1301],{"__ignoreMap":1211},[1215,1302,1303,1305,1307,1309,1311,1313,1315,1317],{"class":1217,"line":1218},[1215,1304,1298],{"class":1221},[1215,1306,1256],{"class":1224},[1215,1308,1259],{"class":1224},[1215,1310,1231],{"class":1224},[1215,1312,1234],{"class":1224},[1215,1314,1237],{"class":1224},[1215,1316,1240],{"class":1224},[1215,1318,1243],{"class":1224},[1151,1320,1322],{"id":1321},"unit-testing","Unit Testing",[1116,1324,1325,1326,1331,1332,1338],{},"We currently ship an environment for unit testing code that needs a ",[1120,1327,1330],{"href":1328,"rel":1329},"https://nuxt.com",[1137],"Nuxt"," runtime environment. It currently ",[1333,1334,1335,1336],"em",{},"only has support for ",[1129,1337,1179],{}," (although contribution to add other runtimes would be welcome).",[1340,1341,1343],"h3",{"id":1342},"setup","Setup",[1345,1346,1347,1426],"ol",{},[1164,1348,1349,1350,1353,1354,1357,1358],{},"Add ",[1129,1351,1352],{},"@nuxt/test-utils/module"," to your ",[1129,1355,1356],{},"nuxt.config"," file (optional). It adds a Vitest integration to your Nuxt DevTools which supports running your unit tests in development.",[1205,1359,1364],{"className":1360,"code":1361,"language":1362,"meta":1363,"style":1211},"language-ts shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","export default defineNuxtConfig({\n  modules: [\n    '@nuxt/test-utils/module'\n  ]\n})\n","ts","twoslash",[1129,1365,1366,1387,1400,1411,1417],{"__ignoreMap":1211},[1215,1367,1368,1372,1375,1379,1383],{"class":1217,"line":1218},[1215,1369,1371],{"class":1370},"sFVN2","export",[1215,1373,1374],{"class":1370}," default",[1215,1376,1378],{"class":1377},"szd4z"," defineNuxtConfig",[1215,1380,1382],{"class":1381},"spdxX","(",[1215,1384,1386],{"class":1385},"sYp4K","{\n",[1215,1388,1390,1394,1397],{"class":1217,"line":1389},2,[1215,1391,1393],{"class":1392},"sQ5dg","  modules",[1215,1395,1396],{"class":1385},":",[1215,1398,1399],{"class":1381}," [\n",[1215,1401,1403,1406,1408],{"class":1217,"line":1402},3,[1215,1404,1405],{"class":1385},"    '",[1215,1407,1352],{"class":1224},[1215,1409,1410],{"class":1385},"'\n",[1215,1412,1414],{"class":1217,"line":1413},4,[1215,1415,1416],{"class":1381},"  ]\n",[1215,1418,1420,1423],{"class":1217,"line":1419},5,[1215,1421,1422],{"class":1385},"}",[1215,1424,1425],{"class":1381},")\n",[1164,1427,1428,1429,1432,1433],{},"Create a ",[1129,1430,1431],{},"vitest.config.ts"," with the following content:",[1205,1434,1436],{"className":1360,"code":1435,"language":1362,"meta":1363,"style":1211},"import { defineVitestConfig } from '@nuxt/test-utils/config'\n\nexport default defineVitestConfig({\n  // any custom Vitest config you require\n})\n",[1129,1437,1438,1463,1469,1481,1487],{"__ignoreMap":1211},[1215,1439,1440,1443,1446,1449,1452,1455,1458,1461],{"class":1217,"line":1218},[1215,1441,1442],{"class":1370},"import",[1215,1444,1445],{"class":1385}," {",[1215,1447,1448],{"class":1381}," defineVitestConfig",[1215,1450,1451],{"class":1385}," }",[1215,1453,1454],{"class":1370}," from",[1215,1456,1457],{"class":1385}," '",[1215,1459,1460],{"class":1224},"@nuxt/test-utils/config",[1215,1462,1410],{"class":1385},[1215,1464,1465],{"class":1217,"line":1389},[1215,1466,1468],{"emptyLinePlaceholder":1467},true,"\n",[1215,1470,1471,1473,1475,1477,1479],{"class":1217,"line":1402},[1215,1472,1371],{"class":1370},[1215,1474,1374],{"class":1370},[1215,1476,1448],{"class":1377},[1215,1478,1382],{"class":1381},[1215,1480,1386],{"class":1385},[1215,1482,1483],{"class":1217,"line":1413},[1215,1484,1486],{"class":1485},"svXlt","  // any custom Vitest config you require\n",[1215,1488,1489,1491],{"class":1217,"line":1419},[1215,1490,1422],{"class":1385},[1215,1492,1425],{"class":1381},[1113,1494,1495,1508],{},[1116,1496,1497,1498,1500,1501,1504,1505,1507],{},"When importing ",[1129,1499,1131],{}," in your vitest config, It is necessary to have ",[1129,1502,1503],{},"\"type\": \"module\""," specified in your ",[1129,1506,264],{}," or rename your vitest config file appropriately.",[1509,1510,1511],"blockquote",{},[1116,1512,1513,1514,1124],{},"ie. ",[1129,1515,1516],{},"vitest.config.m{ts,js}",[1113,1518,1519],{},[1116,1520,1521,1522,1525],{},"It is possible to set environment variables for testing by using the ",[1129,1523,1524],{},".env.test"," file.",[1340,1527,1529],{"id":1528},"using-a-nuxt-runtime-environment","Using a Nuxt Runtime Environment",[1116,1531,1532,1533,1535],{},"By default, ",[1129,1534,1131],{}," will not change your default Vitest environment, so you can do fine-grained opt-in and run Nuxt tests together with other unit tests.",[1116,1537,1538,1539,1542,1543,1546,1547,1550,1551,1554],{},"You can opt in to a Nuxt environment by adding ",[1129,1540,1541],{},".nuxt."," to the test file's name (for example, ",[1129,1544,1545],{},"my-file.nuxt.test.ts"," or ",[1129,1548,1549],{},"my-file.nuxt.spec.ts",") or by adding ",[1129,1552,1553],{},"@vitest-environment nuxt"," as a comment directly in the test file.",[1205,1556,1558],{"className":1360,"code":1557,"language":1362,"meta":1363,"style":1211},"// @vitest-environment nuxt\nimport { test } from 'vitest'\n\ntest('my test', () => {\n  // ... test with Nuxt environment!\n})\n",[1129,1559,1560,1565,1584,1588,1616,1621],{"__ignoreMap":1211},[1215,1561,1562],{"class":1217,"line":1218},[1215,1563,1564],{"class":1485},"// @vitest-environment nuxt\n",[1215,1566,1567,1569,1571,1574,1576,1578,1580,1582],{"class":1217,"line":1389},[1215,1568,1442],{"class":1370},[1215,1570,1445],{"class":1385},[1215,1572,1573],{"class":1381}," test",[1215,1575,1451],{"class":1385},[1215,1577,1454],{"class":1370},[1215,1579,1457],{"class":1385},[1215,1581,1179],{"class":1224},[1215,1583,1410],{"class":1385},[1215,1585,1586],{"class":1217,"line":1402},[1215,1587,1468],{"emptyLinePlaceholder":1467},[1215,1589,1590,1593,1595,1598,1601,1603,1606,1609,1613],{"class":1217,"line":1413},[1215,1591,1592],{"class":1377},"test",[1215,1594,1382],{"class":1381},[1215,1596,1597],{"class":1385},"'",[1215,1599,1600],{"class":1224},"my test",[1215,1602,1597],{"class":1385},[1215,1604,1605],{"class":1385},",",[1215,1607,1608],{"class":1385}," ()",[1215,1610,1612],{"class":1611},"sRBFq"," =>",[1215,1614,1615],{"class":1385}," {\n",[1215,1617,1618],{"class":1217,"line":1419},[1215,1619,1620],{"class":1485},"  // ... test with Nuxt environment!\n",[1215,1622,1624,1626],{"class":1217,"line":1623},6,[1215,1625,1422],{"class":1385},[1215,1627,1425],{"class":1381},[1116,1629,1630,1631,1634,1635,1124],{},"You can alternatively set ",[1129,1632,1633],{},"environment: 'nuxt'"," in your Vitest configuration to enable the Nuxt environment for ",[1636,1637,1638],"strong",{},"all tests",[1205,1640,1642],{"className":1360,"code":1641,"language":1362,"meta":1363,"style":1211},"// vitest.config.ts\nimport { fileURLToPath } from 'node:url'\nimport { defineVitestConfig } from '@nuxt/test-utils/config'\n\nexport default defineVitestConfig({\n  test: {\n    environment: 'nuxt',\n    // you can optionally set Nuxt-specific environment options\n    // environmentOptions: {\n    //   nuxt: {\n    //     rootDir: fileURLToPath(new URL('./playground', import.meta.url)),\n    //     domEnvironment: 'happy-dom', // 'happy-dom' (default) or 'jsdom'\n    //     overrides: {\n    //       // other Nuxt config you want to pass\n    //     }\n    //   }\n    // }\n  }\n})\n",[1129,1643,1644,1649,1669,1687,1691,1703,1712,1730,1736,1742,1748,1754,1763,1769,1778,1784,1790,1796,1802],{"__ignoreMap":1211},[1215,1645,1646],{"class":1217,"line":1218},[1215,1647,1648],{"class":1485},"// vitest.config.ts\n",[1215,1650,1651,1653,1655,1658,1660,1662,1664,1667],{"class":1217,"line":1389},[1215,1652,1442],{"class":1370},[1215,1654,1445],{"class":1385},[1215,1656,1657],{"class":1381}," fileURLToPath",[1215,1659,1451],{"class":1385},[1215,1661,1454],{"class":1370},[1215,1663,1457],{"class":1385},[1215,1665,1666],{"class":1224},"node:url",[1215,1668,1410],{"class":1385},[1215,1670,1671,1673,1675,1677,1679,1681,1683,1685],{"class":1217,"line":1402},[1215,1672,1442],{"class":1370},[1215,1674,1445],{"class":1385},[1215,1676,1448],{"class":1381},[1215,1678,1451],{"class":1385},[1215,1680,1454],{"class":1370},[1215,1682,1457],{"class":1385},[1215,1684,1460],{"class":1224},[1215,1686,1410],{"class":1385},[1215,1688,1689],{"class":1217,"line":1413},[1215,1690,1468],{"emptyLinePlaceholder":1467},[1215,1692,1693,1695,1697,1699,1701],{"class":1217,"line":1419},[1215,1694,1371],{"class":1370},[1215,1696,1374],{"class":1370},[1215,1698,1448],{"class":1377},[1215,1700,1382],{"class":1381},[1215,1702,1386],{"class":1385},[1215,1704,1705,1708,1710],{"class":1217,"line":1623},[1215,1706,1707],{"class":1392},"  test",[1215,1709,1396],{"class":1385},[1215,1711,1615],{"class":1385},[1215,1713,1715,1718,1720,1722,1725,1727],{"class":1217,"line":1714},7,[1215,1716,1717],{"class":1392},"    environment",[1215,1719,1396],{"class":1385},[1215,1721,1457],{"class":1385},[1215,1723,1724],{"class":1224},"nuxt",[1215,1726,1597],{"class":1385},[1215,1728,1729],{"class":1385},",\n",[1215,1731,1733],{"class":1217,"line":1732},8,[1215,1734,1735],{"class":1485},"    // you can optionally set Nuxt-specific environment options\n",[1215,1737,1739],{"class":1217,"line":1738},9,[1215,1740,1741],{"class":1485},"    // environmentOptions: {\n",[1215,1743,1745],{"class":1217,"line":1744},10,[1215,1746,1747],{"class":1485},"    //   nuxt: {\n",[1215,1749,1751],{"class":1217,"line":1750},11,[1215,1752,1753],{"class":1485},"    //     rootDir: fileURLToPath(new URL('./playground', import.meta.url)),\n",[1215,1755,1757,1760],{"class":1217,"line":1756},12,[1215,1758,1759],{"class":1485},"    //     domEnvironment: 'happy-dom',",[1215,1761,1762],{"class":1485}," // 'happy-dom' (default) or 'jsdom'\n",[1215,1764,1766],{"class":1217,"line":1765},13,[1215,1767,1768],{"class":1485},"    //     overrides: {\n",[1215,1770,1772,1775],{"class":1217,"line":1771},14,[1215,1773,1774],{"class":1485},"    //",[1215,1776,1777],{"class":1485},"       // other Nuxt config you want to pass\n",[1215,1779,1781],{"class":1217,"line":1780},15,[1215,1782,1783],{"class":1485},"    //     }\n",[1215,1785,1787],{"class":1217,"line":1786},16,[1215,1788,1789],{"class":1485},"    //   }\n",[1215,1791,1793],{"class":1217,"line":1792},17,[1215,1794,1795],{"class":1485},"    // }\n",[1215,1797,1799],{"class":1217,"line":1798},18,[1215,1800,1801],{"class":1385},"  }\n",[1215,1803,1805,1807],{"class":1217,"line":1804},19,[1215,1806,1422],{"class":1385},[1215,1808,1425],{"class":1381},[1116,1810,1811,1812,1814,1815,1818,1819,1824],{},"If you have set ",[1129,1813,1633],{}," by default, you can then opt ",[1333,1816,1817],{},"out"," of the ",[1120,1820,1823],{"href":1821,"rel":1822},"https://vitest.dev/guide/environment.html#test-environment",[1137],"default environment"," per test file as needed.",[1205,1826,1828],{"className":1360,"code":1827,"language":1362,"meta":1363,"style":1211},"// @vitest-environment node\nimport { test } from 'vitest'\n\ntest('my test', () => {\n  // ... test without Nuxt environment!\n})\n",[1129,1829,1830,1835,1853,1857,1877,1882],{"__ignoreMap":1211},[1215,1831,1832],{"class":1217,"line":1218},[1215,1833,1834],{"class":1485},"// @vitest-environment node\n",[1215,1836,1837,1839,1841,1843,1845,1847,1849,1851],{"class":1217,"line":1389},[1215,1838,1442],{"class":1370},[1215,1840,1445],{"class":1385},[1215,1842,1573],{"class":1381},[1215,1844,1451],{"class":1385},[1215,1846,1454],{"class":1370},[1215,1848,1457],{"class":1385},[1215,1850,1179],{"class":1224},[1215,1852,1410],{"class":1385},[1215,1854,1855],{"class":1217,"line":1402},[1215,1856,1468],{"emptyLinePlaceholder":1467},[1215,1858,1859,1861,1863,1865,1867,1869,1871,1873,1875],{"class":1217,"line":1413},[1215,1860,1592],{"class":1377},[1215,1862,1382],{"class":1381},[1215,1864,1597],{"class":1385},[1215,1866,1600],{"class":1224},[1215,1868,1597],{"class":1385},[1215,1870,1605],{"class":1385},[1215,1872,1608],{"class":1385},[1215,1874,1612],{"class":1611},[1215,1876,1615],{"class":1385},[1215,1878,1879],{"class":1217,"line":1419},[1215,1880,1881],{"class":1485},"  // ... test without Nuxt environment!\n",[1215,1883,1884,1886],{"class":1217,"line":1623},[1215,1885,1422],{"class":1385},[1215,1887,1425],{"class":1381},[1889,1890,1891,1910],"warning",{},[1116,1892,1893,1894,1546,1900,1906,1907,1909],{},"When you run your tests within the Nuxt environment, they will be running in a ",[1120,1895,1898],{"href":1896,"rel":1897},"https://github.com/capricorn86/happy-dom",[1137],[1129,1899,1169],{},[1120,1901,1904],{"href":1902,"rel":1903},"https://github.com/jsdom/jsdom",[1137],[1129,1905,1173],{}," environment. Before your tests run, a global Nuxt app will be initialized (including, for example, running any plugins or code you've defined in your ",[1129,1908,248],{},").",[1116,1911,1912],{},"This means you should take particular care not to mutate the global state in your tests (or, if you need to, to reset it afterwards).",[1340,1914,1916],{"id":1915},"built-in-mocks","🎭 Built-In Mocks",[1116,1918,1919,1921],{},[1129,1920,1131],{}," provides some built-in mocks for the DOM environment.",[1923,1924,1926],"h4",{"id":1925},"intersectionobserver",[1129,1927,1928],{},"intersectionObserver",[1116,1930,1931,1932,1935],{},"Default ",[1129,1933,1934],{},"true",", creates a dummy class without any functionality for the IntersectionObserver API",[1923,1937,1939],{"id":1938},"indexeddb",[1129,1940,1941],{},"indexedDB",[1116,1943,1931,1944,1947,1948,1955],{},[1129,1945,1946],{},"false",", uses ",[1120,1949,1952],{"href":1950,"rel":1951},"https://github.com/dumbmatter/fakeIndexedDB",[1137],[1129,1953,1954],{},"fake-indexeddb"," to create a functional mock of the IndexedDB API",[1116,1957,1958,1959,1962,1963,1965],{},"These can be configured in the ",[1129,1960,1961],{},"environmentOptions"," section of your ",[1129,1964,1431],{}," file:",[1205,1967,1969],{"className":1360,"code":1968,"language":1362,"meta":1363,"style":1211},"import { defineVitestConfig } from '@nuxt/test-utils/config'\n\nexport default defineVitestConfig({\n  test: {\n    environmentOptions: {\n      nuxt: {\n        mock: {\n          intersectionObserver: true,\n          indexedDb: true,\n        }\n      }\n    }\n  }\n})\n",[1129,1970,1971,1989,1993,2005,2013,2022,2031,2040,2053,2064,2069,2074,2079,2083],{"__ignoreMap":1211},[1215,1972,1973,1975,1977,1979,1981,1983,1985,1987],{"class":1217,"line":1218},[1215,1974,1442],{"class":1370},[1215,1976,1445],{"class":1385},[1215,1978,1448],{"class":1381},[1215,1980,1451],{"class":1385},[1215,1982,1454],{"class":1370},[1215,1984,1457],{"class":1385},[1215,1986,1460],{"class":1224},[1215,1988,1410],{"class":1385},[1215,1990,1991],{"class":1217,"line":1389},[1215,1992,1468],{"emptyLinePlaceholder":1467},[1215,1994,1995,1997,1999,2001,2003],{"class":1217,"line":1402},[1215,1996,1371],{"class":1370},[1215,1998,1374],{"class":1370},[1215,2000,1448],{"class":1377},[1215,2002,1382],{"class":1381},[1215,2004,1386],{"class":1385},[1215,2006,2007,2009,2011],{"class":1217,"line":1413},[1215,2008,1707],{"class":1392},[1215,2010,1396],{"class":1385},[1215,2012,1615],{"class":1385},[1215,2014,2015,2018,2020],{"class":1217,"line":1419},[1215,2016,2017],{"class":1392},"    environmentOptions",[1215,2019,1396],{"class":1385},[1215,2021,1615],{"class":1385},[1215,2023,2024,2027,2029],{"class":1217,"line":1623},[1215,2025,2026],{"class":1392},"      nuxt",[1215,2028,1396],{"class":1385},[1215,2030,1615],{"class":1385},[1215,2032,2033,2036,2038],{"class":1217,"line":1714},[1215,2034,2035],{"class":1392},"        mock",[1215,2037,1396],{"class":1385},[1215,2039,1615],{"class":1385},[1215,2041,2042,2045,2047,2051],{"class":1217,"line":1732},[1215,2043,2044],{"class":1392},"          intersectionObserver",[1215,2046,1396],{"class":1385},[1215,2048,2050],{"class":2049},"sagxc"," true",[1215,2052,1729],{"class":1385},[1215,2054,2055,2058,2060,2062],{"class":1217,"line":1738},[1215,2056,2057],{"class":1392},"          indexedDb",[1215,2059,1396],{"class":1385},[1215,2061,2050],{"class":2049},[1215,2063,1729],{"class":1385},[1215,2065,2066],{"class":1217,"line":1744},[1215,2067,2068],{"class":1385},"        }\n",[1215,2070,2071],{"class":1217,"line":1750},[1215,2072,2073],{"class":1385},"      }\n",[1215,2075,2076],{"class":1217,"line":1756},[1215,2077,2078],{"class":1385},"    }\n",[1215,2080,2081],{"class":1217,"line":1765},[1215,2082,1801],{"class":1385},[1215,2084,2085,2087],{"class":1217,"line":1771},[1215,2086,1422],{"class":1385},[1215,2088,1425],{"class":1381},[1340,2090,2092],{"id":2091},"️-helpers","🛠️ Helpers",[1116,2094,2095,2097],{},[1129,2096,1131],{}," provides a number of helpers to make testing Nuxt apps easier.",[1923,2099,2101],{"id":2100},"mountsuspended",[1129,2102,2103],{},"mountSuspended",[1116,2105,2106,2108],{},[1129,2107,2103],{}," allows you to mount any Vue component within the Nuxt environment, allowing async setup and access to injections from your Nuxt plugins.",[2110,2111,2112],"note",{},[1116,2113,2114,2115,2117,2118,2121,2122,2125,2126,2131],{},"Under the hood, ",[1129,2116,2103],{}," wraps ",[1129,2119,2120],{},"mount"," from ",[1129,2123,2124],{},"@vue/test-utils",", so you can check out ",[1120,2127,2130],{"href":2128,"rel":2129},"https://test-utils.vuejs.org/guide/",[1137],"the Vue Test Utils documentation"," for more on the options you can pass, and how to use this utility.",[1116,2133,2134],{},"For example:",[1205,2136,2138],{"className":1360,"code":2137,"language":1362,"meta":1363,"style":1211},"// @noErrors\nimport { it, expect } from 'vitest'\nimport type { Component } from 'vue'\ndeclare module '#components' {\n  export const SomeComponent: Component\n}\n// ---cut---\n// tests/components/SomeComponents.nuxt.spec.ts\nimport { mountSuspended } from '@nuxt/test-utils/runtime'\nimport { SomeComponent } from '#components'\n\nit('can mount some component', async () => {\n    const component = await mountSuspended(SomeComponent)\n    expect(component.text()).toMatchInlineSnapshot(\n        '\"This is an auto-imported component\"'\n    )\n})\n\n",[1129,2139,2140,2145,2165,2185,2189,2214,2237,2263,2273,2278],{"__ignoreMap":1211},[1215,2141,2142],{"class":1217,"line":1218},[1215,2143,2144],{"class":1485},"// tests/components/SomeComponents.nuxt.spec.ts\n",[1215,2146,2147,2149,2151,2154,2156,2158,2160,2163],{"class":1217,"line":1389},[1215,2148,1442],{"class":1370},[1215,2150,1445],{"class":1385},[1215,2152,2153],{"class":1381}," mountSuspended",[1215,2155,1451],{"class":1385},[1215,2157,1454],{"class":1370},[1215,2159,1457],{"class":1385},[1215,2161,2162],{"class":1224},"@nuxt/test-utils/runtime",[1215,2164,1410],{"class":1385},[1215,2166,2167,2169,2171,2174,2176,2178,2180,2183],{"class":1217,"line":1402},[1215,2168,1442],{"class":1370},[1215,2170,1445],{"class":1385},[1215,2172,2173],{"class":1381}," SomeComponent",[1215,2175,1451],{"class":1385},[1215,2177,1454],{"class":1370},[1215,2179,1457],{"class":1385},[1215,2181,2182],{"class":1224},"#components",[1215,2184,1410],{"class":1385},[1215,2186,2187],{"class":1217,"line":1413},[1215,2188,1468],{"emptyLinePlaceholder":1467},[1215,2190,2191,2194,2196,2198,2201,2203,2205,2208,2210,2212],{"class":1217,"line":1419},[1215,2192,2193],{"class":1377},"it",[1215,2195,1382],{"class":1381},[1215,2197,1597],{"class":1385},[1215,2199,2200],{"class":1224},"can mount some component",[1215,2202,1597],{"class":1385},[1215,2204,1605],{"class":1385},[1215,2206,2207],{"class":1611}," async",[1215,2209,1608],{"class":1385},[1215,2211,1612],{"class":1611},[1215,2213,1615],{"class":1385},[1215,2215,2216,2219,2222,2225,2228,2230,2232,2235],{"class":1217,"line":1623},[1215,2217,2218],{"class":1611},"    const",[1215,2220,2221],{"class":1381}," component",[1215,2223,2224],{"class":1385}," =",[1215,2226,2227],{"class":1370}," await",[1215,2229,2153],{"class":1377},[1215,2231,1382],{"class":1392},[1215,2233,2234],{"class":1381},"SomeComponent",[1215,2236,1425],{"class":1392},[1215,2238,2239,2242,2244,2247,2249,2252,2255,2257,2260],{"class":1217,"line":1714},[1215,2240,2241],{"class":1377},"    expect",[1215,2243,1382],{"class":1392},[1215,2245,2246],{"class":1381},"component",[1215,2248,1124],{"class":1385},[1215,2250,2251],{"class":1377},"text",[1215,2253,2254],{"class":1392},"())",[1215,2256,1124],{"class":1385},[1215,2258,2259],{"class":1377},"toMatchInlineSnapshot",[1215,2261,2262],{"class":1392},"(\n",[1215,2264,2265,2268,2271],{"class":1217,"line":1732},[1215,2266,2267],{"class":1385},"        '",[1215,2269,2270],{"class":1224},"\"This is an auto-imported component\"",[1215,2272,1410],{"class":1385},[1215,2274,2275],{"class":1217,"line":1738},[1215,2276,2277],{"class":1392},"    )\n",[1215,2279,2280,2282],{"class":1217,"line":1744},[1215,2281,1422],{"class":1385},[1215,2283,1425],{"class":1381},[1205,2285,2287],{"className":1360,"code":2286,"language":1362,"meta":1363,"style":1211},"// @noErrors\nimport { it, expect } from 'vitest'\n// ---cut---\n// tests/components/SomeComponents.nuxt.spec.ts\nimport { mountSuspended } from '@nuxt/test-utils/runtime'\nimport App from '~/app.vue'\n\n// tests/App.nuxt.spec.ts\nit('can also mount an app', async () => {\n    const component = await mountSuspended(App, { route: '/test' })\n    expect(component.html()).toMatchInlineSnapshot(`\n      \"\u003Cdiv>This is an auto-imported component\u003C/div>\n      \u003Cdiv> I am a global component \u003C/div>\n      \u003Cdiv>/\u003C/div>\n      \u003Ca href=\"/test\"> Test link \u003C/a>\"\n    `)\n})\n",[1129,2288,2289,2293,2311,2328,2332,2337,2360,2397,2421,2426,2431,2436,2441,2448],{"__ignoreMap":1211},[1215,2290,2291],{"class":1217,"line":1218},[1215,2292,2144],{"class":1485},[1215,2294,2295,2297,2299,2301,2303,2305,2307,2309],{"class":1217,"line":1389},[1215,2296,1442],{"class":1370},[1215,2298,1445],{"class":1385},[1215,2300,2153],{"class":1381},[1215,2302,1451],{"class":1385},[1215,2304,1454],{"class":1370},[1215,2306,1457],{"class":1385},[1215,2308,2162],{"class":1224},[1215,2310,1410],{"class":1385},[1215,2312,2313,2315,2318,2321,2323,2326],{"class":1217,"line":1402},[1215,2314,1442],{"class":1370},[1215,2316,2317],{"class":1381}," App ",[1215,2319,2320],{"class":1370},"from",[1215,2322,1457],{"class":1385},[1215,2324,2325],{"class":1224},"~/app.vue",[1215,2327,1410],{"class":1385},[1215,2329,2330],{"class":1217,"line":1413},[1215,2331,1468],{"emptyLinePlaceholder":1467},[1215,2333,2334],{"class":1217,"line":1419},[1215,2335,2336],{"class":1485},"// tests/App.nuxt.spec.ts\n",[1215,2338,2339,2341,2343,2345,2348,2350,2352,2354,2356,2358],{"class":1217,"line":1623},[1215,2340,2193],{"class":1377},[1215,2342,1382],{"class":1381},[1215,2344,1597],{"class":1385},[1215,2346,2347],{"class":1224},"can also mount an app",[1215,2349,1597],{"class":1385},[1215,2351,1605],{"class":1385},[1215,2353,2207],{"class":1611},[1215,2355,1608],{"class":1385},[1215,2357,1612],{"class":1611},[1215,2359,1615],{"class":1385},[1215,2361,2362,2364,2366,2368,2370,2372,2374,2377,2379,2381,2384,2386,2388,2391,2393,2395],{"class":1217,"line":1714},[1215,2363,2218],{"class":1611},[1215,2365,2221],{"class":1381},[1215,2367,2224],{"class":1385},[1215,2369,2227],{"class":1370},[1215,2371,2153],{"class":1377},[1215,2373,1382],{"class":1392},[1215,2375,2376],{"class":1381},"App",[1215,2378,1605],{"class":1385},[1215,2380,1445],{"class":1385},[1215,2382,2383],{"class":1392}," route",[1215,2385,1396],{"class":1385},[1215,2387,1457],{"class":1385},[1215,2389,2390],{"class":1224},"/test",[1215,2392,1597],{"class":1385},[1215,2394,1451],{"class":1385},[1215,2396,1425],{"class":1392},[1215,2398,2399,2401,2403,2405,2407,2410,2412,2414,2416,2418],{"class":1217,"line":1732},[1215,2400,2241],{"class":1377},[1215,2402,1382],{"class":1392},[1215,2404,2246],{"class":1381},[1215,2406,1124],{"class":1385},[1215,2408,2409],{"class":1377},"html",[1215,2411,2254],{"class":1392},[1215,2413,1124],{"class":1385},[1215,2415,2259],{"class":1377},[1215,2417,1382],{"class":1392},[1215,2419,2420],{"class":1385},"`\n",[1215,2422,2423],{"class":1217,"line":1738},[1215,2424,2425],{"class":1224},"      \"\u003Cdiv>This is an auto-imported component\u003C/div>\n",[1215,2427,2428],{"class":1217,"line":1744},[1215,2429,2430],{"class":1224},"      \u003Cdiv> I am a global component \u003C/div>\n",[1215,2432,2433],{"class":1217,"line":1750},[1215,2434,2435],{"class":1224},"      \u003Cdiv>/\u003C/div>\n",[1215,2437,2438],{"class":1217,"line":1756},[1215,2439,2440],{"class":1224},"      \u003Ca href=\"/test\"> Test link \u003C/a>\"\n",[1215,2442,2443,2446],{"class":1217,"line":1765},[1215,2444,2445],{"class":1385},"    `",[1215,2447,1425],{"class":1392},[1215,2449,2450,2452],{"class":1217,"line":1771},[1215,2451,1422],{"class":1385},[1215,2453,1425],{"class":1381},[1923,2455,2457],{"id":2456},"rendersuspended",[1129,2458,2459],{},"renderSuspended",[1116,2461,2462,2464,2465,2468],{},[1129,2463,2459],{}," allows you to render any Vue component within the Nuxt environment using ",[1129,2466,2467],{},"@testing-library/vue",", allowing async setup and access to injections from your Nuxt plugins.",[1116,2470,2471,2472,1170,2475,2478,2479,2483],{},"This should be used together with utilities from Testing Library, e.g. ",[1129,2473,2474],{},"screen",[1129,2476,2477],{},"fireEvent",". Install ",[1120,2480,2467],{"href":2481,"rel":2482},"https://testing-library.com/docs/vue-testing-library/intro",[1137]," in your project to use these.",[1116,2485,2486,2487,1124],{},"Additionally, Testing Library also relies on testing globals for cleanup. You should turn these on in your ",[1120,2488,2491],{"href":2489,"rel":2490},"https://vitest.dev/config/#globals",[1137],"Vitest config",[1116,2493,2494,2495,1124],{},"The passed in component will be rendered inside a ",[1129,2496,2497],{},"\u003Cdiv id=\"test-wrapper\">\u003C/div>",[1116,2499,2500],{},"Examples:",[1205,2502,2504],{"className":1360,"code":2503,"language":1362,"meta":1363,"style":1211},"// @noErrors\nimport { it, expect } from 'vitest'\nimport type { Component } from 'vue'\ndeclare module '#components' {\n  export const SomeComponent: Component\n}\n// ---cut---\n// tests/components/SomeComponents.nuxt.spec.ts\nimport { renderSuspended } from '@nuxt/test-utils/runtime'\nimport { SomeComponent } from '#components'\nimport { screen } from '@testing-library/vue'\n\nit('can render some component', async () => {\n  await renderSuspended(SomeComponent)\n  expect(screen.getByText('This is an auto-imported component')).toBeDefined()\n})\n",[1129,2505,2506,2510,2529,2547,2566,2570,2593,2606,2640],{"__ignoreMap":1211},[1215,2507,2508],{"class":1217,"line":1218},[1215,2509,2144],{"class":1485},[1215,2511,2512,2514,2516,2519,2521,2523,2525,2527],{"class":1217,"line":1389},[1215,2513,1442],{"class":1370},[1215,2515,1445],{"class":1385},[1215,2517,2518],{"class":1381}," renderSuspended",[1215,2520,1451],{"class":1385},[1215,2522,1454],{"class":1370},[1215,2524,1457],{"class":1385},[1215,2526,2162],{"class":1224},[1215,2528,1410],{"class":1385},[1215,2530,2531,2533,2535,2537,2539,2541,2543,2545],{"class":1217,"line":1402},[1215,2532,1442],{"class":1370},[1215,2534,1445],{"class":1385},[1215,2536,2173],{"class":1381},[1215,2538,1451],{"class":1385},[1215,2540,1454],{"class":1370},[1215,2542,1457],{"class":1385},[1215,2544,2182],{"class":1224},[1215,2546,1410],{"class":1385},[1215,2548,2549,2551,2553,2556,2558,2560,2562,2564],{"class":1217,"line":1413},[1215,2550,1442],{"class":1370},[1215,2552,1445],{"class":1385},[1215,2554,2555],{"class":1381}," screen",[1215,2557,1451],{"class":1385},[1215,2559,1454],{"class":1370},[1215,2561,1457],{"class":1385},[1215,2563,2467],{"class":1224},[1215,2565,1410],{"class":1385},[1215,2567,2568],{"class":1217,"line":1419},[1215,2569,1468],{"emptyLinePlaceholder":1467},[1215,2571,2572,2574,2576,2578,2581,2583,2585,2587,2589,2591],{"class":1217,"line":1623},[1215,2573,2193],{"class":1377},[1215,2575,1382],{"class":1381},[1215,2577,1597],{"class":1385},[1215,2579,2580],{"class":1224},"can render some component",[1215,2582,1597],{"class":1385},[1215,2584,1605],{"class":1385},[1215,2586,2207],{"class":1611},[1215,2588,1608],{"class":1385},[1215,2590,1612],{"class":1611},[1215,2592,1615],{"class":1385},[1215,2594,2595,2598,2600,2602,2604],{"class":1217,"line":1714},[1215,2596,2597],{"class":1370},"  await",[1215,2599,2518],{"class":1377},[1215,2601,1382],{"class":1392},[1215,2603,2234],{"class":1381},[1215,2605,1425],{"class":1392},[1215,2607,2608,2611,2613,2615,2617,2620,2622,2624,2627,2629,2632,2634,2637],{"class":1217,"line":1732},[1215,2609,2610],{"class":1377},"  expect",[1215,2612,1382],{"class":1392},[1215,2614,2474],{"class":1381},[1215,2616,1124],{"class":1385},[1215,2618,2619],{"class":1377},"getByText",[1215,2621,1382],{"class":1392},[1215,2623,1597],{"class":1385},[1215,2625,2626],{"class":1224},"This is an auto-imported component",[1215,2628,1597],{"class":1385},[1215,2630,2631],{"class":1392},"))",[1215,2633,1124],{"class":1385},[1215,2635,2636],{"class":1377},"toBeDefined",[1215,2638,2639],{"class":1392},"()\n",[1215,2641,2642,2644],{"class":1217,"line":1738},[1215,2643,1422],{"class":1385},[1215,2645,1425],{"class":1381},[1205,2647,2649],{"className":1360,"code":2648,"language":1362,"meta":1363,"style":1211},"// @noErrors\nimport { it, expect } from 'vitest'\n// ---cut---\n// tests/App.nuxt.spec.ts\nimport { renderSuspended } from '@nuxt/test-utils/runtime'\nimport App from '~/app.vue'\n\nit('can also render an app', async () => {\n  const html = await renderSuspended(App, { route: '/test' })\n  expect(html).toMatchInlineSnapshot(`\n    \"\u003Cdiv id=\"test-wrapper\">\n      \u003Cdiv>This is an auto-imported component\u003C/div>\n      \u003Cdiv> I am a global component \u003C/div>\n      \u003Cdiv>Index page\u003C/div>\u003Ca href=\"/test\"> Test link \u003C/a>\n    \u003C/div>\"\n  `)\n})\n",[1129,2650,2651,2655,2673,2687,2691,2714,2750,2769,2774,2779,2783,2788,2793,2800],{"__ignoreMap":1211},[1215,2652,2653],{"class":1217,"line":1218},[1215,2654,2336],{"class":1485},[1215,2656,2657,2659,2661,2663,2665,2667,2669,2671],{"class":1217,"line":1389},[1215,2658,1442],{"class":1370},[1215,2660,1445],{"class":1385},[1215,2662,2518],{"class":1381},[1215,2664,1451],{"class":1385},[1215,2666,1454],{"class":1370},[1215,2668,1457],{"class":1385},[1215,2670,2162],{"class":1224},[1215,2672,1410],{"class":1385},[1215,2674,2675,2677,2679,2681,2683,2685],{"class":1217,"line":1402},[1215,2676,1442],{"class":1370},[1215,2678,2317],{"class":1381},[1215,2680,2320],{"class":1370},[1215,2682,1457],{"class":1385},[1215,2684,2325],{"class":1224},[1215,2686,1410],{"class":1385},[1215,2688,2689],{"class":1217,"line":1413},[1215,2690,1468],{"emptyLinePlaceholder":1467},[1215,2692,2693,2695,2697,2699,2702,2704,2706,2708,2710,2712],{"class":1217,"line":1419},[1215,2694,2193],{"class":1377},[1215,2696,1382],{"class":1381},[1215,2698,1597],{"class":1385},[1215,2700,2701],{"class":1224},"can also render an app",[1215,2703,1597],{"class":1385},[1215,2705,1605],{"class":1385},[1215,2707,2207],{"class":1611},[1215,2709,1608],{"class":1385},[1215,2711,1612],{"class":1611},[1215,2713,1615],{"class":1385},[1215,2715,2716,2719,2722,2724,2726,2728,2730,2732,2734,2736,2738,2740,2742,2744,2746,2748],{"class":1217,"line":1623},[1215,2717,2718],{"class":1611},"  const",[1215,2720,2721],{"class":1381}," html",[1215,2723,2224],{"class":1385},[1215,2725,2227],{"class":1370},[1215,2727,2518],{"class":1377},[1215,2729,1382],{"class":1392},[1215,2731,2376],{"class":1381},[1215,2733,1605],{"class":1385},[1215,2735,1445],{"class":1385},[1215,2737,2383],{"class":1392},[1215,2739,1396],{"class":1385},[1215,2741,1457],{"class":1385},[1215,2743,2390],{"class":1224},[1215,2745,1597],{"class":1385},[1215,2747,1451],{"class":1385},[1215,2749,1425],{"class":1392},[1215,2751,2752,2754,2756,2758,2761,2763,2765,2767],{"class":1217,"line":1714},[1215,2753,2610],{"class":1377},[1215,2755,1382],{"class":1392},[1215,2757,2409],{"class":1381},[1215,2759,2760],{"class":1392},")",[1215,2762,1124],{"class":1385},[1215,2764,2259],{"class":1377},[1215,2766,1382],{"class":1392},[1215,2768,2420],{"class":1385},[1215,2770,2771],{"class":1217,"line":1732},[1215,2772,2773],{"class":1224},"    \"\u003Cdiv id=\"test-wrapper\">\n",[1215,2775,2776],{"class":1217,"line":1738},[1215,2777,2778],{"class":1224},"      \u003Cdiv>This is an auto-imported component\u003C/div>\n",[1215,2780,2781],{"class":1217,"line":1744},[1215,2782,2430],{"class":1224},[1215,2784,2785],{"class":1217,"line":1750},[1215,2786,2787],{"class":1224},"      \u003Cdiv>Index page\u003C/div>\u003Ca href=\"/test\"> Test link \u003C/a>\n",[1215,2789,2790],{"class":1217,"line":1756},[1215,2791,2792],{"class":1224},"    \u003C/div>\"\n",[1215,2794,2795,2798],{"class":1217,"line":1765},[1215,2796,2797],{"class":1385},"  `",[1215,2799,1425],{"class":1392},[1215,2801,2802,2804],{"class":1217,"line":1771},[1215,2803,1422],{"class":1385},[1215,2805,1425],{"class":1381},[1923,2807,2809],{"id":2808},"mocknuxtimport",[1129,2810,2811],{},"mockNuxtImport",[1116,2813,2814,2816,2817,2820],{},[1129,2815,2811],{}," allows you to mock Nuxt's auto import functionality. For example, to mock ",[1129,2818,2819],{},"useStorage",", you can do so like this:",[1205,2822,2824],{"className":1360,"code":2823,"language":1362,"meta":1363,"style":1211},"import { mockNuxtImport } from '@nuxt/test-utils/runtime'\n\nmockNuxtImport('useStorage', () => {\n  return () => {\n    return { value: 'mocked storage' }\n  }\n})\n\n// your tests here\n",[1129,2825,2826,2845,2849,2869,2880,2902,2906,2912,2916],{"__ignoreMap":1211},[1215,2827,2828,2830,2832,2835,2837,2839,2841,2843],{"class":1217,"line":1218},[1215,2829,1442],{"class":1370},[1215,2831,1445],{"class":1385},[1215,2833,2834],{"class":1381}," mockNuxtImport",[1215,2836,1451],{"class":1385},[1215,2838,1454],{"class":1370},[1215,2840,1457],{"class":1385},[1215,2842,2162],{"class":1224},[1215,2844,1410],{"class":1385},[1215,2846,2847],{"class":1217,"line":1389},[1215,2848,1468],{"emptyLinePlaceholder":1467},[1215,2850,2851,2853,2855,2857,2859,2861,2863,2865,2867],{"class":1217,"line":1402},[1215,2852,2811],{"class":1377},[1215,2854,1382],{"class":1381},[1215,2856,1597],{"class":1385},[1215,2858,2819],{"class":1224},[1215,2860,1597],{"class":1385},[1215,2862,1605],{"class":1385},[1215,2864,1608],{"class":1385},[1215,2866,1612],{"class":1611},[1215,2868,1615],{"class":1385},[1215,2870,2871,2874,2876,2878],{"class":1217,"line":1413},[1215,2872,2873],{"class":1370},"  return",[1215,2875,1608],{"class":1385},[1215,2877,1612],{"class":1611},[1215,2879,1615],{"class":1385},[1215,2881,2882,2885,2887,2890,2892,2894,2897,2899],{"class":1217,"line":1419},[1215,2883,2884],{"class":1370},"    return",[1215,2886,1445],{"class":1385},[1215,2888,2889],{"class":1392}," value",[1215,2891,1396],{"class":1385},[1215,2893,1457],{"class":1385},[1215,2895,2896],{"class":1224},"mocked storage",[1215,2898,1597],{"class":1385},[1215,2900,2901],{"class":1385}," }\n",[1215,2903,2904],{"class":1217,"line":1623},[1215,2905,1801],{"class":1385},[1215,2907,2908,2910],{"class":1217,"line":1714},[1215,2909,1422],{"class":1385},[1215,2911,1425],{"class":1381},[1215,2913,2914],{"class":1217,"line":1732},[1215,2915,1468],{"emptyLinePlaceholder":1467},[1215,2917,2918],{"class":1217,"line":1738},[1215,2919,2920],{"class":1485},"// your tests here\n",[2110,2922,2923],{},[1116,2924,2925,2927,2928,1170,2931,2933,2934,1124],{},[1129,2926,2811],{}," can only be used once per mocked import per test file. It is actually a macro that gets transformed to ",[1129,2929,2930],{},"vi.mock",[1129,2932,2930],{}," is hoisted, as described ",[1120,2935,2938],{"href":2936,"rel":2937},"https://vitest.dev/api/vi.html#vi-mock",[1137],"here",[1116,2940,2941,2942,2949,2950,2952,2953,2958],{},"If you need to mock a Nuxt import and provide different implementations between tests, you can do it by creating and exposing your mocks using ",[1120,2943,2946],{"href":2944,"rel":2945},"https://vitest.dev/api/vi.html#vi-hoisted",[1137],[1129,2947,2948],{},"vi.hoisted",", and then use those mocks in ",[1129,2951,2811],{},". You then have access to the mocked imports, and can change the implementation between tests. Be careful to ",[1120,2954,2957],{"href":2955,"rel":2956},"https://vitest.dev/api/mock.html#mockrestore",[1137],"restore mocks"," before or after each test to undo mock state changes between runs.",[1205,2960,2962],{"className":1360,"code":2961,"language":1362,"meta":1363,"style":1211},"import { vi } from 'vitest'\nimport { mockNuxtImport } from '@nuxt/test-utils/runtime'\n\nconst { useStorageMock } = vi.hoisted(() => {\n  return {\n    useStorageMock: vi.fn(() => {\n      return { value: 'mocked storage'}\n    })\n  }\n})\n\nmockNuxtImport('useStorage', () => {\n  return useStorageMock\n})\n\n// Then, inside a test\nuseStorageMock.mockImplementation(() => {\n  return { value: 'something else' }\n})\n",[1129,2963,2964,2983,3001,3005,3035,3041,3063,3083,3090,3094,3100,3104,3124,3131,3137,3141,3146,3164,3183],{"__ignoreMap":1211},[1215,2965,2966,2968,2970,2973,2975,2977,2979,2981],{"class":1217,"line":1218},[1215,2967,1442],{"class":1370},[1215,2969,1445],{"class":1385},[1215,2971,2972],{"class":1381}," vi",[1215,2974,1451],{"class":1385},[1215,2976,1454],{"class":1370},[1215,2978,1457],{"class":1385},[1215,2980,1179],{"class":1224},[1215,2982,1410],{"class":1385},[1215,2984,2985,2987,2989,2991,2993,2995,2997,2999],{"class":1217,"line":1389},[1215,2986,1442],{"class":1370},[1215,2988,1445],{"class":1385},[1215,2990,2834],{"class":1381},[1215,2992,1451],{"class":1385},[1215,2994,1454],{"class":1370},[1215,2996,1457],{"class":1385},[1215,2998,2162],{"class":1224},[1215,3000,1410],{"class":1385},[1215,3002,3003],{"class":1217,"line":1402},[1215,3004,1468],{"emptyLinePlaceholder":1467},[1215,3006,3007,3010,3012,3015,3017,3019,3021,3023,3026,3028,3031,3033],{"class":1217,"line":1413},[1215,3008,3009],{"class":1611},"const",[1215,3011,1445],{"class":1385},[1215,3013,3014],{"class":1381}," useStorageMock ",[1215,3016,1422],{"class":1385},[1215,3018,2224],{"class":1385},[1215,3020,2972],{"class":1381},[1215,3022,1124],{"class":1385},[1215,3024,3025],{"class":1377},"hoisted",[1215,3027,1382],{"class":1381},[1215,3029,3030],{"class":1385},"()",[1215,3032,1612],{"class":1611},[1215,3034,1615],{"class":1385},[1215,3036,3037,3039],{"class":1217,"line":1419},[1215,3038,2873],{"class":1370},[1215,3040,1615],{"class":1385},[1215,3042,3043,3046,3048,3050,3052,3055,3057,3059,3061],{"class":1217,"line":1623},[1215,3044,3045],{"class":1392},"    useStorageMock",[1215,3047,1396],{"class":1385},[1215,3049,2972],{"class":1381},[1215,3051,1124],{"class":1385},[1215,3053,3054],{"class":1377},"fn",[1215,3056,1382],{"class":1392},[1215,3058,3030],{"class":1385},[1215,3060,1612],{"class":1611},[1215,3062,1615],{"class":1385},[1215,3064,3065,3068,3070,3072,3074,3076,3078,3080],{"class":1217,"line":1714},[1215,3066,3067],{"class":1370},"      return",[1215,3069,1445],{"class":1385},[1215,3071,2889],{"class":1392},[1215,3073,1396],{"class":1385},[1215,3075,1457],{"class":1385},[1215,3077,2896],{"class":1224},[1215,3079,1597],{"class":1385},[1215,3081,3082],{"class":1385},"}\n",[1215,3084,3085,3088],{"class":1217,"line":1732},[1215,3086,3087],{"class":1385},"    }",[1215,3089,1425],{"class":1392},[1215,3091,3092],{"class":1217,"line":1738},[1215,3093,1801],{"class":1385},[1215,3095,3096,3098],{"class":1217,"line":1744},[1215,3097,1422],{"class":1385},[1215,3099,1425],{"class":1381},[1215,3101,3102],{"class":1217,"line":1750},[1215,3103,1468],{"emptyLinePlaceholder":1467},[1215,3105,3106,3108,3110,3112,3114,3116,3118,3120,3122],{"class":1217,"line":1756},[1215,3107,2811],{"class":1377},[1215,3109,1382],{"class":1381},[1215,3111,1597],{"class":1385},[1215,3113,2819],{"class":1224},[1215,3115,1597],{"class":1385},[1215,3117,1605],{"class":1385},[1215,3119,1608],{"class":1385},[1215,3121,1612],{"class":1611},[1215,3123,1615],{"class":1385},[1215,3125,3126,3128],{"class":1217,"line":1765},[1215,3127,2873],{"class":1370},[1215,3129,3130],{"class":1381}," useStorageMock\n",[1215,3132,3133,3135],{"class":1217,"line":1771},[1215,3134,1422],{"class":1385},[1215,3136,1425],{"class":1381},[1215,3138,3139],{"class":1217,"line":1780},[1215,3140,1468],{"emptyLinePlaceholder":1467},[1215,3142,3143],{"class":1217,"line":1786},[1215,3144,3145],{"class":1485},"// Then, inside a test\n",[1215,3147,3148,3151,3153,3156,3158,3160,3162],{"class":1217,"line":1792},[1215,3149,3150],{"class":1381},"useStorageMock",[1215,3152,1124],{"class":1385},[1215,3154,3155],{"class":1377},"mockImplementation",[1215,3157,1382],{"class":1381},[1215,3159,3030],{"class":1385},[1215,3161,1612],{"class":1611},[1215,3163,1615],{"class":1385},[1215,3165,3166,3168,3170,3172,3174,3176,3179,3181],{"class":1217,"line":1798},[1215,3167,2873],{"class":1370},[1215,3169,1445],{"class":1385},[1215,3171,2889],{"class":1392},[1215,3173,1396],{"class":1385},[1215,3175,1457],{"class":1385},[1215,3177,3178],{"class":1224},"something else",[1215,3180,1597],{"class":1385},[1215,3182,2901],{"class":1385},[1215,3184,3185,3187],{"class":1217,"line":1804},[1215,3186,1422],{"class":1385},[1215,3188,1425],{"class":1381},[1923,3190,3192],{"id":3191},"mockcomponent",[1129,3193,3194],{},"mockComponent",[1116,3196,3197,3199],{},[1129,3198,3194],{}," allows you to mock Nuxt's component.\nThe first argument can be the component name in PascalCase, or the relative path of the component.\nThe second argument is a factory function that returns the mocked component.",[1116,3201,3202,3203,3206],{},"For example, to mock ",[1129,3204,3205],{},"MyComponent",", you can:",[1205,3208,3210],{"className":1360,"code":3209,"language":1362,"meta":1363,"style":1211},"import { mockComponent } from '@nuxt/test-utils/runtime'\n\nmockComponent('MyComponent', {\n  props: {\n    value: String\n  },\n  setup(props) {\n    // ...\n  }\n})\n\n// relative path or alias also works\nmockComponent('~/components/my-component.vue', async () => {\n  // or a factory function\n  return defineComponent({\n    setup(props) {\n      // ...\n    }\n  })\n})\n\n// or you can use SFC for redirecting to a mock component\nmockComponent('MyComponent', () => import('./MockComponent.vue'))\n\n// your tests here\n",[1129,3211,3212,3231,3235,3251,3260,3270,3275,3290,3295,3299,3305,3309,3314,3337,3342,3353,3366,3371,3375,3382,3389,3394,3400,3434,3439],{"__ignoreMap":1211},[1215,3213,3214,3216,3218,3221,3223,3225,3227,3229],{"class":1217,"line":1218},[1215,3215,1442],{"class":1370},[1215,3217,1445],{"class":1385},[1215,3219,3220],{"class":1381}," mockComponent",[1215,3222,1451],{"class":1385},[1215,3224,1454],{"class":1370},[1215,3226,1457],{"class":1385},[1215,3228,2162],{"class":1224},[1215,3230,1410],{"class":1385},[1215,3232,3233],{"class":1217,"line":1389},[1215,3234,1468],{"emptyLinePlaceholder":1467},[1215,3236,3237,3239,3241,3243,3245,3247,3249],{"class":1217,"line":1402},[1215,3238,3194],{"class":1377},[1215,3240,1382],{"class":1381},[1215,3242,1597],{"class":1385},[1215,3244,3205],{"class":1224},[1215,3246,1597],{"class":1385},[1215,3248,1605],{"class":1385},[1215,3250,1615],{"class":1385},[1215,3252,3253,3256,3258],{"class":1217,"line":1413},[1215,3254,3255],{"class":1392},"  props",[1215,3257,1396],{"class":1385},[1215,3259,1615],{"class":1385},[1215,3261,3262,3265,3267],{"class":1217,"line":1419},[1215,3263,3264],{"class":1392},"    value",[1215,3266,1396],{"class":1385},[1215,3268,3269],{"class":1381}," String\n",[1215,3271,3272],{"class":1217,"line":1623},[1215,3273,3274],{"class":1385},"  },\n",[1215,3276,3277,3280,3282,3286,3288],{"class":1217,"line":1714},[1215,3278,3279],{"class":1392},"  setup",[1215,3281,1382],{"class":1385},[1215,3283,3285],{"class":3284},"ssYd4","props",[1215,3287,2760],{"class":1385},[1215,3289,1615],{"class":1385},[1215,3291,3292],{"class":1217,"line":1732},[1215,3293,3294],{"class":1485},"    // ...\n",[1215,3296,3297],{"class":1217,"line":1738},[1215,3298,1801],{"class":1385},[1215,3300,3301,3303],{"class":1217,"line":1744},[1215,3302,1422],{"class":1385},[1215,3304,1425],{"class":1381},[1215,3306,3307],{"class":1217,"line":1750},[1215,3308,1468],{"emptyLinePlaceholder":1467},[1215,3310,3311],{"class":1217,"line":1756},[1215,3312,3313],{"class":1485},"// relative path or alias also works\n",[1215,3315,3316,3318,3320,3322,3325,3327,3329,3331,3333,3335],{"class":1217,"line":1765},[1215,3317,3194],{"class":1377},[1215,3319,1382],{"class":1381},[1215,3321,1597],{"class":1385},[1215,3323,3324],{"class":1224},"~/components/my-component.vue",[1215,3326,1597],{"class":1385},[1215,3328,1605],{"class":1385},[1215,3330,2207],{"class":1611},[1215,3332,1608],{"class":1385},[1215,3334,1612],{"class":1611},[1215,3336,1615],{"class":1385},[1215,3338,3339],{"class":1217,"line":1771},[1215,3340,3341],{"class":1485},"  // or a factory function\n",[1215,3343,3344,3346,3349,3351],{"class":1217,"line":1780},[1215,3345,2873],{"class":1370},[1215,3347,3348],{"class":1377}," defineComponent",[1215,3350,1382],{"class":1392},[1215,3352,1386],{"class":1385},[1215,3354,3355,3358,3360,3362,3364],{"class":1217,"line":1786},[1215,3356,3357],{"class":1392},"    setup",[1215,3359,1382],{"class":1385},[1215,3361,3285],{"class":3284},[1215,3363,2760],{"class":1385},[1215,3365,1615],{"class":1385},[1215,3367,3368],{"class":1217,"line":1792},[1215,3369,3370],{"class":1485},"      // ...\n",[1215,3372,3373],{"class":1217,"line":1798},[1215,3374,2078],{"class":1385},[1215,3376,3377,3380],{"class":1217,"line":1804},[1215,3378,3379],{"class":1385},"  }",[1215,3381,1425],{"class":1392},[1215,3383,3385,3387],{"class":1217,"line":3384},20,[1215,3386,1422],{"class":1385},[1215,3388,1425],{"class":1381},[1215,3390,3392],{"class":1217,"line":3391},21,[1215,3393,1468],{"emptyLinePlaceholder":1467},[1215,3395,3397],{"class":1217,"line":3396},22,[1215,3398,3399],{"class":1485},"// or you can use SFC for redirecting to a mock component\n",[1215,3401,3403,3405,3407,3409,3411,3413,3415,3417,3419,3422,3424,3426,3429,3431],{"class":1217,"line":3402},23,[1215,3404,3194],{"class":1377},[1215,3406,1382],{"class":1381},[1215,3408,1597],{"class":1385},[1215,3410,3205],{"class":1224},[1215,3412,1597],{"class":1385},[1215,3414,1605],{"class":1385},[1215,3416,1608],{"class":1385},[1215,3418,1612],{"class":1611},[1215,3420,3421],{"class":1385}," import",[1215,3423,1382],{"class":1381},[1215,3425,1597],{"class":1385},[1215,3427,3428],{"class":1224},"./MockComponent.vue",[1215,3430,1597],{"class":1385},[1215,3432,3433],{"class":1381},"))\n",[1215,3435,3437],{"class":1217,"line":3436},24,[1215,3438,1468],{"emptyLinePlaceholder":1467},[1215,3440,3442],{"class":1217,"line":3441},25,[1215,3443,2920],{"class":1485},[1509,3445,3446],{},[1116,3447,3448,3451],{},[1636,3449,3450],{},"Note",": You can't reference local variables in the factory function since they are hoisted. If you need to access Vue APIs or other variables, you need to import them in your factory function.",[1205,3453,3455],{"className":1360,"code":3454,"language":1362,"meta":1363,"style":1211},"import { mockComponent } from '@nuxt/test-utils/runtime'\n\nmockComponent('MyComponent', async () => {\n  const { ref, h } = await import('vue')\n\n  return defineComponent({\n    setup(props) {\n      const counter = ref(0)\n      return () => h('div', null, counter.value)\n    }\n  })\n})\n",[1129,3456,3457,3475,3479,3501,3534,3538,3548,3560,3580,3613,3617,3623],{"__ignoreMap":1211},[1215,3458,3459,3461,3463,3465,3467,3469,3471,3473],{"class":1217,"line":1218},[1215,3460,1442],{"class":1370},[1215,3462,1445],{"class":1385},[1215,3464,3220],{"class":1381},[1215,3466,1451],{"class":1385},[1215,3468,1454],{"class":1370},[1215,3470,1457],{"class":1385},[1215,3472,2162],{"class":1224},[1215,3474,1410],{"class":1385},[1215,3476,3477],{"class":1217,"line":1389},[1215,3478,1468],{"emptyLinePlaceholder":1467},[1215,3480,3481,3483,3485,3487,3489,3491,3493,3495,3497,3499],{"class":1217,"line":1402},[1215,3482,3194],{"class":1377},[1215,3484,1382],{"class":1381},[1215,3486,1597],{"class":1385},[1215,3488,3205],{"class":1224},[1215,3490,1597],{"class":1385},[1215,3492,1605],{"class":1385},[1215,3494,2207],{"class":1611},[1215,3496,1608],{"class":1385},[1215,3498,1612],{"class":1611},[1215,3500,1615],{"class":1385},[1215,3502,3503,3505,3507,3510,3512,3515,3517,3519,3521,3523,3525,3527,3530,3532],{"class":1217,"line":1413},[1215,3504,2718],{"class":1611},[1215,3506,1445],{"class":1385},[1215,3508,3509],{"class":1381}," ref",[1215,3511,1605],{"class":1385},[1215,3513,3514],{"class":1381}," h",[1215,3516,1451],{"class":1385},[1215,3518,2224],{"class":1385},[1215,3520,2227],{"class":1370},[1215,3522,3421],{"class":1385},[1215,3524,1382],{"class":1392},[1215,3526,1597],{"class":1385},[1215,3528,3529],{"class":1224},"vue",[1215,3531,1597],{"class":1385},[1215,3533,1425],{"class":1392},[1215,3535,3536],{"class":1217,"line":1419},[1215,3537,1468],{"emptyLinePlaceholder":1467},[1215,3539,3540,3542,3544,3546],{"class":1217,"line":1623},[1215,3541,2873],{"class":1370},[1215,3543,3348],{"class":1377},[1215,3545,1382],{"class":1392},[1215,3547,1386],{"class":1385},[1215,3549,3550,3552,3554,3556,3558],{"class":1217,"line":1714},[1215,3551,3357],{"class":1392},[1215,3553,1382],{"class":1385},[1215,3555,3285],{"class":3284},[1215,3557,2760],{"class":1385},[1215,3559,1615],{"class":1385},[1215,3561,3562,3565,3568,3570,3572,3574,3578],{"class":1217,"line":1732},[1215,3563,3564],{"class":1611},"      const",[1215,3566,3567],{"class":1381}," counter",[1215,3569,2224],{"class":1385},[1215,3571,3509],{"class":1377},[1215,3573,1382],{"class":1392},[1215,3575,3577],{"class":3576},"sV9sa","0",[1215,3579,1425],{"class":1392},[1215,3581,3582,3584,3586,3588,3590,3592,3594,3597,3599,3601,3604,3606,3608,3611],{"class":1217,"line":1738},[1215,3583,3067],{"class":1370},[1215,3585,1608],{"class":1385},[1215,3587,1612],{"class":1611},[1215,3589,3514],{"class":1377},[1215,3591,1382],{"class":1392},[1215,3593,1597],{"class":1385},[1215,3595,3596],{"class":1224},"div",[1215,3598,1597],{"class":1385},[1215,3600,1605],{"class":1385},[1215,3602,3603],{"class":1385}," null,",[1215,3605,3567],{"class":1381},[1215,3607,1124],{"class":1385},[1215,3609,3610],{"class":1381},"value",[1215,3612,1425],{"class":1392},[1215,3614,3615],{"class":1217,"line":1744},[1215,3616,2078],{"class":1385},[1215,3618,3619,3621],{"class":1217,"line":1750},[1215,3620,3379],{"class":1385},[1215,3622,1425],{"class":1392},[1215,3624,3625,3627],{"class":1217,"line":1756},[1215,3626,1422],{"class":1385},[1215,3628,1425],{"class":1381},[1923,3630,3632],{"id":3631},"registerendpoint",[1129,3633,3634],{},"registerEndpoint",[1116,3636,3637,3639],{},[1129,3638,3634],{}," allows you create Nitro endpoint that returns mocked data. It can come in handy if you want to test a component that makes requests to API to display some data.",[1116,3641,3642,3643,3646],{},"The first argument is the endpoint name (e.g. ",[1129,3644,3645],{},"/test/",").\nThe second argument is a factory function that returns the mocked data.",[1116,3648,3202,3649,3651],{},[1129,3650,3645],{}," endpoint, you can do:",[1205,3653,3655],{"className":1360,"code":3654,"language":1362,"meta":1363,"style":1211},"import { registerEndpoint } from '@nuxt/test-utils/runtime'\n\nregisterEndpoint('/test/', () => ({\n  test: 'test-field'\n}))\n",[1129,3656,3657,3676,3680,3703,3716],{"__ignoreMap":1211},[1215,3658,3659,3661,3663,3666,3668,3670,3672,3674],{"class":1217,"line":1218},[1215,3660,1442],{"class":1370},[1215,3662,1445],{"class":1385},[1215,3664,3665],{"class":1381}," registerEndpoint",[1215,3667,1451],{"class":1385},[1215,3669,1454],{"class":1370},[1215,3671,1457],{"class":1385},[1215,3673,2162],{"class":1224},[1215,3675,1410],{"class":1385},[1215,3677,3678],{"class":1217,"line":1389},[1215,3679,1468],{"emptyLinePlaceholder":1467},[1215,3681,3682,3684,3686,3688,3690,3692,3694,3696,3698,3701],{"class":1217,"line":1402},[1215,3683,3634],{"class":1377},[1215,3685,1382],{"class":1381},[1215,3687,1597],{"class":1385},[1215,3689,3645],{"class":1224},[1215,3691,1597],{"class":1385},[1215,3693,1605],{"class":1385},[1215,3695,1608],{"class":1385},[1215,3697,1612],{"class":1611},[1215,3699,3700],{"class":1381}," (",[1215,3702,1386],{"class":1385},[1215,3704,3705,3707,3709,3711,3714],{"class":1217,"line":1413},[1215,3706,1707],{"class":1392},[1215,3708,1396],{"class":1385},[1215,3710,1457],{"class":1385},[1215,3712,3713],{"class":1224},"test-field",[1215,3715,1410],{"class":1385},[1215,3717,3718,3720],{"class":1217,"line":1419},[1215,3719,1422],{"class":1385},[1215,3721,3433],{"class":1381},[1116,3723,3724,3725,3728],{},"By default, your request will be made using the ",[1129,3726,3727],{},"GET"," method. You may use another method by setting an object as the second argument instead of a function.",[1205,3730,3732],{"className":1360,"code":3731,"language":1362,"meta":1363,"style":1211},"import { registerEndpoint } from '@nuxt/test-utils/runtime'\n\nregisterEndpoint('/test/', {\n  method: 'POST',\n  handler: () => ({ test: 'test-field' })\n})\n",[1129,3733,3734,3752,3756,3772,3788,3818],{"__ignoreMap":1211},[1215,3735,3736,3738,3740,3742,3744,3746,3748,3750],{"class":1217,"line":1218},[1215,3737,1442],{"class":1370},[1215,3739,1445],{"class":1385},[1215,3741,3665],{"class":1381},[1215,3743,1451],{"class":1385},[1215,3745,1454],{"class":1370},[1215,3747,1457],{"class":1385},[1215,3749,2162],{"class":1224},[1215,3751,1410],{"class":1385},[1215,3753,3754],{"class":1217,"line":1389},[1215,3755,1468],{"emptyLinePlaceholder":1467},[1215,3757,3758,3760,3762,3764,3766,3768,3770],{"class":1217,"line":1402},[1215,3759,3634],{"class":1377},[1215,3761,1382],{"class":1381},[1215,3763,1597],{"class":1385},[1215,3765,3645],{"class":1224},[1215,3767,1597],{"class":1385},[1215,3769,1605],{"class":1385},[1215,3771,1615],{"class":1385},[1215,3773,3774,3777,3779,3781,3784,3786],{"class":1217,"line":1413},[1215,3775,3776],{"class":1392},"  method",[1215,3778,1396],{"class":1385},[1215,3780,1457],{"class":1385},[1215,3782,3783],{"class":1224},"POST",[1215,3785,1597],{"class":1385},[1215,3787,1729],{"class":1385},[1215,3789,3790,3793,3795,3797,3799,3801,3804,3806,3808,3810,3812,3814,3816],{"class":1217,"line":1419},[1215,3791,3792],{"class":1377},"  handler",[1215,3794,1396],{"class":1385},[1215,3796,1608],{"class":1385},[1215,3798,1612],{"class":1611},[1215,3800,3700],{"class":1381},[1215,3802,3803],{"class":1385},"{",[1215,3805,1573],{"class":1392},[1215,3807,1396],{"class":1385},[1215,3809,1457],{"class":1385},[1215,3811,3713],{"class":1224},[1215,3813,1597],{"class":1385},[1215,3815,1451],{"class":1385},[1215,3817,1425],{"class":1381},[1215,3819,3820,3822],{"class":1217,"line":1623},[1215,3821,1422],{"class":1385},[1215,3823,1425],{"class":1381},[1509,3825,3826],{},[1116,3827,3828,3830,3831,3834,3835,3700,3839,3842],{},[1636,3829,3450],{},": If your requests in a component go to an external API, you can use ",[1129,3832,3833],{},"baseURL"," and then make it empty using ",[1120,3836,3838],{"href":3837},"/docs/getting-started/configuration#environment-overrides","Nuxt Environment Override Config",[1129,3840,3841],{},"$test",") so all your requests will go to Nitro server.",[1923,3844,3846],{"id":3845},"conflict-with-end-to-end-testing","Conflict with End-To-End Testing",[1116,3848,3849,1170,3851,3854],{},[1129,3850,2162],{},[1129,3852,3853],{},"@nuxt/test-utils/e2e"," need to run in different testing environments and so can't be used in the same file.",[1116,3856,3857,3858,3860,3861,3864,3865,3868],{},"If you would like to use both the end-to-end and unit testing functionality of ",[1129,3859,1131],{},", you can split your tests into separate files. You then either specify a test environment per-file with the special ",[1129,3862,3863],{},"// @vitest-environment nuxt"," comment, or name your runtime unit test files with the ",[1129,3866,3867],{},".nuxt.spec.ts"," extension.",[1116,3870,3871],{},[1129,3872,3873],{},"app.nuxt.spec.ts",[1205,3875,3877],{"className":1360,"code":3876,"language":1362,"meta":1363,"style":1211},"import { mockNuxtImport } from '@nuxt/test-utils/runtime'\n\nmockNuxtImport('useStorage', () => {\n  return () => {\n    return { value: 'mocked storage' }\n  }\n})\n\n",[1129,3878,3879,3897,3901,3921,3931,3949,3953],{"__ignoreMap":1211},[1215,3880,3881,3883,3885,3887,3889,3891,3893,3895],{"class":1217,"line":1218},[1215,3882,1442],{"class":1370},[1215,3884,1445],{"class":1385},[1215,3886,2834],{"class":1381},[1215,3888,1451],{"class":1385},[1215,3890,1454],{"class":1370},[1215,3892,1457],{"class":1385},[1215,3894,2162],{"class":1224},[1215,3896,1410],{"class":1385},[1215,3898,3899],{"class":1217,"line":1389},[1215,3900,1468],{"emptyLinePlaceholder":1467},[1215,3902,3903,3905,3907,3909,3911,3913,3915,3917,3919],{"class":1217,"line":1402},[1215,3904,2811],{"class":1377},[1215,3906,1382],{"class":1381},[1215,3908,1597],{"class":1385},[1215,3910,2819],{"class":1224},[1215,3912,1597],{"class":1385},[1215,3914,1605],{"class":1385},[1215,3916,1608],{"class":1385},[1215,3918,1612],{"class":1611},[1215,3920,1615],{"class":1385},[1215,3922,3923,3925,3927,3929],{"class":1217,"line":1413},[1215,3924,2873],{"class":1370},[1215,3926,1608],{"class":1385},[1215,3928,1612],{"class":1611},[1215,3930,1615],{"class":1385},[1215,3932,3933,3935,3937,3939,3941,3943,3945,3947],{"class":1217,"line":1419},[1215,3934,2884],{"class":1370},[1215,3936,1445],{"class":1385},[1215,3938,2889],{"class":1392},[1215,3940,1396],{"class":1385},[1215,3942,1457],{"class":1385},[1215,3944,2896],{"class":1224},[1215,3946,1597],{"class":1385},[1215,3948,2901],{"class":1385},[1215,3950,3951],{"class":1217,"line":1623},[1215,3952,1801],{"class":1385},[1215,3954,3955,3957],{"class":1217,"line":1714},[1215,3956,1422],{"class":1385},[1215,3958,1425],{"class":1381},[1116,3960,3961],{},[1129,3962,3963],{},"app.e2e.spec.ts",[1205,3965,3967],{"className":1360,"code":3966,"language":1362,"meta":1363,"style":1211},"import { setup, $fetch } from '@nuxt/test-utils/e2e'\n\nawait setup({\n  setupTimeout: 10000,\n})\n\n// ...\n",[1129,3968,3969,3993,3997,4008,4020,4026,4030],{"__ignoreMap":1211},[1215,3970,3971,3973,3975,3978,3980,3983,3985,3987,3989,3991],{"class":1217,"line":1218},[1215,3972,1442],{"class":1370},[1215,3974,1445],{"class":1385},[1215,3976,3977],{"class":1381}," setup",[1215,3979,1605],{"class":1385},[1215,3981,3982],{"class":1381}," $fetch",[1215,3984,1451],{"class":1385},[1215,3986,1454],{"class":1370},[1215,3988,1457],{"class":1385},[1215,3990,3853],{"class":1224},[1215,3992,1410],{"class":1385},[1215,3994,3995],{"class":1217,"line":1389},[1215,3996,1468],{"emptyLinePlaceholder":1467},[1215,3998,3999,4002,4004,4006],{"class":1217,"line":1402},[1215,4000,4001],{"class":1370},"await",[1215,4003,3977],{"class":1377},[1215,4005,1382],{"class":1381},[1215,4007,1386],{"class":1385},[1215,4009,4010,4013,4015,4018],{"class":1217,"line":1413},[1215,4011,4012],{"class":1392},"  setupTimeout",[1215,4014,1396],{"class":1385},[1215,4016,4017],{"class":3576}," 10000",[1215,4019,1729],{"class":1385},[1215,4021,4022,4024],{"class":1217,"line":1419},[1215,4023,1422],{"class":1385},[1215,4025,1425],{"class":1381},[1215,4027,4028],{"class":1217,"line":1623},[1215,4029,1468],{"emptyLinePlaceholder":1467},[1215,4031,4032],{"class":1217,"line":1714},[1215,4033,4034],{"class":1485},"// ...\n",[1340,4036,4038,4039],{"id":4037},"using-vuetest-utils","Using ",[1129,4040,2124],{},[1116,4042,4043,4044,4046],{},"If you prefer to use ",[1129,4045,2124],{}," on its own for unit testing in Nuxt, and you are only testing components which do not rely on Nuxt composables, auto-imports or context, you can follow these steps to set it up.",[1345,4048,4049,4139,4252,4349,4404,4590],{},[1164,4050,4051,4052],{},"Install the needed dependencies",[1202,4053,4054,4076,4097,4118],{},[1205,4055,4057],{"className":1207,"code":4056,"filename":1209,"language":1210,"meta":1211,"style":1211},"npm i --save-dev vitest @vue/test-utils happy-dom @vitejs/plugin-vue\n",[1129,4058,4059],{"__ignoreMap":1211},[1215,4060,4061,4063,4065,4067,4069,4071,4073],{"class":1217,"line":1218},[1215,4062,1209],{"class":1221},[1215,4064,1225],{"class":1224},[1215,4066,1228],{"class":1224},[1215,4068,1234],{"class":1224},[1215,4070,1237],{"class":1224},[1215,4072,1240],{"class":1224},[1215,4074,4075],{"class":1224}," @vitejs/plugin-vue\n",[1205,4077,4079],{"className":1207,"code":4078,"filename":1247,"language":1210,"meta":1211,"style":1211},"yarn add --dev vitest @vue/test-utils happy-dom @vitejs/plugin-vue\n",[1129,4080,4081],{"__ignoreMap":1211},[1215,4082,4083,4085,4087,4089,4091,4093,4095],{"class":1217,"line":1218},[1215,4084,1247],{"class":1221},[1215,4086,1256],{"class":1224},[1215,4088,1259],{"class":1224},[1215,4090,1234],{"class":1224},[1215,4092,1237],{"class":1224},[1215,4094,1240],{"class":1224},[1215,4096,4075],{"class":1224},[1205,4098,4100],{"className":1207,"code":4099,"filename":1273,"language":1210,"meta":1211,"style":1211},"pnpm add -D vitest @vue/test-utils happy-dom @vitejs/plugin-vue\n",[1129,4101,4102],{"__ignoreMap":1211},[1215,4103,4104,4106,4108,4110,4112,4114,4116],{"class":1217,"line":1218},[1215,4105,1273],{"class":1221},[1215,4107,1256],{"class":1224},[1215,4109,1284],{"class":1224},[1215,4111,1234],{"class":1224},[1215,4113,1237],{"class":1224},[1215,4115,1240],{"class":1224},[1215,4117,4075],{"class":1224},[1205,4119,4121],{"className":1207,"code":4120,"filename":1298,"language":1210,"meta":1211,"style":1211},"bun add --dev vitest @vue/test-utils happy-dom @vitejs/plugin-vue\n",[1129,4122,4123],{"__ignoreMap":1211},[1215,4124,4125,4127,4129,4131,4133,4135,4137],{"class":1217,"line":1218},[1215,4126,1298],{"class":1221},[1215,4128,1256],{"class":1224},[1215,4130,1259],{"class":1224},[1215,4132,1234],{"class":1224},[1215,4134,1237],{"class":1224},[1215,4136,1240],{"class":1224},[1215,4138,4075],{"class":1224},[1164,4140,1428,4141,1432,4143],{},[1129,4142,1431],{},[1205,4144,4146],{"className":1360,"code":4145,"language":1362,"meta":1363,"style":1211},"import { defineConfig } from 'vitest/config'\nimport vue from '@vitejs/plugin-vue'\n\nexport default defineConfig({\n  plugins: [vue()],\n  test: {\n    environment: 'happy-dom',\n  },\n});\n",[1129,4147,4148,4168,4184,4188,4200,4217,4225,4239,4243],{"__ignoreMap":1211},[1215,4149,4150,4152,4154,4157,4159,4161,4163,4166],{"class":1217,"line":1218},[1215,4151,1442],{"class":1370},[1215,4153,1445],{"class":1385},[1215,4155,4156],{"class":1381}," defineConfig",[1215,4158,1451],{"class":1385},[1215,4160,1454],{"class":1370},[1215,4162,1457],{"class":1385},[1215,4164,4165],{"class":1224},"vitest/config",[1215,4167,1410],{"class":1385},[1215,4169,4170,4172,4175,4177,4179,4182],{"class":1217,"line":1389},[1215,4171,1442],{"class":1370},[1215,4173,4174],{"class":1381}," vue ",[1215,4176,2320],{"class":1370},[1215,4178,1457],{"class":1385},[1215,4180,4181],{"class":1224},"@vitejs/plugin-vue",[1215,4183,1410],{"class":1385},[1215,4185,4186],{"class":1217,"line":1402},[1215,4187,1468],{"emptyLinePlaceholder":1467},[1215,4189,4190,4192,4194,4196,4198],{"class":1217,"line":1413},[1215,4191,1371],{"class":1370},[1215,4193,1374],{"class":1370},[1215,4195,4156],{"class":1377},[1215,4197,1382],{"class":1381},[1215,4199,1386],{"class":1385},[1215,4201,4202,4205,4207,4210,4212,4215],{"class":1217,"line":1419},[1215,4203,4204],{"class":1392},"  plugins",[1215,4206,1396],{"class":1385},[1215,4208,4209],{"class":1381}," [",[1215,4211,3529],{"class":1377},[1215,4213,4214],{"class":1381},"()]",[1215,4216,1729],{"class":1385},[1215,4218,4219,4221,4223],{"class":1217,"line":1623},[1215,4220,1707],{"class":1392},[1215,4222,1396],{"class":1385},[1215,4224,1615],{"class":1385},[1215,4226,4227,4229,4231,4233,4235,4237],{"class":1217,"line":1714},[1215,4228,1717],{"class":1392},[1215,4230,1396],{"class":1385},[1215,4232,1457],{"class":1385},[1215,4234,1169],{"class":1224},[1215,4236,1597],{"class":1385},[1215,4238,1729],{"class":1385},[1215,4240,4241],{"class":1217,"line":1732},[1215,4242,3274],{"class":1385},[1215,4244,4245,4247,4249],{"class":1217,"line":1738},[1215,4246,1422],{"class":1385},[1215,4248,2760],{"class":1381},[1215,4250,4251],{"class":1385},";\n",[1164,4253,4254,4255,4257],{},"Add a new command for test in your ",[1129,4256,264],{},[1205,4258,4262],{"className":4259,"code":4260,"language":4261,"meta":1211,"style":1211},"language-json shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","\"scripts\": {\n  \"build\": \"nuxt build\",\n  \"dev\": \"nuxt dev\",\n  ...\n  \"test\": \"vitest\"\n},\n","json",[1129,4263,4264,4279,4301,4321,4326,4343],{"__ignoreMap":1211},[1215,4265,4266,4269,4272,4274,4277],{"class":1217,"line":1218},[1215,4267,4268],{"class":1385},"\"",[1215,4270,4271],{"class":1224},"scripts",[1215,4273,4268],{"class":1385},[1215,4275,4276],{"class":1381},": ",[1215,4278,1386],{"class":1385},[1215,4280,4281,4284,4287,4289,4291,4294,4297,4299],{"class":1217,"line":1389},[1215,4282,4283],{"class":1385},"  \"",[1215,4285,4286],{"class":1611},"build",[1215,4288,4268],{"class":1385},[1215,4290,1396],{"class":1385},[1215,4292,4293],{"class":1385}," \"",[1215,4295,4296],{"class":1224},"nuxt build",[1215,4298,4268],{"class":1385},[1215,4300,1729],{"class":1385},[1215,4302,4303,4305,4308,4310,4312,4314,4317,4319],{"class":1217,"line":1402},[1215,4304,4283],{"class":1385},[1215,4306,4307],{"class":1611},"dev",[1215,4309,4268],{"class":1385},[1215,4311,1396],{"class":1385},[1215,4313,4293],{"class":1385},[1215,4315,4316],{"class":1224},"nuxt dev",[1215,4318,4268],{"class":1385},[1215,4320,1729],{"class":1385},[1215,4322,4323],{"class":1217,"line":1413},[1215,4324,4325],{"class":1381},"  ...\n",[1215,4327,4328,4330,4332,4334,4336,4338,4340],{"class":1217,"line":1419},[1215,4329,4283],{"class":1385},[1215,4331,1592],{"class":1611},[1215,4333,4268],{"class":1385},[1215,4335,1396],{"class":1385},[1215,4337,4293],{"class":1385},[1215,4339,1179],{"class":1224},[1215,4341,4342],{"class":1385},"\"\n",[1215,4344,4345,4347],{"class":1217,"line":1623},[1215,4346,1422],{"class":1385},[1215,4348,1729],{"class":1381},[1164,4350,4351,4352,4355,4356,1432,4359],{},"Create a simple ",[1129,4353,4354],{},"\u003CHelloWorld>"," component ",[1129,4357,4358],{},"components/HelloWorld.vue",[1205,4360,4363],{"className":4361,"code":4362,"language":3529,"meta":1211,"style":1211},"language-vue shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","\u003Ctemplate>\n  \u003Cp>Hello world\u003C/p>\n\u003C/template>\n",[1129,4364,4365,4376,4396],{"__ignoreMap":1211},[1215,4366,4367,4370,4373],{"class":1217,"line":1218},[1215,4368,4369],{"class":1385},"\u003C",[1215,4371,4372],{"class":1392},"template",[1215,4374,4375],{"class":1385},">\n",[1215,4377,4378,4381,4383,4386,4389,4392,4394],{"class":1217,"line":1389},[1215,4379,4380],{"class":1385},"  \u003C",[1215,4382,1116],{"class":1392},[1215,4384,4385],{"class":1385},">",[1215,4387,4388],{"class":1381},"Hello world",[1215,4390,4391],{"class":1385},"\u003C/",[1215,4393,1116],{"class":1392},[1215,4395,4375],{"class":1385},[1215,4397,4398,4400,4402],{"class":1217,"line":1402},[1215,4399,4391],{"class":1385},[1215,4401,4372],{"class":1392},[1215,4403,4375],{"class":1385},[1164,4405,4406,4407,4410],{},"Create a simple unit test for this newly created component ",[1129,4408,4409],{},"~/components/HelloWorld.spec.ts",[1205,4411,4413],{"className":1360,"code":4412,"language":1362,"meta":1363,"style":1211},"import { describe, it, expect } from 'vitest'\nimport { mount } from '@vue/test-utils'\n\nimport HelloWorld from './HelloWorld.vue'\n\ndescribe('HelloWorld', () => {\n  it('component renders Hello world properly', () => {\n    const wrapper = mount(HelloWorld)\n    expect(wrapper.text()).toContain('Hello world')\n  })\n})\n",[1129,4414,4415,4444,4463,4467,4483,4487,4509,4531,4548,4578,4584],{"__ignoreMap":1211},[1215,4416,4417,4419,4421,4424,4426,4429,4431,4434,4436,4438,4440,4442],{"class":1217,"line":1218},[1215,4418,1442],{"class":1370},[1215,4420,1445],{"class":1385},[1215,4422,4423],{"class":1381}," describe",[1215,4425,1605],{"class":1385},[1215,4427,4428],{"class":1381}," it",[1215,4430,1605],{"class":1385},[1215,4432,4433],{"class":1381}," expect",[1215,4435,1451],{"class":1385},[1215,4437,1454],{"class":1370},[1215,4439,1457],{"class":1385},[1215,4441,1179],{"class":1224},[1215,4443,1410],{"class":1385},[1215,4445,4446,4448,4450,4453,4455,4457,4459,4461],{"class":1217,"line":1389},[1215,4447,1442],{"class":1370},[1215,4449,1445],{"class":1385},[1215,4451,4452],{"class":1381}," mount",[1215,4454,1451],{"class":1385},[1215,4456,1454],{"class":1370},[1215,4458,1457],{"class":1385},[1215,4460,2124],{"class":1224},[1215,4462,1410],{"class":1385},[1215,4464,4465],{"class":1217,"line":1402},[1215,4466,1468],{"emptyLinePlaceholder":1467},[1215,4468,4469,4471,4474,4476,4478,4481],{"class":1217,"line":1413},[1215,4470,1442],{"class":1370},[1215,4472,4473],{"class":1381}," HelloWorld ",[1215,4475,2320],{"class":1370},[1215,4477,1457],{"class":1385},[1215,4479,4480],{"class":1224},"./HelloWorld.vue",[1215,4482,1410],{"class":1385},[1215,4484,4485],{"class":1217,"line":1419},[1215,4486,1468],{"emptyLinePlaceholder":1467},[1215,4488,4489,4492,4494,4496,4499,4501,4503,4505,4507],{"class":1217,"line":1623},[1215,4490,4491],{"class":1377},"describe",[1215,4493,1382],{"class":1381},[1215,4495,1597],{"class":1385},[1215,4497,4498],{"class":1224},"HelloWorld",[1215,4500,1597],{"class":1385},[1215,4502,1605],{"class":1385},[1215,4504,1608],{"class":1385},[1215,4506,1612],{"class":1611},[1215,4508,1615],{"class":1385},[1215,4510,4511,4514,4516,4518,4521,4523,4525,4527,4529],{"class":1217,"line":1714},[1215,4512,4513],{"class":1377},"  it",[1215,4515,1382],{"class":1392},[1215,4517,1597],{"class":1385},[1215,4519,4520],{"class":1224},"component renders Hello world properly",[1215,4522,1597],{"class":1385},[1215,4524,1605],{"class":1385},[1215,4526,1608],{"class":1385},[1215,4528,1612],{"class":1611},[1215,4530,1615],{"class":1385},[1215,4532,4533,4535,4538,4540,4542,4544,4546],{"class":1217,"line":1732},[1215,4534,2218],{"class":1611},[1215,4536,4537],{"class":1381}," wrapper",[1215,4539,2224],{"class":1385},[1215,4541,4452],{"class":1377},[1215,4543,1382],{"class":1392},[1215,4545,4498],{"class":1381},[1215,4547,1425],{"class":1392},[1215,4549,4550,4552,4554,4557,4559,4561,4563,4565,4568,4570,4572,4574,4576],{"class":1217,"line":1738},[1215,4551,2241],{"class":1377},[1215,4553,1382],{"class":1392},[1215,4555,4556],{"class":1381},"wrapper",[1215,4558,1124],{"class":1385},[1215,4560,2251],{"class":1377},[1215,4562,2254],{"class":1392},[1215,4564,1124],{"class":1385},[1215,4566,4567],{"class":1377},"toContain",[1215,4569,1382],{"class":1392},[1215,4571,1597],{"class":1385},[1215,4573,4388],{"class":1224},[1215,4575,1597],{"class":1385},[1215,4577,1425],{"class":1392},[1215,4579,4580,4582],{"class":1217,"line":1744},[1215,4581,3379],{"class":1385},[1215,4583,1425],{"class":1392},[1215,4585,4586,4588],{"class":1217,"line":1750},[1215,4587,1422],{"class":1385},[1215,4589,1425],{"class":1381},[1164,4591,4592,4593],{},"Run vitest command",[1202,4594,4595,4610,4621,4634],{},[1205,4596,4598],{"className":1207,"code":4597,"filename":1209,"language":1210,"meta":1211,"style":1211},"npm run test\n",[1129,4599,4600],{"__ignoreMap":1211},[1215,4601,4602,4604,4607],{"class":1217,"line":1218},[1215,4603,1209],{"class":1221},[1215,4605,4606],{"class":1224}," run",[1215,4608,4609],{"class":1224}," test\n",[1205,4611,4613],{"className":1207,"code":4612,"filename":1247,"language":1210,"meta":1211,"style":1211},"yarn test\n",[1129,4614,4615],{"__ignoreMap":1211},[1215,4616,4617,4619],{"class":1217,"line":1218},[1215,4618,1247],{"class":1221},[1215,4620,4609],{"class":1224},[1205,4622,4624],{"className":1207,"code":4623,"filename":1273,"language":1210,"meta":1211,"style":1211},"pnpm run test\n",[1129,4625,4626],{"__ignoreMap":1211},[1215,4627,4628,4630,4632],{"class":1217,"line":1218},[1215,4629,1273],{"class":1221},[1215,4631,4606],{"class":1224},[1215,4633,4609],{"class":1224},[1205,4635,4637],{"className":1207,"code":4636,"filename":1298,"language":1210,"meta":1211,"style":1211},"bun run test\n",[1129,4638,4639],{"__ignoreMap":1211},[1215,4640,4641,4643,4645],{"class":1217,"line":1218},[1215,4642,1298],{"class":1221},[1215,4644,4606],{"class":1224},[1215,4646,4609],{"class":1224},[1116,4648,4649,4650,4652],{},"Congratulations, you're all set to start unit testing with ",[1129,4651,2124],{}," in Nuxt! Happy testing!",[1151,4654,4656],{"id":4655},"end-to-end-testing","End-To-End Testing",[1116,4658,4659,4660,1180,4665,1180,4670,1170,4675,4680],{},"For end-to-end testing, we support ",[1120,4661,4664],{"href":4662,"rel":4663},"https://github.com/vitest-dev/vitest",[1137],"Vitest",[1120,4666,4669],{"href":4667,"rel":4668},"https://jestjs.io",[1137],"Jest",[1120,4671,4674],{"href":4672,"rel":4673},"https://cucumber.io/",[1137],"Cucumber",[1120,4676,4679],{"href":4677,"rel":4678},"https://playwright.dev/",[1137],"Playwright"," as test runners.",[1340,4682,1343],{"id":4683},"setup-1",[1116,4685,4686,4687,4689,4690,4692],{},"In each ",[1129,4688,4491],{}," block where you are taking advantage of the ",[1129,4691,3853],{}," helper methods, you will need to set up the test context before beginning.",[1205,4694,4697],{"className":1360,"code":4695,"filename":4696,"language":1362,"meta":1363,"style":1211},"import { describe, test } from 'vitest'\nimport { setup, $fetch } from '@nuxt/test-utils/e2e'\n\ndescribe('My test', async () => {\n  await setup({\n    // test context options\n  })\n\n  test('my test', () => {\n    // ...\n  })\n})\n","test/my-test.spec.ts",[1129,4698,4699,4721,4743,4747,4770,4780,4785,4791,4795,4815,4819,4825],{"__ignoreMap":1211},[1215,4700,4701,4703,4705,4707,4709,4711,4713,4715,4717,4719],{"class":1217,"line":1218},[1215,4702,1442],{"class":1370},[1215,4704,1445],{"class":1385},[1215,4706,4423],{"class":1381},[1215,4708,1605],{"class":1385},[1215,4710,1573],{"class":1381},[1215,4712,1451],{"class":1385},[1215,4714,1454],{"class":1370},[1215,4716,1457],{"class":1385},[1215,4718,1179],{"class":1224},[1215,4720,1410],{"class":1385},[1215,4722,4723,4725,4727,4729,4731,4733,4735,4737,4739,4741],{"class":1217,"line":1389},[1215,4724,1442],{"class":1370},[1215,4726,1445],{"class":1385},[1215,4728,3977],{"class":1381},[1215,4730,1605],{"class":1385},[1215,4732,3982],{"class":1381},[1215,4734,1451],{"class":1385},[1215,4736,1454],{"class":1370},[1215,4738,1457],{"class":1385},[1215,4740,3853],{"class":1224},[1215,4742,1410],{"class":1385},[1215,4744,4745],{"class":1217,"line":1402},[1215,4746,1468],{"emptyLinePlaceholder":1467},[1215,4748,4749,4751,4753,4755,4758,4760,4762,4764,4766,4768],{"class":1217,"line":1413},[1215,4750,4491],{"class":1377},[1215,4752,1382],{"class":1381},[1215,4754,1597],{"class":1385},[1215,4756,4757],{"class":1224},"My test",[1215,4759,1597],{"class":1385},[1215,4761,1605],{"class":1385},[1215,4763,2207],{"class":1611},[1215,4765,1608],{"class":1385},[1215,4767,1612],{"class":1611},[1215,4769,1615],{"class":1385},[1215,4771,4772,4774,4776,4778],{"class":1217,"line":1419},[1215,4773,2597],{"class":1370},[1215,4775,3977],{"class":1377},[1215,4777,1382],{"class":1392},[1215,4779,1386],{"class":1385},[1215,4781,4782],{"class":1217,"line":1623},[1215,4783,4784],{"class":1485},"    // test context options\n",[1215,4786,4787,4789],{"class":1217,"line":1714},[1215,4788,3379],{"class":1385},[1215,4790,1425],{"class":1392},[1215,4792,4793],{"class":1217,"line":1732},[1215,4794,1468],{"emptyLinePlaceholder":1467},[1215,4796,4797,4799,4801,4803,4805,4807,4809,4811,4813],{"class":1217,"line":1738},[1215,4798,1707],{"class":1377},[1215,4800,1382],{"class":1392},[1215,4802,1597],{"class":1385},[1215,4804,1600],{"class":1224},[1215,4806,1597],{"class":1385},[1215,4808,1605],{"class":1385},[1215,4810,1608],{"class":1385},[1215,4812,1612],{"class":1611},[1215,4814,1615],{"class":1385},[1215,4816,4817],{"class":1217,"line":1744},[1215,4818,3294],{"class":1485},[1215,4820,4821,4823],{"class":1217,"line":1750},[1215,4822,3379],{"class":1385},[1215,4824,1425],{"class":1392},[1215,4826,4827,4829],{"class":1217,"line":1756},[1215,4828,1422],{"class":1385},[1215,4830,1425],{"class":1381},[1116,4832,4833,4834,4836,4837,1180,4840,1180,4843,1170,4846,4849],{},"Behind the scenes, ",[1129,4835,1342],{}," performs a number of tasks in ",[1129,4838,4839],{},"beforeAll",[1129,4841,4842],{},"beforeEach",[1129,4844,4845],{},"afterEach",[1129,4847,4848],{},"afterAll"," to set up the Nuxt test environment correctly.",[1116,4851,4852,4853,4855],{},"Please use the options below for the ",[1129,4854,1342],{}," method.",[1923,4857,4859],{"id":4858},"nuxt-config","Nuxt Config",[1161,4861,4862,4882],{},[1164,4863,4864,4867,4868],{},[1129,4865,4866],{},"rootDir",": Path to a directory with a Nuxt app to be put under test.\n",[1161,4869,4870,4876],{},[1164,4871,4872,4873],{},"Type: ",[1129,4874,4875],{},"string",[1164,4877,4878,4879],{},"Default: ",[1129,4880,4881],{},"'.'",[1164,4883,4884,4887,4888],{},[1129,4885,4886],{},"configFile",": Name of the configuration file.\n",[1161,4889,4890,4894],{},[1164,4891,4872,4892],{},[1129,4893,4875],{},[1164,4895,4878,4896],{},[1129,4897,4898],{},"'nuxt.config'",[1923,4900,4902],{"id":4901},"timings","Timings",[1161,4904,4905],{},[1164,4906,4907,4910,4911,4914,4915],{},[1129,4908,4909],{},"setupTimeout",": The amount of time (in milliseconds) to allow for ",[1129,4912,4913],{},"setupTest"," to complete its work (which could include building or generating files for a Nuxt application, depending on the options that are passed).\n",[1161,4916,4917,4922],{},[1164,4918,4872,4919],{},[1129,4920,4921],{},"number",[1164,4923,4878,4924],{},[1129,4925,4926],{},"60000",[1923,4928,283],{"id":4929},"features",[1161,4931,4932,4961,4981,4999,5018,5040,5083],{},[1164,4933,4934,4936,4937],{},[1129,4935,4286],{},": Whether to run a separate build step.",[1161,4938,4939,4944],{},[1164,4940,4872,4941],{},[1129,4942,4943],{},"boolean",[1164,4945,4878,4946,3700,4948,4950,4951,1546,4954,4956,4957,4960],{},[1129,4947,1934],{},[1129,4949,1946],{}," if ",[1129,4952,4953],{},"browser",[1129,4955,219],{}," is disabled, or if a ",[1129,4958,4959],{},"host"," is provided)",[1164,4962,4963,4965,4966],{},[1129,4964,219],{},": Whether to launch a server to respond to requests in the test suite.",[1161,4967,4968,4972],{},[1164,4969,4872,4970],{},[1129,4971,4943],{},[1164,4973,4878,4974,3700,4976,4978,4979,4960],{},[1129,4975,1934],{},[1129,4977,1946],{}," if a ",[1129,4980,4959],{},[1164,4982,4983,4986,4987],{},[1129,4984,4985],{},"port",": If provided, set the launched test server port to the value.",[1161,4988,4989,4994],{},[1164,4990,4872,4991],{},[1129,4992,4993],{},"number | undefined",[1164,4995,4878,4996],{},[1129,4997,4998],{},"undefined",[1164,5000,5001,5003,5004,1124,5008],{},[1129,5002,4959],{},": If provided, a URL to use as the test target instead of building and running a new server. Useful for running \"real\" end-to-end tests against a deployed version of your application, or against an already running local server (which may provide a significant reduction in test execution timings). See the ",[1120,5005,5007],{"href":5006},"#target-host-end-to-end-example","target host end-to-end example below",[1161,5009,5010,5014],{},[1164,5011,4872,5012],{},[1129,5013,4875],{},[1164,5015,4878,5016],{},[1129,5017,4998],{},[1164,5019,5020,5022,5023,5029,5030],{},[1129,5021,4953],{},": Under the hood, Nuxt test utils uses ",[1120,5024,5027],{"href":5025,"rel":5026},"https://playwright.dev",[1137],[1129,5028,1189],{}," to carry out browser testing. If this option is set, a browser will be launched and can be controlled in the subsequent test suite.",[1161,5031,5032,5036],{},[1164,5033,4872,5034],{},[1129,5035,4943],{},[1164,5037,4878,5038],{},[1129,5039,1946],{},[1164,5041,5042,5045],{},[1129,5043,5044],{},"browserOptions",[1161,5046,5047],{},[1164,5048,4872,5049,5052,5053],{},[1129,5050,5051],{},"object"," with the following properties\n",[1161,5054,5055,5070],{},[1164,5056,5057,5060,5061,1180,5064,1546,5067],{},[1129,5058,5059],{},"type",": The type of browser to launch - either ",[1129,5062,5063],{},"chromium",[1129,5065,5066],{},"firefox",[1129,5068,5069],{},"webkit",[1164,5071,5072,4276,5075,5077,5078,1124],{},[1129,5073,5074],{},"launch",[1129,5076,5051],{}," of options that will be passed to playwright when launching the browser. See ",[1120,5079,5082],{"href":5080,"rel":5081},"https://playwright.dev/docs/api/class-browsertype#browser-type-launch",[1137],"full API reference",[1164,5084,5085,5088,5089,5093,5094],{},[1129,5086,5087],{},"runner",": Specify the runner for the test suite. Currently, ",[1120,5090,4664],{"href":5091,"rel":5092},"https://vitest.dev",[1137]," is recommended.",[1161,5095,5096,5101],{},[1164,5097,4872,5098],{},[1129,5099,5100],{},"'vitest' | 'jest' | 'cucumber'",[1164,5102,4878,5103],{},[1129,5104,5105],{},"'vitest'",[5107,5108,5110,5111,5113],"h5",{"id":5109},"target-host-end-to-end-example","Target ",[1129,5112,4959],{}," end-to-end example",[1116,5115,5116],{},"A common use-case for end-to-end testing is running the tests against a deployed application running in the same environment typically used for Production.",[1116,5118,5119],{},"For local development or automated deploy pipelines, testing against a separate local server can be more efficient and is typically faster than allowing the test framework to rebuild between tests.",[1116,5121,5122,5123,5125,5126,5128],{},"To utilize a separate target host for end-to-end tests, simply provide the ",[1129,5124,4959],{}," property of the ",[1129,5127,1342],{}," function with the desired URL.",[1205,5130,5132],{"className":1360,"code":5131,"language":1362,"meta":1363,"style":1211},"import { setup, createPage } from '@nuxt/test-utils/e2e'\nimport { describe, it, expect } from 'vitest'\n\ndescribe('login page', async () => {\n  await setup({\n    host: 'http://localhost:8787',\n  })\n\n  it('displays the email and password fields', async () => {\n    const page = await createPage('/login')\n    expect(await page.getByTestId('email').isVisible()).toBe(true)\n    expect(await page.getByTestId('password').isVisible()).toBe(true)\n  })\n})\n",[1129,5133,5134,5157,5183,5187,5210,5220,5236,5242,5246,5269,5293,5337,5378,5384],{"__ignoreMap":1211},[1215,5135,5136,5138,5140,5142,5144,5147,5149,5151,5153,5155],{"class":1217,"line":1218},[1215,5137,1442],{"class":1370},[1215,5139,1445],{"class":1385},[1215,5141,3977],{"class":1381},[1215,5143,1605],{"class":1385},[1215,5145,5146],{"class":1381}," createPage",[1215,5148,1451],{"class":1385},[1215,5150,1454],{"class":1370},[1215,5152,1457],{"class":1385},[1215,5154,3853],{"class":1224},[1215,5156,1410],{"class":1385},[1215,5158,5159,5161,5163,5165,5167,5169,5171,5173,5175,5177,5179,5181],{"class":1217,"line":1389},[1215,5160,1442],{"class":1370},[1215,5162,1445],{"class":1385},[1215,5164,4423],{"class":1381},[1215,5166,1605],{"class":1385},[1215,5168,4428],{"class":1381},[1215,5170,1605],{"class":1385},[1215,5172,4433],{"class":1381},[1215,5174,1451],{"class":1385},[1215,5176,1454],{"class":1370},[1215,5178,1457],{"class":1385},[1215,5180,1179],{"class":1224},[1215,5182,1410],{"class":1385},[1215,5184,5185],{"class":1217,"line":1402},[1215,5186,1468],{"emptyLinePlaceholder":1467},[1215,5188,5189,5191,5193,5195,5198,5200,5202,5204,5206,5208],{"class":1217,"line":1413},[1215,5190,4491],{"class":1377},[1215,5192,1382],{"class":1381},[1215,5194,1597],{"class":1385},[1215,5196,5197],{"class":1224},"login page",[1215,5199,1597],{"class":1385},[1215,5201,1605],{"class":1385},[1215,5203,2207],{"class":1611},[1215,5205,1608],{"class":1385},[1215,5207,1612],{"class":1611},[1215,5209,1615],{"class":1385},[1215,5211,5212,5214,5216,5218],{"class":1217,"line":1419},[1215,5213,2597],{"class":1370},[1215,5215,3977],{"class":1377},[1215,5217,1382],{"class":1392},[1215,5219,1386],{"class":1385},[1215,5221,5222,5225,5227,5229,5232,5234],{"class":1217,"line":1623},[1215,5223,5224],{"class":1392},"    host",[1215,5226,1396],{"class":1385},[1215,5228,1457],{"class":1385},[1215,5230,5231],{"class":1224},"http://localhost:8787",[1215,5233,1597],{"class":1385},[1215,5235,1729],{"class":1385},[1215,5237,5238,5240],{"class":1217,"line":1714},[1215,5239,3379],{"class":1385},[1215,5241,1425],{"class":1392},[1215,5243,5244],{"class":1217,"line":1732},[1215,5245,1468],{"emptyLinePlaceholder":1467},[1215,5247,5248,5250,5252,5254,5257,5259,5261,5263,5265,5267],{"class":1217,"line":1738},[1215,5249,4513],{"class":1377},[1215,5251,1382],{"class":1392},[1215,5253,1597],{"class":1385},[1215,5255,5256],{"class":1224},"displays the email and password fields",[1215,5258,1597],{"class":1385},[1215,5260,1605],{"class":1385},[1215,5262,2207],{"class":1611},[1215,5264,1608],{"class":1385},[1215,5266,1612],{"class":1611},[1215,5268,1615],{"class":1385},[1215,5270,5271,5273,5276,5278,5280,5282,5284,5286,5289,5291],{"class":1217,"line":1744},[1215,5272,2218],{"class":1611},[1215,5274,5275],{"class":1381}," page",[1215,5277,2224],{"class":1385},[1215,5279,2227],{"class":1370},[1215,5281,5146],{"class":1377},[1215,5283,1382],{"class":1392},[1215,5285,1597],{"class":1385},[1215,5287,5288],{"class":1224},"/login",[1215,5290,1597],{"class":1385},[1215,5292,1425],{"class":1392},[1215,5294,5295,5297,5299,5301,5303,5305,5308,5310,5312,5315,5317,5319,5321,5324,5326,5328,5331,5333,5335],{"class":1217,"line":1750},[1215,5296,2241],{"class":1377},[1215,5298,1382],{"class":1392},[1215,5300,4001],{"class":1370},[1215,5302,5275],{"class":1381},[1215,5304,1124],{"class":1385},[1215,5306,5307],{"class":1377},"getByTestId",[1215,5309,1382],{"class":1392},[1215,5311,1597],{"class":1385},[1215,5313,5314],{"class":1224},"email",[1215,5316,1597],{"class":1385},[1215,5318,2760],{"class":1392},[1215,5320,1124],{"class":1385},[1215,5322,5323],{"class":1377},"isVisible",[1215,5325,2254],{"class":1392},[1215,5327,1124],{"class":1385},[1215,5329,5330],{"class":1377},"toBe",[1215,5332,1382],{"class":1392},[1215,5334,1934],{"class":2049},[1215,5336,1425],{"class":1392},[1215,5338,5339,5341,5343,5345,5347,5349,5351,5353,5355,5358,5360,5362,5364,5366,5368,5370,5372,5374,5376],{"class":1217,"line":1756},[1215,5340,2241],{"class":1377},[1215,5342,1382],{"class":1392},[1215,5344,4001],{"class":1370},[1215,5346,5275],{"class":1381},[1215,5348,1124],{"class":1385},[1215,5350,5307],{"class":1377},[1215,5352,1382],{"class":1392},[1215,5354,1597],{"class":1385},[1215,5356,5357],{"class":1224},"password",[1215,5359,1597],{"class":1385},[1215,5361,2760],{"class":1392},[1215,5363,1124],{"class":1385},[1215,5365,5323],{"class":1377},[1215,5367,2254],{"class":1392},[1215,5369,1124],{"class":1385},[1215,5371,5330],{"class":1377},[1215,5373,1382],{"class":1392},[1215,5375,1934],{"class":2049},[1215,5377,1425],{"class":1392},[1215,5379,5380,5382],{"class":1217,"line":1765},[1215,5381,3379],{"class":1385},[1215,5383,1425],{"class":1392},[1215,5385,5386,5388],{"class":1217,"line":1771},[1215,5387,1422],{"class":1385},[1215,5389,1425],{"class":1381},[1340,5391,5393],{"id":5392},"apis","APIs",[1923,5395,5397],{"id":5396},"fetchurl",[1129,5398,5399],{},"$fetch(url)",[1116,5401,5402],{},"Get the HTML of a server-rendered page.",[1205,5404,5406],{"className":1360,"code":5405,"language":1362,"meta":1363,"style":1211},"import { $fetch } from '@nuxt/test-utils/e2e'\n\nconst html = await $fetch('/')\n",[1129,5407,5408,5426,5430],{"__ignoreMap":1211},[1215,5409,5410,5412,5414,5416,5418,5420,5422,5424],{"class":1217,"line":1218},[1215,5411,1442],{"class":1370},[1215,5413,1445],{"class":1385},[1215,5415,3982],{"class":1381},[1215,5417,1451],{"class":1385},[1215,5419,1454],{"class":1370},[1215,5421,1457],{"class":1385},[1215,5423,3853],{"class":1224},[1215,5425,1410],{"class":1385},[1215,5427,5428],{"class":1217,"line":1389},[1215,5429,1468],{"emptyLinePlaceholder":1467},[1215,5431,5432,5434,5437,5440,5442,5444,5446,5448,5451,5453],{"class":1217,"line":1402},[1215,5433,3009],{"class":1611},[1215,5435,5436],{"class":1381}," html ",[1215,5438,5439],{"class":1385},"=",[1215,5441,2227],{"class":1370},[1215,5443,3982],{"class":1377},[1215,5445,1382],{"class":1381},[1215,5447,1597],{"class":1385},[1215,5449,5450],{"class":1224},"/",[1215,5452,1597],{"class":1385},[1215,5454,1425],{"class":1381},[1923,5456,5458],{"id":5457},"fetchurl-1",[1129,5459,5460],{},"fetch(url)",[1116,5462,5463],{},"Get the response of a server-rendered page.",[1205,5465,5467],{"className":1360,"code":5466,"language":1362,"meta":1363,"style":1211},"import { fetch } from '@nuxt/test-utils/e2e'\n\nconst res = await fetch('/')\nconst { body, headers } = res\n",[1129,5468,5469,5488,5492,5515],{"__ignoreMap":1211},[1215,5470,5471,5473,5475,5478,5480,5482,5484,5486],{"class":1217,"line":1218},[1215,5472,1442],{"class":1370},[1215,5474,1445],{"class":1385},[1215,5476,5477],{"class":1381}," fetch",[1215,5479,1451],{"class":1385},[1215,5481,1454],{"class":1370},[1215,5483,1457],{"class":1385},[1215,5485,3853],{"class":1224},[1215,5487,1410],{"class":1385},[1215,5489,5490],{"class":1217,"line":1389},[1215,5491,1468],{"emptyLinePlaceholder":1467},[1215,5493,5494,5496,5499,5501,5503,5505,5507,5509,5511,5513],{"class":1217,"line":1402},[1215,5495,3009],{"class":1611},[1215,5497,5498],{"class":1381}," res ",[1215,5500,5439],{"class":1385},[1215,5502,2227],{"class":1370},[1215,5504,5477],{"class":1377},[1215,5506,1382],{"class":1381},[1215,5508,1597],{"class":1385},[1215,5510,5450],{"class":1224},[1215,5512,1597],{"class":1385},[1215,5514,1425],{"class":1381},[1215,5516,5517,5519,5521,5524,5526,5529,5531,5533],{"class":1217,"line":1413},[1215,5518,3009],{"class":1611},[1215,5520,1445],{"class":1385},[1215,5522,5523],{"class":1381}," body",[1215,5525,1605],{"class":1385},[1215,5527,5528],{"class":1381}," headers ",[1215,5530,1422],{"class":1385},[1215,5532,2224],{"class":1385},[1215,5534,5535],{"class":1381}," res\n",[1923,5537,5539],{"id":5538},"urlpath",[1129,5540,5541],{},"url(path)",[1116,5543,5544],{},"Get the full URL for a given page (including the port the test server is running on.)",[1205,5546,5548],{"className":1360,"code":5547,"language":1362,"meta":1363,"style":1211},"import { url } from '@nuxt/test-utils/e2e'\n\nconst pageUrl = url('/page')\n// 'http://localhost:6840/page'\n",[1129,5549,5550,5569,5573,5595],{"__ignoreMap":1211},[1215,5551,5552,5554,5556,5559,5561,5563,5565,5567],{"class":1217,"line":1218},[1215,5553,1442],{"class":1370},[1215,5555,1445],{"class":1385},[1215,5557,5558],{"class":1381}," url",[1215,5560,1451],{"class":1385},[1215,5562,1454],{"class":1370},[1215,5564,1457],{"class":1385},[1215,5566,3853],{"class":1224},[1215,5568,1410],{"class":1385},[1215,5570,5571],{"class":1217,"line":1389},[1215,5572,1468],{"emptyLinePlaceholder":1467},[1215,5574,5575,5577,5580,5582,5584,5586,5588,5591,5593],{"class":1217,"line":1402},[1215,5576,3009],{"class":1611},[1215,5578,5579],{"class":1381}," pageUrl ",[1215,5581,5439],{"class":1385},[1215,5583,5558],{"class":1377},[1215,5585,1382],{"class":1381},[1215,5587,1597],{"class":1385},[1215,5589,5590],{"class":1224},"/page",[1215,5592,1597],{"class":1385},[1215,5594,1425],{"class":1381},[1215,5596,5597],{"class":1217,"line":1413},[1215,5598,5599],{"class":1485},"// 'http://localhost:6840/page'\n",[1340,5601,5603],{"id":5602},"testing-in-a-browser","Testing in a Browser",[1116,5605,5606,5607,5609],{},"We provide built-in support using Playwright within ",[1129,5608,1131],{},", either programmatically or via the Playwright test runner.",[1923,5611,5613],{"id":5612},"createpageurl",[1129,5614,5615],{},"createPage(url)",[1116,5617,5618,5619,1180,5621,1546,5623,5625,5626,5629,5630,1124],{},"Within ",[1129,5620,1179],{},[1129,5622,1186],{},[1129,5624,1183],{},", you can create a configured Playwright browser instance with ",[1129,5627,5628],{},"createPage",", and (optionally) point it at a path from the running server. You can find out more about the API methods available from ",[1120,5631,5634],{"href":5632,"rel":5633},"https://playwright.dev/docs/api/class-page",[1137],"in the Playwright documentation",[1205,5636,5638],{"className":1360,"code":5637,"language":1362,"meta":1363,"style":1211},"import { createPage } from '@nuxt/test-utils/e2e'\n\nconst page = await createPage('/page')\n// you can access all the Playwright APIs from the `page` variable\n",[1129,5639,5640,5658,5662,5685],{"__ignoreMap":1211},[1215,5641,5642,5644,5646,5648,5650,5652,5654,5656],{"class":1217,"line":1218},[1215,5643,1442],{"class":1370},[1215,5645,1445],{"class":1385},[1215,5647,5146],{"class":1381},[1215,5649,1451],{"class":1385},[1215,5651,1454],{"class":1370},[1215,5653,1457],{"class":1385},[1215,5655,3853],{"class":1224},[1215,5657,1410],{"class":1385},[1215,5659,5660],{"class":1217,"line":1389},[1215,5661,1468],{"emptyLinePlaceholder":1467},[1215,5663,5664,5666,5669,5671,5673,5675,5677,5679,5681,5683],{"class":1217,"line":1402},[1215,5665,3009],{"class":1611},[1215,5667,5668],{"class":1381}," page ",[1215,5670,5439],{"class":1385},[1215,5672,2227],{"class":1370},[1215,5674,5146],{"class":1377},[1215,5676,1382],{"class":1381},[1215,5678,1597],{"class":1385},[1215,5680,5590],{"class":1224},[1215,5682,1597],{"class":1385},[1215,5684,1425],{"class":1381},[1215,5686,5687],{"class":1217,"line":1413},[1215,5688,5689],{"class":1485},"// you can access all the Playwright APIs from the `page` variable\n",[1923,5691,5693],{"id":5692},"testing-with-playwright-test-runner","Testing with Playwright Test Runner",[1116,5695,5696,5697,1124],{},"We also provide first-class support for testing Nuxt within ",[1120,5698,5701],{"href":5699,"rel":5700},"https://playwright.dev/docs/intro",[1137],"the Playwright test runner",[1202,5703,5704,5723,5740,5757],{},[1205,5705,5707],{"className":1207,"code":5706,"filename":1209,"language":1210,"meta":1211,"style":1211},"npm i --save-dev @playwright/test @nuxt/test-utils\n",[1129,5708,5709],{"__ignoreMap":1211},[1215,5710,5711,5713,5715,5717,5720],{"class":1217,"line":1218},[1215,5712,1209],{"class":1221},[1215,5714,1225],{"class":1224},[1215,5716,1228],{"class":1224},[1215,5718,5719],{"class":1224}," @playwright/test",[1215,5721,5722],{"class":1224}," @nuxt/test-utils\n",[1205,5724,5726],{"className":1207,"code":5725,"filename":1247,"language":1210,"meta":1211,"style":1211},"yarn add --dev @playwright/test @nuxt/test-utils\n",[1129,5727,5728],{"__ignoreMap":1211},[1215,5729,5730,5732,5734,5736,5738],{"class":1217,"line":1218},[1215,5731,1247],{"class":1221},[1215,5733,1256],{"class":1224},[1215,5735,1259],{"class":1224},[1215,5737,5719],{"class":1224},[1215,5739,5722],{"class":1224},[1205,5741,5743],{"className":1207,"code":5742,"filename":1273,"language":1210,"meta":1211,"style":1211},"pnpm add -D @playwright/test @nuxt/test-utils\n",[1129,5744,5745],{"__ignoreMap":1211},[1215,5746,5747,5749,5751,5753,5755],{"class":1217,"line":1218},[1215,5748,1273],{"class":1221},[1215,5750,1256],{"class":1224},[1215,5752,1284],{"class":1224},[1215,5754,5719],{"class":1224},[1215,5756,5722],{"class":1224},[1205,5758,5760],{"className":1207,"code":5759,"filename":1298,"language":1210,"meta":1211,"style":1211},"bun add --dev @playwright/test @nuxt/test-utils\n",[1129,5761,5762],{"__ignoreMap":1211},[1215,5763,5764,5766,5768,5770,5772],{"class":1217,"line":1218},[1215,5765,1298],{"class":1221},[1215,5767,1256],{"class":1224},[1215,5769,1259],{"class":1224},[1215,5771,5719],{"class":1224},[1215,5773,5722],{"class":1224},[1116,5775,5776,5777,5780],{},"You can provide global Nuxt configuration, with the same configuration details as the ",[1129,5778,5779],{},"setup()"," function mentioned earlier in this section.",[1205,5782,5785],{"className":1360,"code":5783,"filename":5784,"language":1362,"meta":1211,"style":1211},"import { fileURLToPath } from 'node:url'\nimport { defineConfig, devices } from '@playwright/test'\nimport type { ConfigOptions } from '@nuxt/test-utils/playwright'\n\nexport default defineConfig\u003CConfigOptions>({\n  use: {\n    nuxt: {\n      rootDir: fileURLToPath(new URL('.', import.meta.url))\n    }\n  },\n  // ...\n})\n","playwright.config.ts",[1129,5786,5787,5805,5828,5851,5855,5874,5883,5892,5931,5935,5939,5944],{"__ignoreMap":1211},[1215,5788,5789,5791,5793,5795,5797,5799,5801,5803],{"class":1217,"line":1218},[1215,5790,1442],{"class":1370},[1215,5792,1445],{"class":1385},[1215,5794,1657],{"class":1381},[1215,5796,1451],{"class":1385},[1215,5798,1454],{"class":1370},[1215,5800,1457],{"class":1385},[1215,5802,1666],{"class":1224},[1215,5804,1410],{"class":1385},[1215,5806,5807,5809,5811,5813,5815,5818,5820,5822,5824,5826],{"class":1217,"line":1389},[1215,5808,1442],{"class":1370},[1215,5810,1445],{"class":1385},[1215,5812,4156],{"class":1381},[1215,5814,1605],{"class":1385},[1215,5816,5817],{"class":1381}," devices",[1215,5819,1451],{"class":1385},[1215,5821,1454],{"class":1370},[1215,5823,1457],{"class":1385},[1215,5825,1199],{"class":1224},[1215,5827,1410],{"class":1385},[1215,5829,5830,5832,5835,5837,5840,5842,5844,5846,5849],{"class":1217,"line":1402},[1215,5831,1442],{"class":1370},[1215,5833,5834],{"class":1370}," type",[1215,5836,1445],{"class":1385},[1215,5838,5839],{"class":1381}," ConfigOptions",[1215,5841,1451],{"class":1385},[1215,5843,1454],{"class":1370},[1215,5845,1457],{"class":1385},[1215,5847,5848],{"class":1224},"@nuxt/test-utils/playwright",[1215,5850,1410],{"class":1385},[1215,5852,5853],{"class":1217,"line":1413},[1215,5854,1468],{"emptyLinePlaceholder":1467},[1215,5856,5857,5859,5861,5863,5865,5868,5870,5872],{"class":1217,"line":1419},[1215,5858,1371],{"class":1370},[1215,5860,1374],{"class":1370},[1215,5862,4156],{"class":1377},[1215,5864,4369],{"class":1385},[1215,5866,5867],{"class":1221},"ConfigOptions",[1215,5869,4385],{"class":1385},[1215,5871,1382],{"class":1381},[1215,5873,1386],{"class":1385},[1215,5875,5876,5879,5881],{"class":1217,"line":1623},[1215,5877,5878],{"class":1392},"  use",[1215,5880,1396],{"class":1385},[1215,5882,1615],{"class":1385},[1215,5884,5885,5888,5890],{"class":1217,"line":1714},[1215,5886,5887],{"class":1392},"    nuxt",[1215,5889,1396],{"class":1385},[1215,5891,1615],{"class":1385},[1215,5893,5894,5897,5899,5901,5903,5906,5909,5911,5913,5915,5917,5919,5921,5923,5926,5928],{"class":1217,"line":1732},[1215,5895,5896],{"class":1392},"      rootDir",[1215,5898,1396],{"class":1385},[1215,5900,1657],{"class":1377},[1215,5902,1382],{"class":1381},[1215,5904,5905],{"class":1385},"new",[1215,5907,5908],{"class":1377}," URL",[1215,5910,1382],{"class":1381},[1215,5912,1597],{"class":1385},[1215,5914,1124],{"class":1224},[1215,5916,1597],{"class":1385},[1215,5918,1605],{"class":1385},[1215,5920,3421],{"class":1370},[1215,5922,1124],{"class":1385},[1215,5924,5925],{"class":1381},"meta",[1215,5927,1124],{"class":1385},[1215,5929,5930],{"class":1381},"url))\n",[1215,5932,5933],{"class":1217,"line":1738},[1215,5934,2078],{"class":1385},[1215,5936,5937],{"class":1217,"line":1744},[1215,5938,3274],{"class":1385},[1215,5940,5941],{"class":1217,"line":1750},[1215,5942,5943],{"class":1485},"  // ...\n",[1215,5945,5946,5948],{"class":1217,"line":1756},[1215,5947,1422],{"class":1385},[1215,5949,1425],{"class":1381},[5951,5952],"read-more",{"target":1143,"title":5953,"to":5954},"See full example config","https://github.com/nuxt/test-utils/blob/main/examples/app-playwright/playwright.config.ts",[1116,5956,5957,5958,1170,5961,5963,5964,1396],{},"Your test file should then use ",[1129,5959,5960],{},"expect",[1129,5962,1592],{}," directly from ",[1129,5965,5848],{},[1205,5967,5970],{"className":1360,"code":5968,"filename":5969,"language":1362,"meta":1211,"style":1211},"import { expect, test } from '@nuxt/test-utils/playwright'\n\ntest('test', async ({ page, goto }) => {\n  await goto('/', { waitUntil: 'hydration' })\n  await expect(page.getByRole('heading')).toHaveText('Welcome to Playwright!')\n})\n","tests/example.test.ts",[1129,5971,5972,5994,5998,6031,6065,6108],{"__ignoreMap":1211},[1215,5973,5974,5976,5978,5980,5982,5984,5986,5988,5990,5992],{"class":1217,"line":1218},[1215,5975,1442],{"class":1370},[1215,5977,1445],{"class":1385},[1215,5979,4433],{"class":1381},[1215,5981,1605],{"class":1385},[1215,5983,1573],{"class":1381},[1215,5985,1451],{"class":1385},[1215,5987,1454],{"class":1370},[1215,5989,1457],{"class":1385},[1215,5991,5848],{"class":1224},[1215,5993,1410],{"class":1385},[1215,5995,5996],{"class":1217,"line":1389},[1215,5997,1468],{"emptyLinePlaceholder":1467},[1215,5999,6000,6002,6004,6006,6008,6010,6012,6014,6017,6019,6021,6024,6027,6029],{"class":1217,"line":1402},[1215,6001,1592],{"class":1377},[1215,6003,1382],{"class":1381},[1215,6005,1597],{"class":1385},[1215,6007,1592],{"class":1224},[1215,6009,1597],{"class":1385},[1215,6011,1605],{"class":1385},[1215,6013,2207],{"class":1611},[1215,6015,6016],{"class":1385}," ({",[1215,6018,5275],{"class":3284},[1215,6020,1605],{"class":1385},[1215,6022,6023],{"class":3284}," goto",[1215,6025,6026],{"class":1385}," })",[1215,6028,1612],{"class":1611},[1215,6030,1615],{"class":1385},[1215,6032,6033,6035,6037,6039,6041,6043,6045,6047,6049,6052,6054,6056,6059,6061,6063],{"class":1217,"line":1413},[1215,6034,2597],{"class":1370},[1215,6036,6023],{"class":1370},[1215,6038,1382],{"class":1392},[1215,6040,1597],{"class":1385},[1215,6042,5450],{"class":1224},[1215,6044,1597],{"class":1385},[1215,6046,1605],{"class":1385},[1215,6048,1445],{"class":1385},[1215,6050,6051],{"class":1392}," waitUntil",[1215,6053,1396],{"class":1385},[1215,6055,1457],{"class":1385},[1215,6057,6058],{"class":1224},"hydration",[1215,6060,1597],{"class":1385},[1215,6062,1451],{"class":1385},[1215,6064,1425],{"class":1392},[1215,6066,6067,6069,6071,6073,6076,6078,6081,6083,6085,6088,6090,6092,6094,6097,6099,6101,6104,6106],{"class":1217,"line":1419},[1215,6068,2597],{"class":1370},[1215,6070,4433],{"class":1377},[1215,6072,1382],{"class":1392},[1215,6074,6075],{"class":1381},"page",[1215,6077,1124],{"class":1385},[1215,6079,6080],{"class":1377},"getByRole",[1215,6082,1382],{"class":1392},[1215,6084,1597],{"class":1385},[1215,6086,6087],{"class":1224},"heading",[1215,6089,1597],{"class":1385},[1215,6091,2631],{"class":1392},[1215,6093,1124],{"class":1385},[1215,6095,6096],{"class":1377},"toHaveText",[1215,6098,1382],{"class":1392},[1215,6100,1597],{"class":1385},[1215,6102,6103],{"class":1224},"Welcome to Playwright!",[1215,6105,1597],{"class":1385},[1215,6107,1425],{"class":1392},[1215,6109,6110,6112],{"class":1217,"line":1623},[1215,6111,1422],{"class":1385},[1215,6113,1425],{"class":1381},[1116,6115,6116],{},"You can alternatively configure your Nuxt server directly within your test file:",[1205,6118,6120],{"className":1360,"code":6119,"filename":5969,"language":1362,"meta":1211,"style":1211},"import { expect, test } from '@nuxt/test-utils/playwright'\n\ntest.use({\n  nuxt: {\n    rootDir: fileURLToPath(new URL('..', import.meta.url))\n  }\n})\n\ntest('test', async ({ page, goto }) => {\n  await goto('/', { waitUntil: 'hydration' })\n  await expect(page.getByRole('heading')).toHaveText('Welcome to Playwright!')\n})\n",[1129,6121,6122,6144,6148,6161,6170,6206,6210,6216,6220,6250,6282,6320],{"__ignoreMap":1211},[1215,6123,6124,6126,6128,6130,6132,6134,6136,6138,6140,6142],{"class":1217,"line":1218},[1215,6125,1442],{"class":1370},[1215,6127,1445],{"class":1385},[1215,6129,4433],{"class":1381},[1215,6131,1605],{"class":1385},[1215,6133,1573],{"class":1381},[1215,6135,1451],{"class":1385},[1215,6137,1454],{"class":1370},[1215,6139,1457],{"class":1385},[1215,6141,5848],{"class":1224},[1215,6143,1410],{"class":1385},[1215,6145,6146],{"class":1217,"line":1389},[1215,6147,1468],{"emptyLinePlaceholder":1467},[1215,6149,6150,6152,6154,6157,6159],{"class":1217,"line":1402},[1215,6151,1592],{"class":1381},[1215,6153,1124],{"class":1385},[1215,6155,6156],{"class":1377},"use",[1215,6158,1382],{"class":1381},[1215,6160,1386],{"class":1385},[1215,6162,6163,6166,6168],{"class":1217,"line":1413},[1215,6164,6165],{"class":1392},"  nuxt",[1215,6167,1396],{"class":1385},[1215,6169,1615],{"class":1385},[1215,6171,6172,6175,6177,6179,6181,6183,6185,6187,6189,6192,6194,6196,6198,6200,6202,6204],{"class":1217,"line":1419},[1215,6173,6174],{"class":1392},"    rootDir",[1215,6176,1396],{"class":1385},[1215,6178,1657],{"class":1377},[1215,6180,1382],{"class":1381},[1215,6182,5905],{"class":1385},[1215,6184,5908],{"class":1377},[1215,6186,1382],{"class":1381},[1215,6188,1597],{"class":1385},[1215,6190,6191],{"class":1224},"..",[1215,6193,1597],{"class":1385},[1215,6195,1605],{"class":1385},[1215,6197,3421],{"class":1370},[1215,6199,1124],{"class":1385},[1215,6201,5925],{"class":1381},[1215,6203,1124],{"class":1385},[1215,6205,5930],{"class":1381},[1215,6207,6208],{"class":1217,"line":1623},[1215,6209,1801],{"class":1385},[1215,6211,6212,6214],{"class":1217,"line":1714},[1215,6213,1422],{"class":1385},[1215,6215,1425],{"class":1381},[1215,6217,6218],{"class":1217,"line":1732},[1215,6219,1468],{"emptyLinePlaceholder":1467},[1215,6221,6222,6224,6226,6228,6230,6232,6234,6236,6238,6240,6242,6244,6246,6248],{"class":1217,"line":1738},[1215,6223,1592],{"class":1377},[1215,6225,1382],{"class":1381},[1215,6227,1597],{"class":1385},[1215,6229,1592],{"class":1224},[1215,6231,1597],{"class":1385},[1215,6233,1605],{"class":1385},[1215,6235,2207],{"class":1611},[1215,6237,6016],{"class":1385},[1215,6239,5275],{"class":3284},[1215,6241,1605],{"class":1385},[1215,6243,6023],{"class":3284},[1215,6245,6026],{"class":1385},[1215,6247,1612],{"class":1611},[1215,6249,1615],{"class":1385},[1215,6251,6252,6254,6256,6258,6260,6262,6264,6266,6268,6270,6272,6274,6276,6278,6280],{"class":1217,"line":1744},[1215,6253,2597],{"class":1370},[1215,6255,6023],{"class":1370},[1215,6257,1382],{"class":1392},[1215,6259,1597],{"class":1385},[1215,6261,5450],{"class":1224},[1215,6263,1597],{"class":1385},[1215,6265,1605],{"class":1385},[1215,6267,1445],{"class":1385},[1215,6269,6051],{"class":1392},[1215,6271,1396],{"class":1385},[1215,6273,1457],{"class":1385},[1215,6275,6058],{"class":1224},[1215,6277,1597],{"class":1385},[1215,6279,1451],{"class":1385},[1215,6281,1425],{"class":1392},[1215,6283,6284,6286,6288,6290,6292,6294,6296,6298,6300,6302,6304,6306,6308,6310,6312,6314,6316,6318],{"class":1217,"line":1750},[1215,6285,2597],{"class":1370},[1215,6287,4433],{"class":1377},[1215,6289,1382],{"class":1392},[1215,6291,6075],{"class":1381},[1215,6293,1124],{"class":1385},[1215,6295,6080],{"class":1377},[1215,6297,1382],{"class":1392},[1215,6299,1597],{"class":1385},[1215,6301,6087],{"class":1224},[1215,6303,1597],{"class":1385},[1215,6305,2631],{"class":1392},[1215,6307,1124],{"class":1385},[1215,6309,6096],{"class":1377},[1215,6311,1382],{"class":1392},[1215,6313,1597],{"class":1385},[1215,6315,6103],{"class":1224},[1215,6317,1597],{"class":1385},[1215,6319,1425],{"class":1392},[1215,6321,6322,6324],{"class":1217,"line":1756},[1215,6323,1422],{"class":1385},[1215,6325,1425],{"class":1381},[6327,6328,6329],"style",{},"html pre.shiki code .sYp4K, html code.shiki .sYp4K{--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF}html pre.shiki code .s5UST, html code.shiki .s5UST{--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D}html pre.shiki code .spdxX, html code.shiki .spdxX{--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8}html pre.shiki code .sRBFq, html code.shiki .sRBFq{--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sQ5dg, html code.shiki .sQ5dg{--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178}html pre.shiki code .sFVN2, html code.shiki .sFVN2{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .szd4z, html code.shiki .szd4z{--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF}html pre.shiki code .sT2Ow, html code.shiki .sT2Ow{--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B}html pre.shiki code .svXlt, html code.shiki .svXlt{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .ssYd4, html code.shiki .ssYd4{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sagxc, html code.shiki .sagxc{--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC}html pre.shiki code .sV9sa, html code.shiki .sV9sa{--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C}",{"title":1211,"searchDepth":1389,"depth":1389,"links":6331},[6332,6333,6341],{"id":1153,"depth":1389,"text":24},{"id":1321,"depth":1389,"text":1322,"children":6334},[6335,6336,6337,6338,6339],{"id":1342,"depth":1402,"text":1343},{"id":1528,"depth":1402,"text":1529},{"id":1915,"depth":1402,"text":1916},{"id":2091,"depth":1402,"text":2092},{"id":4037,"depth":1402,"text":6340},"Using @vue/test-utils",{"id":4655,"depth":1389,"text":4656,"children":6342},[6343,6344,6345],{"id":4683,"depth":1402,"text":1343},{"id":5392,"depth":1402,"text":5393},{"id":5602,"depth":1402,"text":5603},"How to test your Nuxt application.","md",{},{"icon":102},{"title":99,"description":6346},"bdGua5henA",[6353,6355],{"title":94,"path":95,"stem":96,"description":6354,"icon":97,"children":-1},"Learn how to deploy your Nuxt application to any hosting provider.",{"title":104,"path":105,"stem":106,"description":6356,"icon":107,"children":-1},"Learn how to upgrade to the latest Nuxt version.",1742651354632]