Skip to content

Commit 7f10642

Browse files
authored
chore: improve hydration tests (#10887)
* use server-rendered HTML as hydration test starting point * update tests * remove _before.html files * remove _before_head.html files * override output with _expected.html * expected output for binding-input case * remove unused files * fix * changeset
1 parent fe7c45b commit 7f10642

File tree

84 files changed

+116
-197
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+116
-197
lines changed

.changeset/serious-gorillas-eat.md

Lines changed: 5 additions & 0 deletions

packages/svelte/src/internal/client/dom/blocks/each.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export function set_current_each_item(item) {
5050
* @param {number} flags
5151
* @param {null | ((item: V) => string)} get_key
5252
* @param {(anchor: null, item: V, index: import('#client').MaybeSource<number>) => void} render_fn
53-
* @param {null | ((anchor: Node) => void)} fallback_fn
53+
* @param {null | ((anchor: Node | null) => void)} fallback_fn
5454
* @param {typeof reconcile_indexed_array | reconcile_tracked_array} reconcile_fn
5555
* @returns {void}
5656
*/
@@ -158,7 +158,7 @@ function each(anchor, get_collection, flags, get_key, render_fn, fallback_fn, re
158158
resume_effect(fallback);
159159
} else {
160160
fallback = render_effect(() => {
161-
var dom = fallback_fn(anchor);
161+
var dom = fallback_fn(hydrating ? null : anchor);
162162

163163
return () => {
164164
if (dom !== undefined) {
@@ -199,7 +199,7 @@ function each(anchor, get_collection, flags, get_key, render_fn, fallback_fn, re
199199
* @param {number} flags
200200
* @param {null | ((item: V) => string)} get_key
201201
* @param {(anchor: null, item: V, index: import('#client').MaybeSource<number>) => void} render_fn
202-
* @param {null | ((anchor: Node) => void)} fallback_fn
202+
* @param {null | ((anchor: Node | null) => void)} fallback_fn
203203
* @returns {void}
204204
*/
205205
export function each_keyed(anchor, get_collection, flags, get_key, render_fn, fallback_fn) {
@@ -212,7 +212,7 @@ export function each_keyed(anchor, get_collection, flags, get_key, render_fn, fa
212212
* @param {() => V[]} get_collection
213213
* @param {number} flags
214214
* @param {(anchor: null, item: V, index: import('#client').MaybeSource<number>) => void} render_fn
215-
* @param {null | ((anchor: Node) => void)} fallback_fn
215+
* @param {null | ((anchor: Node | null) => void)} fallback_fn
216216
* @returns {void}
217217
*/
218218
export function each_indexed(anchor, get_collection, flags, render_fn, fallback_fn) {

packages/svelte/tests/hydration/samples/basic/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/binding-input/_before.html

Lines changed: 0 additions & 2 deletions
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<!--ssr:0--><input> <p>Hello world!</p><!--ssr:0-->

packages/svelte/tests/hydration/samples/claim-comment/_before.html

Lines changed: 0 additions & 3 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/claim-static/_before.html

Lines changed: 0 additions & 8 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/claim-text/_before.html

Lines changed: 0 additions & 5 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/component-in-element/_before.html

Lines changed: 0 additions & 3 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/component/_before.html

Lines changed: 0 additions & 3 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/dynamic-text-changed/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/dynamic-text-changed/_config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { test } from '../../test';
22

33
export default test({
4+
server_props: {
5+
name: 'world'
6+
},
7+
48
props: {
59
name: 'everybody'
610
},

packages/svelte/tests/hydration/samples/dynamic-text-nil/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/dynamic-text/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/each-block-arg-clash/_before.html

Lines changed: 0 additions & 5 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_before.html

Lines changed: 0 additions & 2 deletions
This file was deleted.
Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
11
import { test } from '../../test';
22

3-
export default test({});
3+
export default test({
4+
server_props: {
5+
items1: [],
6+
items2: [{ name: 'a' }]
7+
},
8+
9+
props: {
10+
items1: [{ name: 'a' }],
11+
items2: []
12+
}
13+
});

packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/main.svelte

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<script>
2-
let items1 = $state(typeof window !== 'undefined' ? [{name: 'a'}]: []);
3-
let items2 = $state(typeof window === 'undefined' ? [{name: 'a'}]: []);
2+
let { items1, items2 } = $props();
43
</script>
54

65
{#each items1 as item}

packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_before.html

Lines changed: 0 additions & 12 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_config.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
import { assert_ok, test } from '../../test';
22

33
export default test({
4+
server_props: {
5+
items: [{ name: 'a' }, { name: 'b' }]
6+
},
7+
8+
props: {
9+
items: [{ name: 'a' }]
10+
},
11+
412
snapshot(target) {
513
const ul = target.querySelector('ul');
614
assert_ok(ul);

packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/main.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script>
2-
let items = $state(typeof window !== 'undefined' ? [{name: 'a'}]: [{name: 'a'}, {name: 'b'}]);
2+
let { items } = $props();
33
</script>
44

55
<ul>

packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_before.html

Lines changed: 0 additions & 9 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_config.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
import { assert_ok, test } from '../../test';
22

33
export default test({
4+
server_props: {
5+
items: [{ name: 'x' }]
6+
},
7+
8+
props: {
9+
items: [{ name: 'a' }, { name: 'b' }]
10+
},
11+
412
snapshot(target) {
513
const ul = target.querySelector('ul');
614
assert_ok(ul);

packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/main.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script>
2-
let items = $state(typeof window === 'undefined' ? [{name: 'x'}]: [{name: 'a'}, {name: 'b'}]);
2+
let { items } = $props();
33
</script>
44

55
<ul>

packages/svelte/tests/hydration/samples/each-block/_before.html

Lines changed: 0 additions & 5 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/each-else/_before.html

Lines changed: 0 additions & 3 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/element-attribute-added/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/element-attribute-added/_config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { test } from '../../test';
22

33
export default test({
4+
server_props: {},
5+
46
props: {
57
className: 'bar'
68
},

packages/svelte/tests/hydration/samples/element-attribute-changed/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/element-attribute-changed/_config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { test } from '../../test';
22

33
export default test({
4+
server_props: {
5+
className: 'foo'
6+
},
7+
48
props: {
59
className: 'bar'
610
},

packages/svelte/tests/hydration/samples/element-attribute-removed/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/element-attribute-removed/_config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { test } from '../../test';
22

33
export default test({
4+
server_props: {
5+
id: 'foo'
6+
},
7+
48
snapshot(target) {
59
const div = target.querySelector('div');
610

packages/svelte/tests/hydration/samples/element-attribute-unchanged-2/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/element-attribute-unchanged/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/element-nested-sibling/_before.html

Lines changed: 0 additions & 3 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/element-nested/_before.html

Lines changed: 0 additions & 3 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/element-ref/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/event-handler/_before.html

Lines changed: 0 additions & 5 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/expression-sibling/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/head-html-and-component/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/head-html-and-component/_before_head.html

Lines changed: 0 additions & 6 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/head-meta-hydrate-duplicate/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/head-meta-hydrate-duplicate/_before_head.html

Lines changed: 0 additions & 4 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/html-tag-hydration/_after.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/html-tag-hydration/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/if-block-anchor/_before.html

Lines changed: 0 additions & 2 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/if-block-empty/_after.html

Lines changed: 0 additions & 4 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/if-block-empty/_before.html

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
11
import { test } from '../../test';
22

3-
export default test({});
3+
export default test({
4+
server_props: {
5+
foo: ''
6+
},
7+
8+
props: {
9+
foo: 'x'
10+
}
11+
});

packages/svelte/tests/hydration/samples/if-block-false/_before.html

Lines changed: 0 additions & 5 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/if-block-mismatch/_after.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/if-block-mismatch/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/if-block-mismatch/_config.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,13 @@ import { test } from '../../test';
33
// even {#if true} or {#if false} should be kept as an if block, because it could be {#if browser} originally,
44
// which is then different between client and server.
55
export default test({
6+
server_props: {
7+
condition: false
8+
},
9+
10+
props: {
11+
condition: true
12+
},
13+
614
trim_whitespace: false
715
});

packages/svelte/tests/hydration/samples/if-block-mismatch/main.svelte

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
<script>
2+
let { condition } = $props();
3+
</script>
4+
15
{#if true}
26
<p>foo</p>
37
{:else}

packages/svelte/tests/hydration/samples/if-block-update/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/if-block/_before.html

Lines changed: 0 additions & 4 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/ignore-mismatched-href/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/ignore-mismatched-href/_config.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
import { test } from '../../test';
22

33
export default test({
4+
server_props: {
5+
browser: false
6+
},
7+
8+
props: {
9+
browser: true
10+
},
11+
412
test(assert, target) {
513
assert.equal(target.querySelector('a')?.getAttribute('href'), '/bar');
614
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script>
2-
let browser = typeof window !== 'undefined';
2+
let { browser } = $props();
33
</script>
44

55
<a href={browser ? '/foo': '/bar'}>foo</a>

packages/svelte/tests/hydration/samples/noscript/_before.html

Lines changed: 0 additions & 2 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/raw-mismatch/_after.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/raw-mismatch/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/hydration/samples/raw-repair/_after.html

Lines changed: 0 additions & 2 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/raw-repair/_before.html

Lines changed: 0 additions & 6 deletions
This file was deleted.

packages/svelte/tests/hydration/samples/raw-svg/_before.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)