tighten up hydration tests, add test for standalone component

pull/12335/head
Rich Harris 2 years ago
parent 9192bbba1e
commit ba62a072a0

@ -1 +1 @@
<!--ssr:0--><input> <p>Hello world!</p><!--ssr:0--> <!--[--><input> <p>Hello world!</p><!--]-->

@ -1 +1 @@
<!--ssr:0--><h1>Hello everybody!</h1><!--ssr:0--> <!--[--><h1>Hello everybody!</h1><!--]-->

@ -1,9 +1 @@
<!--ssr:0--><ul><!--ssr:1--><!--ssr:7--><li>a</li><!--ssr:7--><!--ssr:1--></ul> <!--[--><ul><!--[--><li>a</li><!--]--></ul> <ul><!--[--><li>a</li><!--]--></ul> <ul><!--[--><li>a</li><!--]--></ul> <!--[--><li>a</li> <li>a</li><!--]--> <!--[--><li>a</li> <li>a</li><!--]--> <!--[--><li>a</li> <li>a</li><!--]--><!--]-->
<ul><!--ssr:2--><!--ssr:9--><li>a</li><!--ssr:9--><!--ssr:2--></ul>
<ul><!--ssr:3--><!--ssr:11--><li>a</li><!--ssr:11--><!--ssr:3--></ul>
<!--ssr:4--><!--ssr:13--><li>a</li>
<li>a</li><!--ssr:13--><!--ssr:4-->
<!--ssr:5--><!--ssr:15--><li>a</li>
<li>a</li><!--ssr:15--><!--ssr:5-->
<!--ssr:6--><!--ssr:17--><li>a</li>
<li>a</li><!--ssr:17--><!--ssr:6--><!--ssr:0--></div>

@ -1,2 +1 @@
<!--ssr:0--><!--ssr:1--><p>a</p><!--ssr:1--> <!--[--><!--[!--><p>a</p><!--]--> <!--[--><p>empty</p><!--]--><!--]-->
<!--ssr:2--><p>empty</p><!--ssr:2--><!--ssr:0-->

@ -1,9 +1 @@
<!--ssr:0--><ul><!--ssr:1--><!--ssr:7--><li>a</li><!--ssr:7--><!--ssr:1--></ul> <!--[--><ul><!--[--><li>a</li><!--]--></ul> <ul><!--[--><li>a</li><!--]--></ul> <ul><!--[--><li>a</li><!--]--></ul> <!--[--><li>a</li> <li>a</li><!--]--> <!--[--><li>a</li> <li>a</li><!--]--> <!--[--><li>a</li> <li>a</li><!--]--><!--]-->
<ul><!--ssr:2--><!--ssr:9--><li>a</li><!--ssr:9--><!--ssr:2--></ul>
<ul><!--ssr:3--><!--ssr:11--><li>a</li><!--ssr:11--><!--ssr:3--></ul>
<!--ssr:4--><!--ssr:13--><li>a</li>
<li>a</li><!--ssr:13--><!--ssr:4-->
<!--ssr:5--><!--ssr:15--><li>a</li>
<li>a</li><!--ssr:15--><!--ssr:5-->
<!--ssr:6--><!--ssr:17--><li>a</li>
<li>a</li><!--ssr:17--><!--ssr:6--><!--ssr:0--></div>

@ -1,9 +1 @@
<!--ssr:0--><ul><!--ssr:1--><!--ssr:7--><li>a</li><!--ssr:7--><li>b</li><!--ssr:1--></ul> <!--[--><ul><!--[--><li>a</li><li>b</li><!--]--></ul> <ul><!--[--><li>a</li><li>b</li><!--]--></ul> <ul><!--[--><li>a</li><li>b</li><!--]--></ul> <!--[--><li>a</li> <li>a</li><li>b</li> <li>b</li><!--]--> <!--[--><li>a</li> <li>a</li><li>b</li> <li>b</li><!--]--> <!--[--><li>a</li> <li>a</li><li>b</li> <li>b</li><!--]--><!--]-->
<ul><!--ssr:2--><!--ssr:8--><li>a</li><!--ssr:8--><li>b</li><!--ssr:2--></ul>
<ul><!--ssr:3--><!--ssr:9--><li>a</li><!--ssr:9--><li>b</li><!--ssr:3--></ul>
<!--ssr:4--><!--ssr:10--><li>a</li>
<li>a</li><!--ssr:10--><li>b</li><li>b</li><!--ssr:4-->
<!--ssr:5--><!--ssr:11--><li>a</li>
<li>a</li><!--ssr:11--><li>b</li><li>b</li><!--ssr:5-->
<!--ssr:6--><!--ssr:12--><li>a</li>
<li>a</li><!--ssr:12--><li>b</li><li>b</li><!--ssr:6--><!--ssr:0--></div>

@ -1 +1 @@
<!--ssr:0--><div class="bar"></div><!--ssr:0--> <!--[--><div class="bar"></div><!--]-->

@ -1 +1 @@
<!--ssr:0--><div class="bar"></div><!--ssr:0--> <!--[--><div class="bar"></div><!--]-->

@ -1 +1 @@
<div></div><div></div><div></div> <!--[--><div></div> <!--[--><div></div> <div></div><!--]--><!--]-->

@ -1,2 +1 @@
<!--ssr:0--><noscript>JavaScript is required for this site.</noscript> <!--[--><noscript>JavaScript is required for this site.</noscript> <h1>Hello!</h1><p>Count: 1</p><!--]-->
<h1>Hello!</h1><p>Count: 1</p><!--ssr:0-->

@ -0,0 +1 @@
<!----><p><p>invalid</p><!----></p><!----> <p><p>invalid</p><!----></p>

@ -0,0 +1,4 @@
import { test } from '../../test';
// Ensure that we don't create additional comment nodes for standalone components
export default test({});

@ -0,0 +1 @@
<!--[--><!--[--><p>child</p><!--]--> <!--[--><p>child</p><p>child</p><p>child</p><!--]--><!--]-->

@ -0,0 +1,11 @@
<script>
import Child from './Child.svelte';
</script>
{#if true}
<Child />
{/if}
{#each [1, 2, 3] as n}
<Child />
{/each}

@ -1 +1 @@
<!--ssr:0-->x<!--ssr:0--> <!--[--><!---->x<!--]-->

@ -52,8 +52,10 @@ const { test, run } = suite<HydrationTest>(async (config, cwd) => {
props: config.server_props ?? config.props ?? {} props: config.server_props ?? config.props ?? {}
}); });
const override = read(`${cwd}/_override.html`);
fs.writeFileSync(`${cwd}/_output/body.html`, rendered.html + '\n'); fs.writeFileSync(`${cwd}/_output/body.html`, rendered.html + '\n');
target.innerHTML = read(`${cwd}/_override.html`) ?? rendered.html; target.innerHTML = override ?? rendered.html;
if (rendered.head) { if (rendered.head) {
fs.writeFileSync(`${cwd}/_output/head.html`, rendered.head + '\n'); fs.writeFileSync(`${cwd}/_output/head.html`, rendered.head + '\n');
@ -109,12 +111,14 @@ const { test, run } = suite<HydrationTest>(async (config, cwd) => {
throw new Error(`Unexpected errors: ${errors.join('\n')}`); throw new Error(`Unexpected errors: ${errors.join('\n')}`);
} }
const expected = read(`${cwd}/_expected.html`) ?? rendered.html; if (!override) {
assert_html_equal(target.innerHTML, expected); const expected = read(`${cwd}/_expected.html`) ?? rendered.html;
assert.equal(target.innerHTML.trim(), expected.trim());
}
if (rendered.head) { if (rendered.head) {
const expected = read(`${cwd}/_expected_head.html`) ?? rendered.head; const expected = read(`${cwd}/_expected_head.html`) ?? rendered.head;
assert_html_equal(head.innerHTML, expected); assert.equal(head.innerHTML.trim(), expected.trim());
} }
if (config.snapshot) { if (config.snapshot) {

Loading…
Cancel
Save