UNPKG

vitest-browser-vue

Version:
51 lines (49 loc) 1.5 kB
// src/pure.ts import { mount } from "@vue/test-utils"; import { debug, getElementLocatorSelectors } from "@vitest/browser/utils"; import { config } from "@vue/test-utils"; var mountedWrappers = /* @__PURE__ */ new Set(); function render(Component, { container: customContainer, baseElement: customBaseElement, ...mountOptions } = {}) { const div = document.createElement("div"); const baseElement = customBaseElement || customContainer || document.body; const container = customContainer || baseElement.appendChild(div); if (mountOptions.attachTo) { throw new Error("`attachTo` is not supported, use `container` instead"); } const wrapper = mount(Component, { ...mountOptions, attachTo: container }); unwrapNode(wrapper.parentElement); mountedWrappers.add(wrapper); return { container, baseElement, debug: (el = baseElement, maxLength, options) => debug(el, maxLength, options), unmount: () => wrapper.unmount(), emitted: (name) => wrapper.emitted(name), rerender: (props) => wrapper.setProps(props), ...getElementLocatorSelectors(baseElement) }; } function cleanup() { mountedWrappers.forEach((wrapper) => { if (wrapper.element?.parentNode?.parentNode === document.body) { document.body.removeChild(wrapper.element.parentNode); } wrapper.unmount(); mountedWrappers.delete(wrapper); }); } function unwrapNode(node) { node.replaceWith(...node.childNodes); } export { render, cleanup, config };