From 186a62b47d02f988f4b781005e96a18ceff89773 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 10 Jul 2025 09:04:14 -0400 Subject: [PATCH 1/5] unskip failing test --- .../tests/runtime-runes/samples/effect-order-7/_config.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js b/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js index 29c33c7b1886..8f9077e9544b 100644 --- a/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js @@ -2,8 +2,6 @@ import { flushSync } from 'svelte'; import { test } from '../../test'; export default test({ - skip: true, - async test({ assert, target, logs }) { const [open, close] = target.querySelectorAll('button'); From 37f5cb7e6b10bac05e6d247d65a96abd3479f7ab Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 22 Jul 2025 12:37:53 -0400 Subject: [PATCH 2/5] fix --- .../tests/runtime-runes/samples/effect-order-7/_config.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js b/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js index 8f9077e9544b..b57bd3973d82 100644 --- a/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js @@ -7,7 +7,5 @@ export default test({ flushSync(() => open.click()); flushSync(() => close.click()); - - assert.deepEqual(logs, [true]); } }); From eea22a90c9642a8933bf0fa2abe5c71c21979412 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 22 Jul 2025 12:39:15 -0400 Subject: [PATCH 3/5] tidy up --- .../tests/runtime-runes/samples/effect-order-7/_config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js b/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js index b57bd3973d82..3eff39d7ae5d 100644 --- a/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js @@ -2,7 +2,7 @@ import { flushSync } from 'svelte'; import { test } from '../../test'; export default test({ - async test({ assert, target, logs }) { + async test({ target }) { const [open, close] = target.querySelectorAll('button'); flushSync(() => open.click()); From 02876d3e3353cbd8869bc3aadefcb26018241eb9 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 22 Jul 2025 12:45:58 -0400 Subject: [PATCH 4/5] skip_no_async --- .../tests/runtime-runes/samples/effect-order-7/_config.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js b/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js index 3eff39d7ae5d..7d7519d11328 100644 --- a/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js @@ -2,6 +2,12 @@ import { flushSync } from 'svelte'; import { test } from '../../test'; export default test({ + // For this to work in non-async mode, we would need to abort + // inside `#traverse_effect_tree`, which would be very + // complicated and annoying. Since this hasn't been + // a real issue (AFAICT), we ignore it + skip_no_async: true, + async test({ target }) { const [open, close] = target.querySelectorAll('button'); From b4c6a9e8e5c137c12dfcfcd6cbc142bf8903f23d Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 22 Jul 2025 12:50:33 -0400 Subject: [PATCH 5/5] add comment --- .../tests/runtime-runes/samples/effect-order-7/_config.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js b/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js index 7d7519d11328..f0a9c2e867bd 100644 --- a/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/effect-order-7/_config.js @@ -12,6 +12,8 @@ export default test({ const [open, close] = target.querySelectorAll('button'); flushSync(() => open.click()); + + // if the effect queue isn't aborted after the state change, this will throw flushSync(() => close.click()); } });