@@ -7,13 +7,13 @@ import {
77} from '@testing-library/dom'
88import * as Svelte from 'svelte'
99
10- import { addCleanupTask , mount , validateOptions } from './core/index.js'
10+ import { addCleanupTask , mount , setup as coreSetup } from './core/index.js'
1111
1212/**
1313 * Customize how Svelte renders the component.
1414 *
15- * @template {import('./component- types.js').Component} C
16- * @typedef {import('./component-types.js').Props<C> | Partial<import('./component- types.js').MountOptions<C> > } SvelteComponentOptions
15+ * @template {import('./core/ types.js').Component} C
16+ * @typedef {import('./core/ types.js').ComponentOptions<C > } SvelteComponentOptions
1717 */
1818
1919/**
@@ -29,15 +29,15 @@ import { addCleanupTask, mount, validateOptions } from './core/index.js'
2929/**
3030 * The rendered component and bound testing functions.
3131 *
32- * @template {import('./component- types.js').Component} C
32+ * @template {import('./core/ types.js').Component} C
3333 * @template {import('@testing-library/dom').Queries } [Q=typeof import('@testing-library/dom').queries]
3434 *
3535 * @typedef {{
3636 * container: HTMLElement
3737 * baseElement: HTMLElement
38- * component: import('./component- types.js').Exports<C>
38+ * component: import('./core/ types.js').Exports<C>
3939 * debug: (el?: HTMLElement | DocumentFragment) => void
40- * rerender: (props: Partial<import('./component- types.js').Props<C>>) => Promise<void>
40+ * rerender: (props: Partial<import('./core/ types.js').Props<C>>) => Promise<void>
4141 * unmount: () => void
4242 * } & {
4343 * [P in keyof Q]: import('@testing -library/dom').BoundFunction<Q[P]>
@@ -47,35 +47,25 @@ import { addCleanupTask, mount, validateOptions } from './core/index.js'
4747/**
4848 * Render a component into the document.
4949 *
50- * @template {import('./component- types.js').Component} C
50+ * @template {import('./core/ types.js').Component} C
5151 * @template {import('@testing-library/dom').Queries } [Q=typeof import('@testing-library/dom').queries]
5252 *
53- * @param {import('./component- types.js').ComponentType<C> } Component - The component to render.
53+ * @param {import('./core/ types.js').ComponentType<C> } Component - The component to render.
5454 * @param {SvelteComponentOptions<C> } options - Customize how Svelte renders the component.
5555 * @param {RenderOptions<Q> } renderOptions - Customize how Testing Library sets up the document and binds queries.
5656 * @returns {RenderResult<C, Q> } The rendered component and bound testing functions.
5757 */
5858const render = ( Component , options = { } , renderOptions = { } ) => {
59- options = validateOptions ( options )
60-
61- const baseElement =
62- renderOptions . baseElement ?? options . target ?? document . body
59+ const { baseElement , target , mountOptions } = coreSetup (
60+ options ,
61+ renderOptions
62+ )
6363
6464 const queries = getQueriesForElement ( baseElement , renderOptions . queries )
6565
66- const target =
67- // eslint-disable-next-line unicorn/prefer-dom-node-append
68- options . target ?? baseElement . appendChild ( document . createElement ( 'div' ) )
69-
70- addCleanupTask ( ( ) => {
71- if ( target . parentNode === document . body ) {
72- target . remove ( )
73- }
74- } )
75-
7666 const { component, unmount, rerender } = mount (
7767 Component . default ?? Component ,
78- { ... options , target }
68+ mountOptions
7969 )
8070
8171 return {
@@ -160,5 +150,5 @@ for (const [key, baseEvent] of Object.entries(baseFireEvent)) {
160150 fireEvent [ key ] = async ( ...args ) => act ( ( ) => baseEvent ( ...args ) )
161151}
162152
163- export { cleanup } from './core/index.js'
153+ export { cleanup , UnknownSvelteOptionsError } from './core/index.js'
164154export { act , fireEvent , render , setup }
0 commit comments