Skip to content

Commit b608ee2

Browse files
committed
add failing test
1 parent 302dff2 commit b608ee2

File tree

3 files changed

+81
-0
lines changed

3 files changed

+81
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<script lang="ts">
2+
let queue: Array<{ deferred: PromiseWithResolvers<number>; value: number }> = [];
3+
let inited = false;
4+
5+
function push(value: number) {
6+
const deferred = Promise.withResolvers<number>();
7+
queue.push({ deferred, value });
8+
9+
if (!inited) {
10+
inited = true;
11+
shift();
12+
}
13+
14+
return deferred.promise;
15+
}
16+
17+
function shift() {
18+
const next = queue.shift();
19+
next?.deferred.resolve(next.value);
20+
}
21+
22+
let n = $state(0);
23+
let current = $derived(await push(n));
24+
</script>
25+
26+
<button onclick={shift}>shift</button>
27+
<button onclick={() => n += 1}>increment</button>
28+
29+
<p>{n}: {Math.min(current, 3)}</p>
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { flushSync } from 'svelte';
2+
import { test } from '../../test';
3+
4+
export default test({
5+
html: `<p>pending...</p>`,
6+
7+
async test({ assert, target }) {
8+
await Promise.resolve();
9+
await Promise.resolve();
10+
await Promise.resolve();
11+
await Promise.resolve();
12+
await Promise.resolve();
13+
await Promise.resolve();
14+
15+
assert.htmlEqual(
16+
target.innerHTML,
17+
`
18+
<button>shift</button>
19+
<button>increment</button>
20+
<p>0: 0</p>
21+
`
22+
);
23+
24+
const [shift, increment] = target.querySelectorAll('button');
25+
const [p] = target.querySelectorAll('p');
26+
27+
for (let i = 1; i < 5; i += 1) {
28+
flushSync(() => increment.click());
29+
}
30+
31+
for (let i = 1; i < 5; i += 1) {
32+
shift.click();
33+
await Promise.resolve();
34+
await Promise.resolve();
35+
await Promise.resolve();
36+
await Promise.resolve();
37+
38+
assert.equal(p.innerHTML, `${i}: ${i}`);
39+
}
40+
}
41+
});
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<script>
2+
import Component from './Component.svelte';
3+
</script>
4+
5+
<svelte:boundary>
6+
<Component />
7+
8+
{#snippet pending()}
9+
<p>pending...</p>
10+
{/snippet}
11+
</svelte:boundary>

0 commit comments

Comments
 (0)