diff --git a/packages/svelte/tests/runtime-runes/samples/state-link-class/_config.js b/packages/svelte/tests/runtime-runes/samples/state-link-class/_config.js
new file mode 100644
index 0000000000..4d81e96afb
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/state-link-class/_config.js
@@ -0,0 +1,38 @@
+import { flushSync } from 'svelte';
+import { test, ok } from '../../test';
+
+export default test({
+ html: `
0
0
`,
+ ssrHtml: `0
0
`,
+
+ test({ assert, target }) {
+ const [input1, input2] = target.querySelectorAll('input');
+ ok(input1);
+ ok(input2);
+ assert.equal(input1.value, '0');
+ assert.equal(input2.value, '0');
+
+ const btn = target.querySelector('button');
+
+ btn?.click();
+ flushSync();
+ assert.htmlEqual(
+ target.innerHTML,
+ `0
1
`
+ );
+
+ assert.equal(input1.value, '0');
+ assert.equal(input2.value, '1');
+
+ const event = new window.Event('input');
+
+ input1.value = '2';
+ input1.dispatchEvent(event);
+ flushSync();
+
+ assert.htmlEqual(
+ target.innerHTML,
+ `2
2
`
+ );
+ }
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/state-link-class/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-link-class/main.svelte
new file mode 100644
index 0000000000..e928e37fa0
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/state-link-class/main.svelte
@@ -0,0 +1,14 @@
+
+
+
+
+
+{a}
+{b}
+
+
diff --git a/packages/svelte/tests/runtime-runes/samples/state-link/_config.js b/packages/svelte/tests/runtime-runes/samples/state-link/_config.js
new file mode 100644
index 0000000000..4d81e96afb
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/state-link/_config.js
@@ -0,0 +1,38 @@
+import { flushSync } from 'svelte';
+import { test, ok } from '../../test';
+
+export default test({
+ html: `0
0
`,
+ ssrHtml: `0
0
`,
+
+ test({ assert, target }) {
+ const [input1, input2] = target.querySelectorAll('input');
+ ok(input1);
+ ok(input2);
+ assert.equal(input1.value, '0');
+ assert.equal(input2.value, '0');
+
+ const btn = target.querySelector('button');
+
+ btn?.click();
+ flushSync();
+ assert.htmlEqual(
+ target.innerHTML,
+ `0
1
`
+ );
+
+ assert.equal(input1.value, '0');
+ assert.equal(input2.value, '1');
+
+ const event = new window.Event('input');
+
+ input1.value = '2';
+ input1.dispatchEvent(event);
+ flushSync();
+
+ assert.htmlEqual(
+ target.innerHTML,
+ `2
2
`
+ );
+ }
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/state-link/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-link/main.svelte
new file mode 100644
index 0000000000..1f6648f479
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/state-link/main.svelte
@@ -0,0 +1,18 @@
+
+
+
+
+
+{instance.a}
+{instance.b}
+
+