diff --git a/packages/svelte/tests/runtime-runes/samples/async-each-controlled-empty-pending/_config.js b/packages/svelte/tests/runtime-runes/samples/async-each-controlled-empty-pending/_config.js index 29d374deec..51b37781d7 100644 --- a/packages/svelte/tests/runtime-runes/samples/async-each-controlled-empty-pending/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/async-each-controlled-empty-pending/_config.js @@ -6,24 +6,12 @@ import { test } from '../../test'; // before destroy_effects walks pending keys. export default test({ mode: ['client'], - async test({ assert, target }) { await tick(); - assert.htmlEqual( - target.innerHTML, - ` - - - -
A0/B0
-A0/B0
+A0/B1
+ +A1/B1
` ); diff --git a/packages/svelte/tests/runtime-runes/samples/async-each-controlled-empty-pending/main.svelte b/packages/svelte/tests/runtime-runes/samples/async-each-controlled-empty-pending/main.svelte index 68c3937c25..84786d1dff 100644 --- a/packages/svelte/tests/runtime-runes/samples/async-each-controlled-empty-pending/main.svelte +++ b/packages/svelte/tests/runtime-runes/samples/async-each-controlled-empty-pending/main.svelte @@ -4,12 +4,13 @@ let tickA = $state(0); let tickB = $state(0); - // Two independent sources so the batches touch disjoint source sets - // and are not merged. - const items = $derived(extraKey === null ? base : [...base, extraKey]); + // Two independent sources so the batches touch disjoint source sets and are not merged. + const items = $derived(base.length ? extraKey === null ? base : [...base, extraKey] : []); /** @type {((value: string) => void) | undefined} */ let resolveB; + /** @type {((value: string) => void) | undefined} */ + let resolveA; /** * @param {string} name @@ -20,6 +21,7 @@ ? Promise.resolve(`${name}0`) : new Promise((r) => { if (name === 'B') resolveB = r; + else resolveA = r; }); const a = $derived(await gate('A', tickA)); @@ -38,11 +40,15 @@ function settleB() { resolveB?.('B1'); } + function settleA() { + resolveA?.('A1'); + } +{a}/{b}