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