Skip to content
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { tick } from 'svelte';
import { test } from '../../test';

export default test({
async test({ assert, target }) {
await tick();

assert.htmlEqual(
target.innerHTML,
`
<p>hello from server</p>
<p>hello from server</p>
<p>hello from server</p>
<p>hello from server</p>
`
);

const [button1, button2] = target.querySelectorAll('button');

button1.click();
await tick();

assert.htmlEqual(
target.innerHTML,
`
<p>hello from browser</p>
<p>hello from browser</p>
<p>hello from server</p>
<p>hello from server</p>
`
);

button2.click();
await tick();

assert.htmlEqual(
target.innerHTML,
`
<p>hello from browser</p>
<p>hello from browser</p>
<p>hello from browser</p>
<p>hello from browser</p>
`
);
}
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<script>
let browser = typeof window !== 'undefined';

let a = Promise.withResolvers();
let b = Promise.withResolvers();

if (!browser) {
a.resolve(true);
b.resolve(true);
}
</script>

<button onclick={() => a.resolve(true)}>
resolve a
</button>

<button onclick={() => b.resolve(true)}>
resolve b
</button>

<svelte:boundary>
{#if await a.promise}
<p>hello from {browser ? 'browser' : 'server'}</p>
{/if}

<p>hello from {browser ? 'browser' : 'server'}</p>
</svelte:boundary>

<svelte:boundary>
{#if await b.promise}
<p>hello from {browser ? 'browser' : 'server'}</p>
{/if}

<p>hello from {browser ? 'browser' : 'server'}</p>
</svelte:boundary>
Loading