Skip to content

Commit 6eac199

Browse files
committed
failing test
1 parent f30fd26 commit 6eac199

File tree

2 files changed

+100
-0
lines changed

2 files changed

+100
-0
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import { flushSync, tick } from 'svelte';
2+
import { ok, test } from '../../test';
3+
4+
export default test({
5+
html: `
6+
<button>shift</button>
7+
<p>loading</p>
8+
`,
9+
10+
async test({ assert, target, variant }) {
11+
if (variant === 'hydrate') {
12+
await Promise.resolve();
13+
}
14+
15+
flushSync(() => {
16+
target.querySelector('button')?.click();
17+
});
18+
19+
await Promise.resolve();
20+
await Promise.resolve();
21+
await Promise.resolve();
22+
await tick();
23+
flushSync();
24+
25+
const [button1, button2] = target.querySelectorAll('button');
26+
27+
assert.htmlEqual(
28+
target.innerHTML,
29+
`
30+
<button>shift</button>
31+
<button>+</button>
32+
<p>A</p>
33+
<p>a</p>
34+
`
35+
);
36+
37+
flushSync(() => button2.click());
38+
flushSync(() => button2.click());
39+
40+
flushSync(() => button1.click());
41+
await Promise.resolve();
42+
await Promise.resolve();
43+
await Promise.resolve();
44+
await tick();
45+
flushSync();
46+
47+
assert.htmlEqual(
48+
target.innerHTML,
49+
`
50+
<button>shift</button>
51+
<button>+</button>
52+
<p>AA</p>
53+
<p>aa</p>
54+
`
55+
);
56+
57+
flushSync(() => button1.click());
58+
await Promise.resolve();
59+
await Promise.resolve();
60+
await Promise.resolve();
61+
await tick();
62+
flushSync();
63+
64+
assert.htmlEqual(
65+
target.innerHTML,
66+
`
67+
<button>shift</button>
68+
<button>+</button>
69+
<p>AAA</p>
70+
<p>aaa</p>
71+
`
72+
);
73+
}
74+
});
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<script>
2+
let input = $state('a');
3+
4+
let queue = [];
5+
6+
function push(value) {
7+
const deferred = Promise.withResolvers();
8+
queue.push(() => deferred.resolve(value));
9+
return deferred.promise;
10+
}
11+
</script>
12+
13+
<button onclick={() => queue.shift()()}>shift</button>
14+
15+
<svelte:boundary>
16+
<button onclick={() => input += 'a'}>+</button>
17+
<p>{await push(input.toUpperCase())}</p>
18+
19+
{#if true}
20+
<p>{input}</p>
21+
{/if}
22+
23+
{#snippet pending()}
24+
<p>loading</p>
25+
{/snippet}
26+
</svelte:boundary>

0 commit comments

Comments
 (0)