diff --git a/packages/svelte/tests/custom-renderers/samples/boundary-pending/Inner.svelte b/packages/svelte/tests/custom-renderers/samples/boundary-pending/Inner.svelte new file mode 100644 index 0000000000..a05bc7dd5a --- /dev/null +++ b/packages/svelte/tests/custom-renderers/samples/boundary-pending/Inner.svelte @@ -0,0 +1,6 @@ + + +
{value}
diff --git a/packages/svelte/tests/custom-renderers/samples/boundary-pending/_config.js b/packages/svelte/tests/custom-renderers/samples/boundary-pending/_config.js new file mode 100644 index 0000000000..cd30fba5f2 --- /dev/null +++ b/packages/svelte/tests/custom-renderers/samples/boundary-pending/_config.js @@ -0,0 +1,33 @@ +import { flushSync } from 'svelte'; +import { test } from '../../test'; + +/** @type {(value: string) => void} */ +let resolve; + +const promise = new Promise((r) => { + resolve = r; +}); + +export default test({ + props: { promise }, + compileOptions: { + experimental: { + async: true + } + }, + html: 'loading...
Something outside
', + async test({ assert, target, serialize }) { + resolve('hello'); + + // wait enough microtasks for the async chain to fully resolve: + // promise.then(() => Promise.resolve()).finally(() => decrement_pending()) + await new Promise((r) => setTimeout(r, 0)); + flushSync(); + + const html = serialize(target); + assert.equal( + html, + 'hello
Something inside
Something outside
Something inside
+ + {#snippet pending()} +loading...
+ {/snippet} +Something outside