diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/_config.js b/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/_config.js
new file mode 100644
index 0000000000..7b89518f75
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/_config.js
@@ -0,0 +1,23 @@
+import { flushSync } from 'svelte';
+import { test } from '../../test';
+
+export default test({
+ async test({ assert, target, logs }) {
+ const [btn, btn2, btn3] = target.querySelectorAll('button');
+
+ flushSync(() => {
+ btn.click();
+ });
+ assert.deepEqual(logs, ['arr']);
+
+ flushSync(() => {
+ btn2.click();
+ });
+ assert.deepEqual(logs, ['arr', 'arr']);
+
+ flushSync(() => {
+ btn3.click();
+ });
+ assert.deepEqual(logs, ['arr', 'arr', 'arr']);
+ }
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/main.svelte
new file mode 100644
index 0000000000..41f8c7a948
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/main.svelte
@@ -0,0 +1,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange-classes/_config.js b/packages/svelte/tests/runtime-runes/samples/state-onchange-classes/_config.js
new file mode 100644
index 0000000000..acb7054cc4
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/state-onchange-classes/_config.js
@@ -0,0 +1,27 @@
+import { flushSync } from 'svelte';
+import { test } from '../../test';
+
+export default test({
+ async test({ assert, target, logs }) {
+ const [btn, btn2, btn3] = target.querySelectorAll('button');
+
+ assert.deepEqual(logs, ['constructor count', 'constructor proxy']);
+
+ logs.length = 0;
+
+ flushSync(() => {
+ btn.click();
+ });
+ assert.deepEqual(logs, ['class count']);
+
+ flushSync(() => {
+ btn2.click();
+ });
+ assert.deepEqual(logs, ['class count', 'class proxy']);
+
+ flushSync(() => {
+ btn3.click();
+ });
+ assert.deepEqual(logs, ['class count', 'class proxy', 'class proxy']);
+ }
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange-classes/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-onchange-classes/main.svelte
new file mode 100644
index 0000000000..a42c1c1245
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/state-onchange-classes/main.svelte
@@ -0,0 +1,37 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange-proxies/_config.js b/packages/svelte/tests/runtime-runes/samples/state-onchange-proxies/_config.js
new file mode 100644
index 0000000000..17d5205d17
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/state-onchange-proxies/_config.js
@@ -0,0 +1,18 @@
+import { flushSync } from 'svelte';
+import { test } from '../../test';
+
+export default test({
+ async test({ assert, target, logs }) {
+ const [btn, btn2] = target.querySelectorAll('button');
+
+ flushSync(() => {
+ btn.click();
+ });
+ assert.deepEqual(logs, ['proxy']);
+
+ flushSync(() => {
+ btn2.click();
+ });
+ assert.deepEqual(logs, ['proxy', 'proxy']);
+ }
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange-proxies/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-onchange-proxies/main.svelte
new file mode 100644
index 0000000000..5340b23159
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/state-onchange-proxies/main.svelte
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange/_config.js b/packages/svelte/tests/runtime-runes/samples/state-onchange/_config.js
index 82625ded0a..91d469a1e9 100644
--- a/packages/svelte/tests/runtime-runes/samples/state-onchange/_config.js
+++ b/packages/svelte/tests/runtime-runes/samples/state-onchange/_config.js
@@ -3,89 +3,11 @@ import { test } from '../../test';
export default test({
async test({ assert, target, logs }) {
- const [btn, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9] = target.querySelectorAll('button');
-
- assert.deepEqual(logs, ['constructor count', 'constructor proxy']);
-
- logs.length = 0;
+ const btn = target.querySelector('button');
flushSync(() => {
- btn.click();
+ btn?.click();
});
assert.deepEqual(logs, ['count']);
-
- flushSync(() => {
- btn2.click();
- });
- assert.deepEqual(logs, ['count', 'proxy']);
-
- flushSync(() => {
- btn3.click();
- });
- assert.deepEqual(logs, ['count', 'proxy', 'proxy']);
-
- flushSync(() => {
- btn4.click();
- });
- assert.deepEqual(logs, ['count', 'proxy', 'proxy', 'class count']);
-
- flushSync(() => {
- btn5.click();
- });
- assert.deepEqual(logs, ['count', 'proxy', 'proxy', 'class count', 'class proxy']);
-
- flushSync(() => {
- btn6.click();
- });
- assert.deepEqual(logs, [
- 'count',
- 'proxy',
- 'proxy',
- 'class count',
- 'class proxy',
- 'class proxy'
- ]);
-
- flushSync(() => {
- btn7.click();
- });
- assert.deepEqual(logs, [
- 'count',
- 'proxy',
- 'proxy',
- 'class count',
- 'class proxy',
- 'class proxy',
- 'arr'
- ]);
-
- flushSync(() => {
- btn8.click();
- });
- assert.deepEqual(logs, [
- 'count',
- 'proxy',
- 'proxy',
- 'class count',
- 'class proxy',
- 'class proxy',
- 'arr',
- 'arr'
- ]);
-
- flushSync(() => {
- btn9.click();
- });
- assert.deepEqual(logs, [
- 'count',
- 'proxy',
- 'proxy',
- 'class count',
- 'class proxy',
- 'class proxy',
- 'arr',
- 'arr',
- 'arr'
- ]);
}
});
diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-onchange/main.svelte
index 565e8477dc..8dc265b1df 100644
--- a/packages/svelte/tests/runtime-runes/samples/state-onchange/main.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/state-onchange/main.svelte
@@ -4,61 +4,6 @@
console.log("count");
}
})
-
- let proxy = $state({count: 0}, {
- onchange(){
- console.log("proxy");
- }
- })
-
- class Test{
- count = $state(0, {
- onchange(){
- console.log("class count");
- }
- })
- proxy = $state({count: 0}, {
- onchange(){
- console.log("class proxy");
- }
- })
-
- #in_constructor = $state(0, {
- onchange(){
- console.log("constructor count");
- }
- });
-
- #in_constructor_proxy = $state({ count: 0 }, {
- onchange(){
- console.log("constructor proxy");
- }
- });
-
-
- constructor(){
- this.#in_constructor = 42;
- this.#in_constructor_proxy.count++;
- }
- }
-
- const class_test = new Test();
-
- let arr = $state([0,1,2], {
- onchange(){
- console.log("arr");
- }
- })
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file