Skip to content

Commit 01eb413

Browse files
committed
use server-rendered HTML as hydration test starting point
1 parent fe7c45b commit 01eb413

File tree

1 file changed

+14
-12
lines changed
  • packages/svelte/tests/hydration

1 file changed

+14
-12
lines changed

packages/svelte/tests/hydration/test.ts

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import * as fs from 'node:fs';
44
import { assert } from 'vitest';
55
import { compile_directory, should_update_expected } from '../helpers.js';
66
import { assert_html_equal } from '../html_equal.js';
7-
import { suite, assert_ok } from '../suite.js';
7+
import { suite, assert_ok, type BaseTest } from '../suite.js';
88
import { createClassComponent } from 'svelte/legacy';
9+
import { render } from 'svelte/server';
910
import type { CompileOptions } from '#compiler';
1011

11-
interface HydrationTest {
12-
solo?: boolean;
13-
skip?: boolean;
12+
interface HydrationTest extends BaseTest {
1413
load_compiled?: boolean;
14+
server_props?: Record<string, any>;
1515
props?: Record<string, any>;
1616
compileOptions?: Partial<CompileOptions>;
1717
/**
@@ -53,14 +53,16 @@ const { test, run } = suite<HydrationTest>(async (config, cwd) => {
5353
const target = window.document.body;
5454
const head = window.document.head;
5555

56-
target.innerHTML = read_html(`${cwd}/_before.html`);
56+
const rendered = render((await import(`${cwd}/_output/server/main.svelte.js`)).default, {
57+
props: config.server_props ?? config.props ?? {}
58+
});
5759

58-
let before_head;
59-
try {
60-
before_head = read_html(`${cwd}/_before_head.html`);
61-
head.innerHTML = before_head;
62-
} catch (err) {
63-
// continue regardless of error
60+
fs.writeFileSync(`${cwd}/_output/body.html`, rendered.html + '\n');
61+
target.innerHTML = rendered.html;
62+
63+
if (rendered.head) {
64+
fs.writeFileSync(`${cwd}/_output/head.html`, rendered.head + '\n');
65+
head.innerHTML = rendered.head;
6466
}
6567

6668
config.before_test?.();
@@ -106,7 +108,7 @@ const { test, run } = suite<HydrationTest>(async (config, cwd) => {
106108
}
107109
}
108110

109-
if (before_head) {
111+
if (rendered.head) {
110112
try {
111113
const after_head = read_html(`${cwd}/_after_head.html`, `${cwd}/_before_head.html`);
112114
assert_html_equal(head.innerHTML, after_head);

0 commit comments

Comments
 (0)