From ba62a072a01c8f985db71da0774010e785848e8d Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 9 Jul 2024 10:52:20 -0400 Subject: [PATCH] tighten up hydration tests, add test for standalone component --- .../hydration/samples/binding-input/_expected.html | 2 +- .../samples/dynamic-text-changed/_expected.html | 2 +- .../_expected.html | 10 +--------- .../each-block-fallback-mismatch/_expected.html | 3 +-- .../each-block-less-nodes-on-client/_expected.html | 10 +--------- .../each-block-more-nodes-on-client/_expected.html | 10 +--------- .../samples/element-attribute-added/_expected.html | 2 +- .../samples/element-attribute-changed/_expected.html | 2 +- .../samples/element-attribute-removed/_expected.html | 2 +- .../tests/hydration/samples/noscript/_expected.html | 3 +-- .../hydration/samples/raw-repair/_expected.html | 1 + .../samples/standalone-component/Child.svelte | 1 + .../samples/standalone-component/_config.js | 4 ++++ .../samples/standalone-component/_expected.html | 1 + .../samples/standalone-component/main.svelte | 11 +++++++++++ .../hydration/samples/text-empty/_expected.html | 2 +- packages/svelte/tests/hydration/test.ts | 12 ++++++++---- 17 files changed, 37 insertions(+), 41 deletions(-) create mode 100644 packages/svelte/tests/hydration/samples/raw-repair/_expected.html create mode 100644 packages/svelte/tests/hydration/samples/standalone-component/Child.svelte create mode 100644 packages/svelte/tests/hydration/samples/standalone-component/_config.js create mode 100644 packages/svelte/tests/hydration/samples/standalone-component/_expected.html create mode 100644 packages/svelte/tests/hydration/samples/standalone-component/main.svelte diff --git a/packages/svelte/tests/hydration/samples/binding-input/_expected.html b/packages/svelte/tests/hydration/samples/binding-input/_expected.html index b5bc6af161..e36735dc6b 100644 --- a/packages/svelte/tests/hydration/samples/binding-input/_expected.html +++ b/packages/svelte/tests/hydration/samples/binding-input/_expected.html @@ -1 +1 @@ -

Hello world!

+

Hello world!

diff --git a/packages/svelte/tests/hydration/samples/dynamic-text-changed/_expected.html b/packages/svelte/tests/hydration/samples/dynamic-text-changed/_expected.html index b163603869..11e3f55d6b 100644 --- a/packages/svelte/tests/hydration/samples/dynamic-text-changed/_expected.html +++ b/packages/svelte/tests/hydration/samples/dynamic-text-changed/_expected.html @@ -1 +1 @@ -

Hello everybody!

+

Hello everybody!

diff --git a/packages/svelte/tests/hydration/samples/each-block-0-on-server-more-on-client/_expected.html b/packages/svelte/tests/hydration/samples/each-block-0-on-server-more-on-client/_expected.html index 5de1a42d70..2b2a31b926 100644 --- a/packages/svelte/tests/hydration/samples/each-block-0-on-server-more-on-client/_expected.html +++ b/packages/svelte/tests/hydration/samples/each-block-0-on-server-more-on-client/_expected.html @@ -1,9 +1 @@ - - - -
  • a
  • -
  • a
  • -
  • a
  • -
  • a
  • -
  • a
  • -
  • a
  • +
  • a
  • a
  • a
  • a
  • a
  • a
  • diff --git a/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_expected.html b/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_expected.html index fcfd9fe9ef..af66d98b25 100644 --- a/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_expected.html +++ b/packages/svelte/tests/hydration/samples/each-block-fallback-mismatch/_expected.html @@ -1,2 +1 @@ -

    a

    -

    empty

    +

    a

    empty

    diff --git a/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_expected.html b/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_expected.html index 5de1a42d70..2b2a31b926 100644 --- a/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_expected.html +++ b/packages/svelte/tests/hydration/samples/each-block-less-nodes-on-client/_expected.html @@ -1,9 +1 @@ - - - -
  • a
  • -
  • a
  • -
  • a
  • -
  • a
  • -
  • a
  • -
  • a
  • +
  • a
  • a
  • a
  • a
  • a
  • a
  • diff --git a/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_expected.html b/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_expected.html index 453cee352b..fa72a80dcd 100644 --- a/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_expected.html +++ b/packages/svelte/tests/hydration/samples/each-block-more-nodes-on-client/_expected.html @@ -1,9 +1 @@ - - - -
  • a
  • -
  • a
  • b
  • b
  • -
  • a
  • -
  • a
  • b
  • b
  • -
  • a
  • -
  • a
  • b
  • b
  • +
  • a
  • a
  • b
  • b
  • a
  • a
  • b
  • b
  • a
  • a
  • b
  • b
  • diff --git a/packages/svelte/tests/hydration/samples/element-attribute-added/_expected.html b/packages/svelte/tests/hydration/samples/element-attribute-added/_expected.html index 73cf4a84b6..7d8e91c757 100644 --- a/packages/svelte/tests/hydration/samples/element-attribute-added/_expected.html +++ b/packages/svelte/tests/hydration/samples/element-attribute-added/_expected.html @@ -1 +1 @@ -
    +
    diff --git a/packages/svelte/tests/hydration/samples/element-attribute-changed/_expected.html b/packages/svelte/tests/hydration/samples/element-attribute-changed/_expected.html index 73cf4a84b6..7d8e91c757 100644 --- a/packages/svelte/tests/hydration/samples/element-attribute-changed/_expected.html +++ b/packages/svelte/tests/hydration/samples/element-attribute-changed/_expected.html @@ -1 +1 @@ -
    +
    diff --git a/packages/svelte/tests/hydration/samples/element-attribute-removed/_expected.html b/packages/svelte/tests/hydration/samples/element-attribute-removed/_expected.html index bbd534112d..a6c1be8b49 100644 --- a/packages/svelte/tests/hydration/samples/element-attribute-removed/_expected.html +++ b/packages/svelte/tests/hydration/samples/element-attribute-removed/_expected.html @@ -1 +1 @@ -
    +
    diff --git a/packages/svelte/tests/hydration/samples/noscript/_expected.html b/packages/svelte/tests/hydration/samples/noscript/_expected.html index be193b8c98..990ce87303 100644 --- a/packages/svelte/tests/hydration/samples/noscript/_expected.html +++ b/packages/svelte/tests/hydration/samples/noscript/_expected.html @@ -1,2 +1 @@ - -

    Hello!

    Count: 1

    +

    Hello!

    Count: 1

    diff --git a/packages/svelte/tests/hydration/samples/raw-repair/_expected.html b/packages/svelte/tests/hydration/samples/raw-repair/_expected.html new file mode 100644 index 0000000000..39714f0fd3 --- /dev/null +++ b/packages/svelte/tests/hydration/samples/raw-repair/_expected.html @@ -0,0 +1 @@ +

    invalid

    invalid

    diff --git a/packages/svelte/tests/hydration/samples/standalone-component/Child.svelte b/packages/svelte/tests/hydration/samples/standalone-component/Child.svelte new file mode 100644 index 0000000000..b69380af2b --- /dev/null +++ b/packages/svelte/tests/hydration/samples/standalone-component/Child.svelte @@ -0,0 +1 @@ +

    child

    diff --git a/packages/svelte/tests/hydration/samples/standalone-component/_config.js b/packages/svelte/tests/hydration/samples/standalone-component/_config.js new file mode 100644 index 0000000000..5e08315e29 --- /dev/null +++ b/packages/svelte/tests/hydration/samples/standalone-component/_config.js @@ -0,0 +1,4 @@ +import { test } from '../../test'; + +// Ensure that we don't create additional comment nodes for standalone components +export default test({}); diff --git a/packages/svelte/tests/hydration/samples/standalone-component/_expected.html b/packages/svelte/tests/hydration/samples/standalone-component/_expected.html new file mode 100644 index 0000000000..96850f7bdf --- /dev/null +++ b/packages/svelte/tests/hydration/samples/standalone-component/_expected.html @@ -0,0 +1 @@ +

    child

    child

    child

    child

    diff --git a/packages/svelte/tests/hydration/samples/standalone-component/main.svelte b/packages/svelte/tests/hydration/samples/standalone-component/main.svelte new file mode 100644 index 0000000000..8d6342246d --- /dev/null +++ b/packages/svelte/tests/hydration/samples/standalone-component/main.svelte @@ -0,0 +1,11 @@ + + +{#if true} + +{/if} + +{#each [1, 2, 3] as n} + +{/each} diff --git a/packages/svelte/tests/hydration/samples/text-empty/_expected.html b/packages/svelte/tests/hydration/samples/text-empty/_expected.html index 5592a725f3..2e03580f42 100644 --- a/packages/svelte/tests/hydration/samples/text-empty/_expected.html +++ b/packages/svelte/tests/hydration/samples/text-empty/_expected.html @@ -1 +1 @@ -x \ No newline at end of file +x diff --git a/packages/svelte/tests/hydration/test.ts b/packages/svelte/tests/hydration/test.ts index 0fcdc6f1b4..c186802711 100644 --- a/packages/svelte/tests/hydration/test.ts +++ b/packages/svelte/tests/hydration/test.ts @@ -52,8 +52,10 @@ const { test, run } = suite(async (config, cwd) => { props: config.server_props ?? config.props ?? {} }); + const override = read(`${cwd}/_override.html`); + 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) { fs.writeFileSync(`${cwd}/_output/head.html`, rendered.head + '\n'); @@ -109,12 +111,14 @@ const { test, run } = suite(async (config, cwd) => { throw new Error(`Unexpected errors: ${errors.join('\n')}`); } - const expected = read(`${cwd}/_expected.html`) ?? rendered.html; - assert_html_equal(target.innerHTML, expected); + if (!override) { + const expected = read(`${cwd}/_expected.html`) ?? rendered.html; + assert.equal(target.innerHTML.trim(), expected.trim()); + } if (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) {