diff --git a/packages/svelte/tests/runtime-legacy/shared.ts b/packages/svelte/tests/runtime-legacy/shared.ts index 2c6a554727..17069a94ba 100644 --- a/packages/svelte/tests/runtime-legacy/shared.ts +++ b/packages/svelte/tests/runtime-legacy/shared.ts @@ -26,6 +26,20 @@ type Assert = typeof import('vitest').assert & { ): void; }; +// TODO remove this shim when we can +// @ts-expect-error +Promise.withResolvers = () => { + let resolve; + let reject; + + const promise = new Promise((f, r) => { + resolve = f; + reject = r; + }); + + return { promise, resolve, reject }; +}; + export interface RuntimeTest = Record> extends BaseTest { /** Use e.g. `mode: ['client']` to indicate that this test should never run in server/hydrate modes */ diff --git a/packages/svelte/tests/runtime-runes/samples/async-if/_config.js b/packages/svelte/tests/runtime-runes/samples/async-if/_config.js index 991cebad3e..0bf9152dca 100644 --- a/packages/svelte/tests/runtime-runes/samples/async-if/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/async-if/_config.js @@ -6,7 +6,7 @@ import { test } from '../../test'; let d; export default test({ - html: `

pending

`, + html: `

pending

`, get props() { d = deferred(); @@ -16,21 +16,31 @@ export default test({ }; }, - async test({ assert, target, component }) { - d.resolve(true); + async test({ assert, target }) { + const [reset, t, f] = target.querySelectorAll('button'); + + flushSync(() => t.click()); await Promise.resolve(); await Promise.resolve(); await tick(); flushSync(); - assert.htmlEqual(target.innerHTML, '

yes

'); + assert.htmlEqual( + target.innerHTML, + '

yes

' + ); - d = deferred(); - component.promise = d.promise; + flushSync(() => reset.click()); await tick(); - assert.htmlEqual(target.innerHTML, '

yes

'); + assert.htmlEqual( + target.innerHTML, + '

yes

' + ); - d.resolve(false); + flushSync(() => f.click()); await tick(); - assert.htmlEqual(target.innerHTML, '

no

'); + assert.htmlEqual( + target.innerHTML, + '

no

' + ); } }); diff --git a/packages/svelte/tests/runtime-runes/samples/async-if/main.svelte b/packages/svelte/tests/runtime-runes/samples/async-if/main.svelte index baed33a76e..21a4cbef97 100644 --- a/packages/svelte/tests/runtime-runes/samples/async-if/main.svelte +++ b/packages/svelte/tests/runtime-runes/samples/async-if/main.svelte @@ -1,9 +1,13 @@ + + + + - {#if await promise} + {#if await deferred.promise}

yes

{:else}

no