UNPKG

@nuxt/test-utils

Version:

Test utilities for Nuxt

44 lines (43 loc) 1.36 kB
//#region src/runtime/shared/vue-wrapper-plugin.ts const PLUGIN_NAME = "nuxt-test-utils"; const config = await import("@vue/test-utils").then((r) => r.config).catch(() => void 0); function getVueWrapperPlugin() { if (!config) return { hasNuxtPage: () => false }; const installed = config.plugins.VueWrapper.installedPlugins.find(({ options }) => options?._name === PLUGIN_NAME); if (installed) return installed.options; const options = createPluginOptions(); config.plugins.VueWrapper.install((instance, options) => { options.addInstance(instance); return {}; }, options); return options; } function createPluginOptions() { const options = { _name: PLUGIN_NAME, _instances: [], get instances() { const instances = []; options._instances = options._instances.filter((ref) => { const instance = ref.deref(); if (!instance) return false; instances.push(instance); return true; }); return instances; }, addInstance(instance) { if (options.instances.includes(instance)) return; options._instances.push(new WeakRef(instance)); }, hasNuxtPage() { return options._hasComponent("NuxtPage"); }, _hasComponent(componentName) { return options.instances.some((v) => v.exists() && v.findComponent({ name: componentName }).exists()); } }; return options; } //#endregion export { getVueWrapperPlugin };