From 7f10642add4612563c5283384004c8baa5824161 Mon Sep 17 00:00:00 2001
From: Rich Harris
Date: Sat, 23 Mar 2024 12:10:12 -0400
Subject: [PATCH] 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
---
.changeset/serious-gorillas-eat.md | 5 ++
.../src/internal/client/dom/blocks/each.js | 8 +--
.../hydration/samples/basic/_before.html | 1 -
.../samples/binding-input/_before.html | 2 -
.../samples/binding-input/_expected.html | 1 +
.../samples/claim-comment/_before.html | 3 -
.../samples/claim-static/_before.html | 8 ---
.../hydration/samples/claim-text/_before.html | 5 --
.../samples/component-in-element/_before.html | 3 -
.../hydration/samples/component/_before.html | 3 -
.../samples/dynamic-text-changed/_before.html | 1 -
.../samples/dynamic-text-changed/_config.js | 4 ++
.../{_after.html => _expected.html} | 0
.../samples/dynamic-text-nil/_before.html | 1 -
.../samples/dynamic-text/_before.html | 1 -
.../samples/each-block-arg-clash/_before.html | 5 --
.../each-block-fallback-mismatch/_before.html | 2 -
.../each-block-fallback-mismatch/_config.js | 12 +++-
.../{_after.html => _expected.html} | 0
.../each-block-fallback-mismatch/main.svelte | 3 +-
.../_before.html | 12 ----
.../_config.js | 8 +++
.../{_after.html => _expected.html} | 0
.../main.svelte | 2 +-
.../_before.html | 9 ---
.../_config.js | 8 +++
.../{_after.html => _expected.html} | 0
.../main.svelte | 2 +-
.../hydration/samples/each-block/_before.html | 5 --
.../hydration/samples/each-else/_before.html | 3 -
.../element-attribute-added/_before.html | 1 -
.../element-attribute-added/_config.js | 2 +
.../{_after.html => _expected.html} | 0
.../element-attribute-changed/_before.html | 1 -
.../element-attribute-changed/_config.js | 4 ++
.../{_after.html => _expected.html} | 0
.../element-attribute-removed/_before.html | 1 -
.../element-attribute-removed/_config.js | 4 ++
.../{_after.html => _expected.html} | 0
.../_before.html | 1 -
.../element-attribute-unchanged/_before.html | 1 -
.../element-nested-sibling/_before.html | 3 -
.../samples/element-nested/_before.html | 3 -
.../samples/element-ref/_before.html | 1 -
.../samples/event-handler/_before.html | 5 --
.../samples/expression-sibling/_before.html | 1 -
.../head-html-and-component/_before.html | 1 -
.../head-html-and-component/_before_head.html | 6 --
.../head-meta-hydrate-duplicate/_before.html | 1 -
.../_before_head.html | 4 --
.../samples/html-tag-hydration/_after.html | 1 -
.../samples/html-tag-hydration/_before.html | 1 -
.../samples/if-block-anchor/_before.html | 2 -
.../samples/if-block-empty/_after.html | 4 --
.../samples/if-block-empty/_before.html | 4 --
.../samples/if-block-empty/_config.js | 10 +++-
.../samples/if-block-false/_before.html | 5 --
.../samples/if-block-mismatch/_after.html | 1 -
.../samples/if-block-mismatch/_before.html | 1 -
.../samples/if-block-mismatch/_config.js | 8 +++
.../samples/if-block-mismatch/main.svelte | 4 ++
.../samples/if-block-update/_before.html | 1 -
.../hydration/samples/if-block/_before.html | 4 --
.../ignore-mismatched-href/_before.html | 1 -
.../samples/ignore-mismatched-href/_config.js | 8 +++
.../ignore-mismatched-href/main.svelte | 2 +-
.../hydration/samples/noscript/_before.html | 2 -
.../noscript/{_after.html => _expected.html} | 0
.../samples/raw-mismatch/_after.html | 1 -
.../samples/raw-mismatch/_before.html | 1 -
.../hydration/samples/raw-repair/_after.html | 2 -
.../hydration/samples/raw-repair/_before.html | 6 --
.../hydration/samples/raw-svg/_before.html | 1 -
.../raw-with-empty-line-at-top/_before.html | 10 ----
.../tests/hydration/samples/raw/_before.html | 4 --
.../_after.html | 1 -
.../_before.html | 1 -
.../hydration/samples/text-empty/_before.html | 1 -
.../hydration/samples/text-empty/_config.js | 10 +++-
.../{_after.html => _expected.html} | 0
.../hydration/samples/text-empty/main.svelte | 2 +-
.../samples/text-fallback/_before.html | 1 -
.../samples/top-level-text/_before.html | 1 -
packages/svelte/tests/hydration/test.ts | 55 ++++++++-----------
84 files changed, 116 insertions(+), 197 deletions(-)
create mode 100644 .changeset/serious-gorillas-eat.md
delete mode 100644 packages/svelte/tests/hydration/samples/basic/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/binding-input/_before.html
create mode 100644 packages/svelte/tests/hydration/samples/binding-input/_expected.html
delete mode 100644 packages/svelte/tests/hydration/samples/claim-comment/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/claim-static/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/claim-text/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/component-in-element/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/component/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/dynamic-text-changed/_before.html
rename packages/svelte/tests/hydration/samples/dynamic-text-changed/{_after.html => _expected.html} (100%)
delete mode 100644 packages/svelte/tests/hydration/samples/dynamic-text-nil/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/dynamic-text/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/each-block-arg-clash/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_before.html
rename packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/{_after.html => _expected.html} (100%)
delete mode 100644 packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_before.html
rename packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/{_after.html => _expected.html} (100%)
delete mode 100644 packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_before.html
rename packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/{_after.html => _expected.html} (100%)
delete mode 100644 packages/svelte/tests/hydration/samples/each-block/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/each-else/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/element-attribute-added/_before.html
rename packages/svelte/tests/hydration/samples/element-attribute-added/{_after.html => _expected.html} (100%)
delete mode 100644 packages/svelte/tests/hydration/samples/element-attribute-changed/_before.html
rename packages/svelte/tests/hydration/samples/element-attribute-changed/{_after.html => _expected.html} (100%)
delete mode 100644 packages/svelte/tests/hydration/samples/element-attribute-removed/_before.html
rename packages/svelte/tests/hydration/samples/element-attribute-removed/{_after.html => _expected.html} (100%)
delete mode 100644 packages/svelte/tests/hydration/samples/element-attribute-unchanged-2/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/element-attribute-unchanged/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/element-nested-sibling/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/element-nested/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/element-ref/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/event-handler/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/expression-sibling/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/head-html-and-component/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/head-html-and-component/_before_head.html
delete mode 100644 packages/svelte/tests/hydration/samples/head-meta-hydrate-duplicate/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/head-meta-hydrate-duplicate/_before_head.html
delete mode 100644 packages/svelte/tests/hydration/samples/html-tag-hydration/_after.html
delete mode 100644 packages/svelte/tests/hydration/samples/html-tag-hydration/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/if-block-anchor/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/if-block-empty/_after.html
delete mode 100644 packages/svelte/tests/hydration/samples/if-block-empty/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/if-block-false/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/if-block-mismatch/_after.html
delete mode 100644 packages/svelte/tests/hydration/samples/if-block-mismatch/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/if-block-update/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/if-block/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/ignore-mismatched-href/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/noscript/_before.html
rename packages/svelte/tests/hydration/samples/noscript/{_after.html => _expected.html} (100%)
delete mode 100644 packages/svelte/tests/hydration/samples/raw-mismatch/_after.html
delete mode 100644 packages/svelte/tests/hydration/samples/raw-mismatch/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/raw-repair/_after.html
delete mode 100644 packages/svelte/tests/hydration/samples/raw-repair/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/raw-svg/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/raw-with-empty-line-at-top/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/raw/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/repairs-apparent-static-content/_after.html
delete mode 100644 packages/svelte/tests/hydration/samples/repairs-apparent-static-content/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/text-empty/_before.html
rename packages/svelte/tests/hydration/samples/text-empty/{_after.html => _expected.html} (100%)
delete mode 100644 packages/svelte/tests/hydration/samples/text-fallback/_before.html
delete mode 100644 packages/svelte/tests/hydration/samples/top-level-text/_before.html
diff --git a/.changeset/serious-gorillas-eat.md b/.changeset/serious-gorillas-eat.md
new file mode 100644
index 0000000000..407f2e6db8
--- /dev/null
+++ b/.changeset/serious-gorillas-eat.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+fix: correctly hydrate controlled each-else block
diff --git a/packages/svelte/src/internal/client/dom/blocks/each.js b/packages/svelte/src/internal/client/dom/blocks/each.js
index ce17cced94..bf4d0b5a17 100644
--- a/packages/svelte/src/internal/client/dom/blocks/each.js
+++ b/packages/svelte/src/internal/client/dom/blocks/each.js
@@ -50,7 +50,7 @@ export function set_current_each_item(item) {
* @param {number} flags
* @param {null | ((item: V) => string)} get_key
* @param {(anchor: null, item: V, index: import('#client').MaybeSource) => void} render_fn
- * @param {null | ((anchor: Node) => void)} fallback_fn
+ * @param {null | ((anchor: Node | null) => void)} fallback_fn
* @param {typeof reconcile_indexed_array | reconcile_tracked_array} reconcile_fn
* @returns {void}
*/
@@ -158,7 +158,7 @@ function each(anchor, get_collection, flags, get_key, render_fn, fallback_fn, re
resume_effect(fallback);
} else {
fallback = render_effect(() => {
- var dom = fallback_fn(anchor);
+ var dom = fallback_fn(hydrating ? null : anchor);
return () => {
if (dom !== undefined) {
@@ -199,7 +199,7 @@ function each(anchor, get_collection, flags, get_key, render_fn, fallback_fn, re
* @param {number} flags
* @param {null | ((item: V) => string)} get_key
* @param {(anchor: null, item: V, index: import('#client').MaybeSource) => void} render_fn
- * @param {null | ((anchor: Node) => void)} fallback_fn
+ * @param {null | ((anchor: Node | null) => void)} fallback_fn
* @returns {void}
*/
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
* @param {() => V[]} get_collection
* @param {number} flags
* @param {(anchor: null, item: V, index: import('#client').MaybeSource) => void} render_fn
- * @param {null | ((anchor: Node) => void)} fallback_fn
+ * @param {null | ((anchor: Node | null) => void)} fallback_fn
* @returns {void}
*/
export function each_indexed(anchor, get_collection, flags, render_fn, fallback_fn) {
diff --git a/packages/svelte/tests/hydration/samples/basic/_before.html b/packages/svelte/tests/hydration/samples/basic/_before.html
deleted file mode 100644
index f97ad9726b..0000000000
--- a/packages/svelte/tests/hydration/samples/basic/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-Hello world!
diff --git a/packages/svelte/tests/hydration/samples/binding-input/_before.html b/packages/svelte/tests/hydration/samples/binding-input/_before.html
deleted file mode 100644
index c6b1da4217..0000000000
--- a/packages/svelte/tests/hydration/samples/binding-input/_before.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Hello world!
diff --git a/packages/svelte/tests/hydration/samples/binding-input/_expected.html b/packages/svelte/tests/hydration/samples/binding-input/_expected.html
new file mode 100644
index 0000000000..b5bc6af161
--- /dev/null
+++ b/packages/svelte/tests/hydration/samples/binding-input/_expected.html
@@ -0,0 +1 @@
+ Hello world!
diff --git a/packages/svelte/tests/hydration/samples/claim-comment/_before.html b/packages/svelte/tests/hydration/samples/claim-comment/_before.html
deleted file mode 100644
index e1bab99a66..0000000000
--- a/packages/svelte/tests/hydration/samples/claim-comment/_before.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-p
-
diff --git a/packages/svelte/tests/hydration/samples/claim-static/_before.html b/packages/svelte/tests/hydration/samples/claim-static/_before.html
deleted file mode 100644
index bfbe85f59c..0000000000
--- a/packages/svelte/tests/hydration/samples/claim-static/_before.html
+++ /dev/null
@@ -1,8 +0,0 @@
-hello
-
-
-
-
diff --git a/packages/svelte/tests/hydration/samples/claim-text/_before.html b/packages/svelte/tests/hydration/samples/claim-text/_before.html
deleted file mode 100644
index 98702233ff..0000000000
--- a/packages/svelte/tests/hydration/samples/claim-text/_before.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
-This p
and the slot
below are direct children of the root.
-There should be one
-
-
diff --git a/packages/svelte/tests/hydration/samples/component-in-element/_before.html b/packages/svelte/tests/hydration/samples/component-in-element/_before.html
deleted file mode 100644
index c95522231e..0000000000
--- a/packages/svelte/tests/hydration/samples/component-in-element/_before.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/packages/svelte/tests/hydration/samples/component/_before.html b/packages/svelte/tests/hydration/samples/component/_before.html
deleted file mode 100644
index bc73093efd..0000000000
--- a/packages/svelte/tests/hydration/samples/component/_before.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-nested
-
diff --git a/packages/svelte/tests/hydration/samples/dynamic-text-changed/_before.html b/packages/svelte/tests/hydration/samples/dynamic-text-changed/_before.html
deleted file mode 100644
index f97ad9726b..0000000000
--- a/packages/svelte/tests/hydration/samples/dynamic-text-changed/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-Hello world!
diff --git a/packages/svelte/tests/hydration/samples/dynamic-text-changed/_config.js b/packages/svelte/tests/hydration/samples/dynamic-text-changed/_config.js
index 4c00df87e5..9852c25463 100644
--- a/packages/svelte/tests/hydration/samples/dynamic-text-changed/_config.js
+++ b/packages/svelte/tests/hydration/samples/dynamic-text-changed/_config.js
@@ -1,6 +1,10 @@
import { test } from '../../test';
export default test({
+ server_props: {
+ name: 'world'
+ },
+
props: {
name: 'everybody'
},
diff --git a/packages/svelte/tests/hydration/samples/dynamic-text-changed/_after.html b/packages/svelte/tests/hydration/samples/dynamic-text-changed/_expected.html
similarity index 100%
rename from packages/svelte/tests/hydration/samples/dynamic-text-changed/_after.html
rename to packages/svelte/tests/hydration/samples/dynamic-text-changed/_expected.html
diff --git a/packages/svelte/tests/hydration/samples/dynamic-text-nil/_before.html b/packages/svelte/tests/hydration/samples/dynamic-text-nil/_before.html
deleted file mode 100644
index 7508e31db6..0000000000
--- a/packages/svelte/tests/hydration/samples/dynamic-text-nil/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/svelte/tests/hydration/samples/dynamic-text/_before.html b/packages/svelte/tests/hydration/samples/dynamic-text/_before.html
deleted file mode 100644
index f97ad9726b..0000000000
--- a/packages/svelte/tests/hydration/samples/dynamic-text/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-Hello world!
diff --git a/packages/svelte/tests/hydration/samples/each-block-arg-clash/_before.html b/packages/svelte/tests/hydration/samples/each-block-arg-clash/_before.html
deleted file mode 100644
index 184a66ac72..0000000000
--- a/packages/svelte/tests/hydration/samples/each-block-arg-clash/_before.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
- animal
- vegetable
- mineral
-
diff --git a/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_before.html b/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_before.html
deleted file mode 100644
index 215e1e3c8e..0000000000
--- a/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_before.html
+++ /dev/null
@@ -1,2 +0,0 @@
-empty
-a
diff --git a/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_config.js b/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_config.js
index f47bee71df..0b7783bd1c 100644
--- a/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_config.js
+++ b/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_config.js
@@ -1,3 +1,13 @@
import { test } from '../../test';
-export default test({});
+export default test({
+ server_props: {
+ items1: [],
+ items2: [{ name: 'a' }]
+ },
+
+ props: {
+ items1: [{ name: 'a' }],
+ items2: []
+ }
+});
diff --git a/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_after.html b/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_expected.html
similarity index 100%
rename from packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_after.html
rename to packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_expected.html
diff --git a/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/main.svelte b/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/main.svelte
index 835f726435..c130034bbe 100644
--- a/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/main.svelte
+++ b/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/main.svelte
@@ -1,6 +1,5 @@
{#each items1 as item}
diff --git a/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_before.html b/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_before.html
deleted file mode 100644
index f480ea096d..0000000000
--- a/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_before.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-a
-a b
-b
-a
-a b
-b
-a
-a b
-b
diff --git a/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_config.js b/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_config.js
index 5b0adcfd86..fa28dbe009 100644
--- a/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_config.js
+++ b/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_config.js
@@ -1,6 +1,14 @@
import { assert_ok, test } from '../../test';
export default test({
+ server_props: {
+ items: [{ name: 'a' }, { name: 'b' }]
+ },
+
+ props: {
+ items: [{ name: 'a' }]
+ },
+
snapshot(target) {
const ul = target.querySelector('ul');
assert_ok(ul);
diff --git a/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_after.html b/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_expected.html
similarity index 100%
rename from packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_after.html
rename to packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_expected.html
diff --git a/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/main.svelte b/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/main.svelte
index e2ff0750e3..093e59cef9 100644
--- a/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/main.svelte
+++ b/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/main.svelte
@@ -1,5 +1,5 @@
diff --git a/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_before.html b/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_before.html
deleted file mode 100644
index 7c3233df17..0000000000
--- a/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_before.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-a
-a
-a
-a
-a
-a
diff --git a/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_config.js b/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_config.js
index 5b0adcfd86..baffef3b8b 100644
--- a/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_config.js
+++ b/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_config.js
@@ -1,6 +1,14 @@
import { assert_ok, test } from '../../test';
export default test({
+ server_props: {
+ items: [{ name: 'x' }]
+ },
+
+ props: {
+ items: [{ name: 'a' }, { name: 'b' }]
+ },
+
snapshot(target) {
const ul = target.querySelector('ul');
assert_ok(ul);
diff --git a/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_after.html b/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_expected.html
similarity index 100%
rename from packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_after.html
rename to packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_expected.html
diff --git a/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/main.svelte b/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/main.svelte
index 7df2b52e2e..093e59cef9 100644
--- a/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/main.svelte
+++ b/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/main.svelte
@@ -1,5 +1,5 @@
diff --git a/packages/svelte/tests/hydration/samples/each-block/_before.html b/packages/svelte/tests/hydration/samples/each-block/_before.html
deleted file mode 100644
index 184a66ac72..0000000000
--- a/packages/svelte/tests/hydration/samples/each-block/_before.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
- animal
- vegetable
- mineral
-
diff --git a/packages/svelte/tests/hydration/samples/each-else/_before.html b/packages/svelte/tests/hydration/samples/each-else/_before.html
deleted file mode 100644
index 3335979fb8..0000000000
--- a/packages/svelte/tests/hydration/samples/each-else/_before.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Hello, world
-foo
-
diff --git a/packages/svelte/tests/hydration/samples/element-attribute-added/_before.html b/packages/svelte/tests/hydration/samples/element-attribute-added/_before.html
deleted file mode 100644
index fec75ee427..0000000000
--- a/packages/svelte/tests/hydration/samples/element-attribute-added/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/svelte/tests/hydration/samples/element-attribute-added/_config.js b/packages/svelte/tests/hydration/samples/element-attribute-added/_config.js
index 3972adadfe..e432ceb468 100644
--- a/packages/svelte/tests/hydration/samples/element-attribute-added/_config.js
+++ b/packages/svelte/tests/hydration/samples/element-attribute-added/_config.js
@@ -1,6 +1,8 @@
import { test } from '../../test';
export default test({
+ server_props: {},
+
props: {
className: 'bar'
},
diff --git a/packages/svelte/tests/hydration/samples/element-attribute-added/_after.html b/packages/svelte/tests/hydration/samples/element-attribute-added/_expected.html
similarity index 100%
rename from packages/svelte/tests/hydration/samples/element-attribute-added/_after.html
rename to packages/svelte/tests/hydration/samples/element-attribute-added/_expected.html
diff --git a/packages/svelte/tests/hydration/samples/element-attribute-changed/_before.html b/packages/svelte/tests/hydration/samples/element-attribute-changed/_before.html
deleted file mode 100644
index fec75ee427..0000000000
--- a/packages/svelte/tests/hydration/samples/element-attribute-changed/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/svelte/tests/hydration/samples/element-attribute-changed/_config.js b/packages/svelte/tests/hydration/samples/element-attribute-changed/_config.js
index 3972adadfe..fe02d429b3 100644
--- a/packages/svelte/tests/hydration/samples/element-attribute-changed/_config.js
+++ b/packages/svelte/tests/hydration/samples/element-attribute-changed/_config.js
@@ -1,6 +1,10 @@
import { test } from '../../test';
export default test({
+ server_props: {
+ className: 'foo'
+ },
+
props: {
className: 'bar'
},
diff --git a/packages/svelte/tests/hydration/samples/element-attribute-changed/_after.html b/packages/svelte/tests/hydration/samples/element-attribute-changed/_expected.html
similarity index 100%
rename from packages/svelte/tests/hydration/samples/element-attribute-changed/_after.html
rename to packages/svelte/tests/hydration/samples/element-attribute-changed/_expected.html
diff --git a/packages/svelte/tests/hydration/samples/element-attribute-removed/_before.html b/packages/svelte/tests/hydration/samples/element-attribute-removed/_before.html
deleted file mode 100644
index 4bb2d47ff3..0000000000
--- a/packages/svelte/tests/hydration/samples/element-attribute-removed/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/svelte/tests/hydration/samples/element-attribute-removed/_config.js b/packages/svelte/tests/hydration/samples/element-attribute-removed/_config.js
index a6b6b845f7..62c72f3f7c 100644
--- a/packages/svelte/tests/hydration/samples/element-attribute-removed/_config.js
+++ b/packages/svelte/tests/hydration/samples/element-attribute-removed/_config.js
@@ -1,6 +1,10 @@
import { test } from '../../test';
export default test({
+ server_props: {
+ id: 'foo'
+ },
+
snapshot(target) {
const div = target.querySelector('div');
diff --git a/packages/svelte/tests/hydration/samples/element-attribute-removed/_after.html b/packages/svelte/tests/hydration/samples/element-attribute-removed/_expected.html
similarity index 100%
rename from packages/svelte/tests/hydration/samples/element-attribute-removed/_after.html
rename to packages/svelte/tests/hydration/samples/element-attribute-removed/_expected.html
diff --git a/packages/svelte/tests/hydration/samples/element-attribute-unchanged-2/_before.html b/packages/svelte/tests/hydration/samples/element-attribute-unchanged-2/_before.html
deleted file mode 100644
index 433df7f9d1..0000000000
--- a/packages/svelte/tests/hydration/samples/element-attribute-unchanged-2/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/svelte/tests/hydration/samples/element-attribute-unchanged/_before.html b/packages/svelte/tests/hydration/samples/element-attribute-unchanged/_before.html
deleted file mode 100644
index fec75ee427..0000000000
--- a/packages/svelte/tests/hydration/samples/element-attribute-unchanged/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/svelte/tests/hydration/samples/element-nested-sibling/_before.html b/packages/svelte/tests/hydration/samples/element-nested-sibling/_before.html
deleted file mode 100644
index 78323f1806..0000000000
--- a/packages/svelte/tests/hydration/samples/element-nested-sibling/_before.html
+++ /dev/null
@@ -1,3 +0,0 @@
-1
-
- 2
diff --git a/packages/svelte/tests/hydration/samples/element-nested/_before.html b/packages/svelte/tests/hydration/samples/element-nested/_before.html
deleted file mode 100644
index a3bf64142d..0000000000
--- a/packages/svelte/tests/hydration/samples/element-nested/_before.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/packages/svelte/tests/hydration/samples/element-ref/_before.html b/packages/svelte/tests/hydration/samples/element-ref/_before.html
deleted file mode 100644
index f97ad9726b..0000000000
--- a/packages/svelte/tests/hydration/samples/element-ref/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-Hello world!
diff --git a/packages/svelte/tests/hydration/samples/event-handler/_before.html b/packages/svelte/tests/hydration/samples/event-handler/_before.html
deleted file mode 100644
index 833699217c..0000000000
--- a/packages/svelte/tests/hydration/samples/event-handler/_before.html
+++ /dev/null
@@ -1,5 +0,0 @@
-click me
-
-
-
-
diff --git a/packages/svelte/tests/hydration/samples/expression-sibling/_before.html b/packages/svelte/tests/hydration/samples/expression-sibling/_before.html
deleted file mode 100644
index 0ce5257133..0000000000
--- a/packages/svelte/tests/hydration/samples/expression-sibling/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-1 2 3
diff --git a/packages/svelte/tests/hydration/samples/head-html-and-component/_before.html b/packages/svelte/tests/hydration/samples/head-html-and-component/_before.html
deleted file mode 100644
index bb7c602edf..0000000000
--- a/packages/svelte/tests/hydration/samples/head-html-and-component/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/svelte/tests/hydration/samples/head-html-and-component/_before_head.html b/packages/svelte/tests/hydration/samples/head-html-and-component/_before_head.html
deleted file mode 100644
index cc1d406e3d..0000000000
--- a/packages/svelte/tests/hydration/samples/head-html-and-component/_before_head.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/packages/svelte/tests/hydration/samples/head-meta-hydrate-duplicate/_before.html b/packages/svelte/tests/hydration/samples/head-meta-hydrate-duplicate/_before.html
deleted file mode 100644
index 7217379ee6..0000000000
--- a/packages/svelte/tests/hydration/samples/head-meta-hydrate-duplicate/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-Just a dummy page.
diff --git a/packages/svelte/tests/hydration/samples/head-meta-hydrate-duplicate/_before_head.html b/packages/svelte/tests/hydration/samples/head-meta-hydrate-duplicate/_before_head.html
deleted file mode 100644
index 040469d618..0000000000
--- a/packages/svelte/tests/hydration/samples/head-meta-hydrate-duplicate/_before_head.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Some Title
-
-
-
\ No newline at end of file
diff --git a/packages/svelte/tests/hydration/samples/html-tag-hydration/_after.html b/packages/svelte/tests/hydration/samples/html-tag-hydration/_after.html
deleted file mode 100644
index b85905ec0b..0000000000
--- a/packages/svelte/tests/hydration/samples/html-tag-hydration/_after.html
+++ /dev/null
@@ -1 +0,0 @@
-1 2 3
diff --git a/packages/svelte/tests/hydration/samples/html-tag-hydration/_before.html b/packages/svelte/tests/hydration/samples/html-tag-hydration/_before.html
deleted file mode 100644
index 2d1b0bd6c3..0000000000
--- a/packages/svelte/tests/hydration/samples/html-tag-hydration/_before.html
+++ /dev/null
@@ -1 +0,0 @@
- 1 2 3
diff --git a/packages/svelte/tests/hydration/samples/if-block-anchor/_before.html b/packages/svelte/tests/hydration/samples/if-block-anchor/_before.html
deleted file mode 100644
index 163050a1a6..0000000000
--- a/packages/svelte/tests/hydration/samples/if-block-anchor/_before.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
diff --git a/packages/svelte/tests/hydration/samples/if-block-empty/_after.html b/packages/svelte/tests/hydration/samples/if-block-empty/_after.html
deleted file mode 100644
index 9c71a6ffee..0000000000
--- a/packages/svelte/tests/hydration/samples/if-block-empty/_after.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-x
-
diff --git a/packages/svelte/tests/hydration/samples/if-block-empty/_before.html b/packages/svelte/tests/hydration/samples/if-block-empty/_before.html
deleted file mode 100644
index 88c34c8f29..0000000000
--- a/packages/svelte/tests/hydration/samples/if-block-empty/_before.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/packages/svelte/tests/hydration/samples/if-block-empty/_config.js b/packages/svelte/tests/hydration/samples/if-block-empty/_config.js
index f47bee71df..78f00a1b51 100644
--- a/packages/svelte/tests/hydration/samples/if-block-empty/_config.js
+++ b/packages/svelte/tests/hydration/samples/if-block-empty/_config.js
@@ -1,3 +1,11 @@
import { test } from '../../test';
-export default test({});
+export default test({
+ server_props: {
+ foo: ''
+ },
+
+ props: {
+ foo: 'x'
+ }
+});
diff --git a/packages/svelte/tests/hydration/samples/if-block-false/_before.html b/packages/svelte/tests/hydration/samples/if-block-false/_before.html
deleted file mode 100644
index 7911a5ef45..0000000000
--- a/packages/svelte/tests/hydration/samples/if-block-false/_before.html
+++ /dev/null
@@ -1,5 +0,0 @@
-before
-
-
-
-after
diff --git a/packages/svelte/tests/hydration/samples/if-block-mismatch/_after.html b/packages/svelte/tests/hydration/samples/if-block-mismatch/_after.html
deleted file mode 100644
index b98a7cb541..0000000000
--- a/packages/svelte/tests/hydration/samples/if-block-mismatch/_after.html
+++ /dev/null
@@ -1 +0,0 @@
-foo
diff --git a/packages/svelte/tests/hydration/samples/if-block-mismatch/_before.html b/packages/svelte/tests/hydration/samples/if-block-mismatch/_before.html
deleted file mode 100644
index fe8876acb7..0000000000
--- a/packages/svelte/tests/hydration/samples/if-block-mismatch/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-bar
diff --git a/packages/svelte/tests/hydration/samples/if-block-mismatch/_config.js b/packages/svelte/tests/hydration/samples/if-block-mismatch/_config.js
index 9bf1e9b276..f93877415f 100644
--- a/packages/svelte/tests/hydration/samples/if-block-mismatch/_config.js
+++ b/packages/svelte/tests/hydration/samples/if-block-mismatch/_config.js
@@ -3,5 +3,13 @@ import { test } from '../../test';
// even {#if true} or {#if false} should be kept as an if block, because it could be {#if browser} originally,
// which is then different between client and server.
export default test({
+ server_props: {
+ condition: false
+ },
+
+ props: {
+ condition: true
+ },
+
trim_whitespace: false
});
diff --git a/packages/svelte/tests/hydration/samples/if-block-mismatch/main.svelte b/packages/svelte/tests/hydration/samples/if-block-mismatch/main.svelte
index 4059553992..c6799c5f95 100644
--- a/packages/svelte/tests/hydration/samples/if-block-mismatch/main.svelte
+++ b/packages/svelte/tests/hydration/samples/if-block-mismatch/main.svelte
@@ -1,3 +1,7 @@
+
+
{#if true}
foo
{:else}
diff --git a/packages/svelte/tests/hydration/samples/if-block-update/_before.html b/packages/svelte/tests/hydration/samples/if-block-update/_before.html
deleted file mode 100644
index 5821b859a7..0000000000
--- a/packages/svelte/tests/hydration/samples/if-block-update/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-foo!
diff --git a/packages/svelte/tests/hydration/samples/if-block/_before.html b/packages/svelte/tests/hydration/samples/if-block/_before.html
deleted file mode 100644
index ebd6a90aad..0000000000
--- a/packages/svelte/tests/hydration/samples/if-block/_before.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-foo!
-
diff --git a/packages/svelte/tests/hydration/samples/ignore-mismatched-href/_before.html b/packages/svelte/tests/hydration/samples/ignore-mismatched-href/_before.html
deleted file mode 100644
index afeffd5eb6..0000000000
--- a/packages/svelte/tests/hydration/samples/ignore-mismatched-href/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-foo
diff --git a/packages/svelte/tests/hydration/samples/ignore-mismatched-href/_config.js b/packages/svelte/tests/hydration/samples/ignore-mismatched-href/_config.js
index cc24163f2c..ce81251e5e 100644
--- a/packages/svelte/tests/hydration/samples/ignore-mismatched-href/_config.js
+++ b/packages/svelte/tests/hydration/samples/ignore-mismatched-href/_config.js
@@ -1,6 +1,14 @@
import { test } from '../../test';
export default test({
+ server_props: {
+ browser: false
+ },
+
+ props: {
+ browser: true
+ },
+
test(assert, target) {
assert.equal(target.querySelector('a')?.getAttribute('href'), '/bar');
}
diff --git a/packages/svelte/tests/hydration/samples/ignore-mismatched-href/main.svelte b/packages/svelte/tests/hydration/samples/ignore-mismatched-href/main.svelte
index 5dcd4d4002..de78109c00 100644
--- a/packages/svelte/tests/hydration/samples/ignore-mismatched-href/main.svelte
+++ b/packages/svelte/tests/hydration/samples/ignore-mismatched-href/main.svelte
@@ -1,5 +1,5 @@
foo
diff --git a/packages/svelte/tests/hydration/samples/noscript/_before.html b/packages/svelte/tests/hydration/samples/noscript/_before.html
deleted file mode 100644
index 34ac9d9bc3..0000000000
--- a/packages/svelte/tests/hydration/samples/noscript/_before.html
+++ /dev/null
@@ -1,2 +0,0 @@
-JavaScript is required for this site.
-Hello! Count: 0
diff --git a/packages/svelte/tests/hydration/samples/noscript/_after.html b/packages/svelte/tests/hydration/samples/noscript/_expected.html
similarity index 100%
rename from packages/svelte/tests/hydration/samples/noscript/_after.html
rename to packages/svelte/tests/hydration/samples/noscript/_expected.html
diff --git a/packages/svelte/tests/hydration/samples/raw-mismatch/_after.html b/packages/svelte/tests/hydration/samples/raw-mismatch/_after.html
deleted file mode 100644
index d28ae350fb..0000000000
--- a/packages/svelte/tests/hydration/samples/raw-mismatch/_after.html
+++ /dev/null
@@ -1 +0,0 @@
-foo
\ No newline at end of file
diff --git a/packages/svelte/tests/hydration/samples/raw-mismatch/_before.html b/packages/svelte/tests/hydration/samples/raw-mismatch/_before.html
deleted file mode 100644
index 4c04a81f66..0000000000
--- a/packages/svelte/tests/hydration/samples/raw-mismatch/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-bar
\ No newline at end of file
diff --git a/packages/svelte/tests/hydration/samples/raw-repair/_after.html b/packages/svelte/tests/hydration/samples/raw-repair/_after.html
deleted file mode 100644
index 31cdc12015..0000000000
--- a/packages/svelte/tests/hydration/samples/raw-repair/_after.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
invalid
-
invalid
\ No newline at end of file
diff --git a/packages/svelte/tests/hydration/samples/raw-repair/_before.html b/packages/svelte/tests/hydration/samples/raw-repair/_before.html
deleted file mode 100644
index 3e2942c4be..0000000000
--- a/packages/svelte/tests/hydration/samples/raw-repair/_before.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-invalid
-
-invalid
-
-
\ No newline at end of file
diff --git a/packages/svelte/tests/hydration/samples/raw-svg/_before.html b/packages/svelte/tests/hydration/samples/raw-svg/_before.html
deleted file mode 100644
index 7ec08fa13f..0000000000
--- a/packages/svelte/tests/hydration/samples/raw-svg/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/svelte/tests/hydration/samples/raw-with-empty-line-at-top/_before.html b/packages/svelte/tests/hydration/samples/raw-with-empty-line-at-top/_before.html
deleted file mode 100644
index 6aea13491a..0000000000
--- a/packages/svelte/tests/hydration/samples/raw-with-empty-line-at-top/_before.html
+++ /dev/null
@@ -1,10 +0,0 @@
-before
-
-
-
-a
-b
-c
-
-
-after
diff --git a/packages/svelte/tests/hydration/samples/raw/_before.html b/packages/svelte/tests/hydration/samples/raw/_before.html
deleted file mode 100644
index be89227a9b..0000000000
--- a/packages/svelte/tests/hydration/samples/raw/_before.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
-this is some html
-and so is this
-
diff --git a/packages/svelte/tests/hydration/samples/repairs-apparent-static-content/_after.html b/packages/svelte/tests/hydration/samples/repairs-apparent-static-content/_after.html
deleted file mode 100644
index d20b3ed496..0000000000
--- a/packages/svelte/tests/hydration/samples/repairs-apparent-static-content/_after.html
+++ /dev/null
@@ -1 +0,0 @@
-Hello client!
diff --git a/packages/svelte/tests/hydration/samples/repairs-apparent-static-content/_before.html b/packages/svelte/tests/hydration/samples/repairs-apparent-static-content/_before.html
deleted file mode 100644
index f97ad9726b..0000000000
--- a/packages/svelte/tests/hydration/samples/repairs-apparent-static-content/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-Hello world!
diff --git a/packages/svelte/tests/hydration/samples/text-empty/_before.html b/packages/svelte/tests/hydration/samples/text-empty/_before.html
deleted file mode 100644
index a8cad39ae7..0000000000
--- a/packages/svelte/tests/hydration/samples/text-empty/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/svelte/tests/hydration/samples/text-empty/_config.js b/packages/svelte/tests/hydration/samples/text-empty/_config.js
index f47bee71df..4067b68b04 100644
--- a/packages/svelte/tests/hydration/samples/text-empty/_config.js
+++ b/packages/svelte/tests/hydration/samples/text-empty/_config.js
@@ -1,3 +1,11 @@
import { test } from '../../test';
-export default test({});
+export default test({
+ server_props: {
+ x: ''
+ },
+
+ props: {
+ x: 'x'
+ }
+});
diff --git a/packages/svelte/tests/hydration/samples/text-empty/_after.html b/packages/svelte/tests/hydration/samples/text-empty/_expected.html
similarity index 100%
rename from packages/svelte/tests/hydration/samples/text-empty/_after.html
rename to packages/svelte/tests/hydration/samples/text-empty/_expected.html
diff --git a/packages/svelte/tests/hydration/samples/text-empty/main.svelte b/packages/svelte/tests/hydration/samples/text-empty/main.svelte
index d88ec4833c..90451138d3 100644
--- a/packages/svelte/tests/hydration/samples/text-empty/main.svelte
+++ b/packages/svelte/tests/hydration/samples/text-empty/main.svelte
@@ -1,5 +1,5 @@
{x}
diff --git a/packages/svelte/tests/hydration/samples/text-fallback/_before.html b/packages/svelte/tests/hydration/samples/text-fallback/_before.html
deleted file mode 100644
index d5d3925b3b..0000000000
--- a/packages/svelte/tests/hydration/samples/text-fallback/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/svelte/tests/hydration/samples/top-level-text/_before.html b/packages/svelte/tests/hydration/samples/top-level-text/_before.html
deleted file mode 100644
index 8f4d4886d4..0000000000
--- a/packages/svelte/tests/hydration/samples/top-level-text/_before.html
+++ /dev/null
@@ -1 +0,0 @@
-Text
diff --git a/packages/svelte/tests/hydration/test.ts b/packages/svelte/tests/hydration/test.ts
index c9db5d7e6f..460d589695 100644
--- a/packages/svelte/tests/hydration/test.ts
+++ b/packages/svelte/tests/hydration/test.ts
@@ -4,14 +4,14 @@ import * as fs from 'node:fs';
import { assert } from 'vitest';
import { compile_directory, should_update_expected } from '../helpers.js';
import { assert_html_equal } from '../html_equal.js';
-import { suite, assert_ok } from '../suite.js';
+import { suite, assert_ok, type BaseTest } from '../suite.js';
import { createClassComponent } from 'svelte/legacy';
+import { render } from 'svelte/server';
import type { CompileOptions } from '#compiler';
-interface HydrationTest {
- solo?: boolean;
- skip?: boolean;
+interface HydrationTest extends BaseTest {
load_compiled?: boolean;
+ server_props?: Record;
props?: Record;
compileOptions?: Partial;
/**
@@ -53,14 +53,16 @@ const { test, run } = suite(async (config, cwd) => {
const target = window.document.body;
const head = window.document.head;
- target.innerHTML = read_html(`${cwd}/_before.html`);
+ const rendered = render((await import(`${cwd}/_output/server/main.svelte.js`)).default, {
+ props: config.server_props ?? config.props ?? {}
+ });
- let before_head;
- try {
- before_head = read_html(`${cwd}/_before_head.html`);
- head.innerHTML = before_head;
- } catch (err) {
- // continue regardless of error
+ fs.writeFileSync(`${cwd}/_output/body.html`, rendered.html + '\n');
+ target.innerHTML = rendered.html;
+
+ if (rendered.head) {
+ fs.writeFileSync(`${cwd}/_output/head.html`, rendered.head + '\n');
+ head.innerHTML = rendered.head;
}
config.before_test?.();
@@ -95,29 +97,16 @@ const { test, run } = suite(async (config, cwd) => {
assert.ok(!got_hydration_error, 'Unexpected hydration error');
}
- try {
- assert_html_equal(target.innerHTML, read_html(`${cwd}/_after.html`, `${cwd}/_before.html`));
- } catch (error) {
- if (should_update_expected()) {
- fs.writeFileSync(`${cwd}/_after.html`, target.innerHTML);
- console.log(`Updated ${cwd}/_after.html.`);
- } else {
- throw error;
- }
- }
+ const expected = fs.existsSync(`${cwd}/_expected.html`)
+ ? read_html(`${cwd}/_expected.html`)
+ : rendered.html;
+ assert_html_equal(target.innerHTML, expected);
- if (before_head) {
- try {
- const after_head = read_html(`${cwd}/_after_head.html`, `${cwd}/_before_head.html`);
- assert_html_equal(head.innerHTML, after_head);
- } catch (error) {
- if (should_update_expected()) {
- fs.writeFileSync(`${cwd}/_after_head.html`, head.innerHTML);
- console.log(`Updated ${cwd}/_after_head.html.`);
- } else {
- throw error;
- }
- }
+ if (rendered.head) {
+ const expected = fs.existsSync(`${cwd}/_expected_head.html`)
+ ? read_html(`${cwd}/_expected_head.html`)
+ : rendered.head;
+ assert_html_equal(head.innerHTML, expected);
}
if (config.snapshot) {