From 7a761c483f0021f50741b9496a23093dc048d505 Mon Sep 17 00:00:00 2001 From: jhefferman-sfdc <83669775+jhefferman-sfdc@users.noreply.github.com> Date: Wed, 19 Feb 2025 13:06:09 -0700 Subject: [PATCH] fix: v2 hydration test failures (#5227) * fix: fixed class mutation, added test coverage, removed failure supression * fix: unnecessary fixture pathing --- .../parent-child/config.json | 3 + .../{ => parent-child}/error.txt | 0 .../parent-child/expected.html | 8 ++ .../modules/x/child/child.html} | 0 .../parent-child/modules/x/child/child.js | 9 ++ .../parent-child/modules/x/parent/parent.html | 3 + .../parent-child/modules/x/parent/parent.js} | 0 .../{ => simple}/config.json | 0 .../simple}/error.txt | 0 .../{ => simple}/expected.html | 0 .../simple/modules/x/cmp/cmp.html | 2 + .../{ => simple}/modules/x/cmp/cmp.js | 0 .../fixtures/inner-outer-html/expected.html | 88 ------------------- .../{ => inner-div}/config.json | 0 .../{ => inner-div}/error-ssr.txt | 0 .../error.txt} | 0 .../inner-div/expected-ssr.html | 0 .../inner-outer-html/inner-div/expected.html | 19 ++++ .../inner-div/modules/x/inner/inner.html | 8 ++ .../{ => inner-div}/modules/x/inner/inner.js | 0 .../inner-external/config.json | 7 ++ .../inner-external/error-ssr.txt | 1 + .../inner-outer-html/inner-external/error.txt | 0 .../inner-external/expected-ssr.html | 0 .../inner-external/expected.html | 13 +++ .../inner-external/modules/x/inner/inner.html | 5 ++ .../inner-external/modules/x/inner/inner.js | 5 ++ .../inner-outer-html/inner-lwc/config.json | 7 ++ .../inner-outer-html/inner-lwc/error-ssr.txt | 0 .../inner-outer-html/inner-lwc/error.txt | 0 .../inner-lwc/expected-ssr.html | 25 ++++++ .../inner-outer-html/inner-lwc/expected.html | 25 ++++++ .../modules/x/component/component.html | 0 .../modules/x/component/component.js | 3 + .../inner-lwc/modules/x/inner/inner.html | 5 ++ .../inner-lwc/modules/x/inner/inner.js | 6 ++ .../modules/x/inner/inner.html | 28 ------ .../inner-outer-html/outer-div/config.json | 7 ++ .../inner-outer-html/outer-div/error-ssr.txt | 1 + .../inner-outer-html/outer-div/error.txt | 0 .../outer-div/expected-ssr.html | 0 .../inner-outer-html/outer-div/expected.html | 19 ++++ .../outer-div/modules/x/outer/outer.html | 8 ++ .../outer-div/modules/x/outer/outer.js | 6 ++ .../outer-external/config.json | 7 ++ .../outer-external/error-ssr.txt | 1 + .../inner-outer-html/outer-external/error.txt | 0 .../outer-external/expected-ssr.html | 0 .../outer-external/expected.html | 13 +++ .../outer-external/modules/x/outer/outer.html | 5 ++ .../outer-external/modules/x/outer/outer.js | 6 ++ .../inner-outer-html/outer-lwc/config.json | 3 + .../inner-outer-html/outer-lwc/error.txt | 0 .../inner-outer-html/outer-lwc/expected.html | 25 ++++++ .../modules/x/component/component.html | 3 + .../modules/x/component/component.js | 3 + .../outer-lwc/modules/x/outer/outer.html | 5 ++ .../outer-lwc/modules/x/outer/outer.js | 6 ++ .../scripts/karma-plugins/hydration-tests.js | 26 +----- .../directives/lwc-dynamic/index.spec.js | 4 +- .../directives/lwc-dynamic/x/main/main.html | 2 +- .../inner-outer-html/x/main/main.html | 8 -- .../directives/lwc-dynamic/index.spec.js | 4 +- .../directives/lwc-dynamic/x/main/main.html | 2 +- .../@lwc/ssr-runtime/src/lightning-element.ts | 5 ++ 65 files changed, 287 insertions(+), 152 deletions(-) create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/config.json rename packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/{ => parent-child}/error.txt (100%) create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/expected.html rename packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/{modules/x/cmp/cmp.html => parent-child/modules/x/child/child.html} (100%) create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/modules/x/child/child.js create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/modules/x/parent/parent.html rename packages/@lwc/engine-server/src/__tests__/fixtures/{inner-outer-html/modules/x/component/component.js => attribute-and-class-modify/parent-child/modules/x/parent/parent.js} (100%) rename packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/{ => simple}/config.json (100%) rename packages/@lwc/engine-server/src/__tests__/fixtures/{inner-outer-html => attribute-and-class-modify/simple}/error.txt (100%) rename packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/{ => simple}/expected.html (100%) create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/simple/modules/x/cmp/cmp.html rename packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/{ => simple}/modules/x/cmp/cmp.js (100%) delete mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/expected.html rename packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/{ => inner-div}/config.json (100%) rename packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/{ => inner-div}/error-ssr.txt (100%) rename packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/{expected-ssr.html => inner-div/error.txt} (100%) create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/expected-ssr.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/expected.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/modules/x/inner/inner.html rename packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/{ => inner-div}/modules/x/inner/inner.js (100%) create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/config.json create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/error-ssr.txt create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/error.txt create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/expected-ssr.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/expected.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/modules/x/inner/inner.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/modules/x/inner/inner.js create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/config.json create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/error-ssr.txt create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/error.txt create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/expected-ssr.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/expected.html rename packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/{ => inner-lwc}/modules/x/component/component.html (100%) create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/modules/x/component/component.js create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/modules/x/inner/inner.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/modules/x/inner/inner.js delete mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/modules/x/inner/inner.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/config.json create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/error-ssr.txt create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/error.txt create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/expected-ssr.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/expected.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/modules/x/outer/outer.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/modules/x/outer/outer.js create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/config.json create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/error-ssr.txt create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/error.txt create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/expected-ssr.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/expected.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/modules/x/outer/outer.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/modules/x/outer/outer.js create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/config.json create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/error.txt create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/expected.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/component/component.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/component/component.js create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/outer/outer.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/outer/outer.js diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/config.json b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/config.json new file mode 100644 index 0000000000..b4fab509e2 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/config.json @@ -0,0 +1,3 @@ +{ + "entry": "x/parent" +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/error.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/error.txt similarity index 100% rename from packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/error.txt rename to packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/error.txt diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/expected.html b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/expected.html new file mode 100644 index 0000000000..938ed24606 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/expected.html @@ -0,0 +1,8 @@ + + + \ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/modules/x/cmp/cmp.html b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/modules/x/child/child.html similarity index 100% rename from packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/modules/x/cmp/cmp.html rename to packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/modules/x/child/child.html diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/modules/x/child/child.js b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/modules/x/child/child.js new file mode 100644 index 0000000000..c2433cd573 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/modules/x/child/child.js @@ -0,0 +1,9 @@ +import { LightningElement } from 'lwc'; + +export default class extends LightningElement { + connectedCallback() { + // Modify a class that has already been set by the parent + this.classList.add('connected-callback-class'); + this.classList.add('connected-callback-class-2'); + } +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/modules/x/parent/parent.html b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/modules/x/parent/parent.html new file mode 100644 index 0000000000..448eb299dc --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/modules/x/parent/parent.html @@ -0,0 +1,3 @@ + diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/modules/x/component/component.js b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/modules/x/parent/parent.js similarity index 100% rename from packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/modules/x/component/component.js rename to packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/parent-child/modules/x/parent/parent.js diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/config.json b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/simple/config.json similarity index 100% rename from packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/config.json rename to packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/simple/config.json diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/error.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/simple/error.txt similarity index 100% rename from packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/error.txt rename to packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/simple/error.txt diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/expected.html b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/simple/expected.html similarity index 100% rename from packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/expected.html rename to packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/simple/expected.html diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/simple/modules/x/cmp/cmp.html b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/simple/modules/x/cmp/cmp.html new file mode 100644 index 0000000000..6beff5199f --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/simple/modules/x/cmp/cmp.html @@ -0,0 +1,2 @@ + diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/modules/x/cmp/cmp.js b/packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/simple/modules/x/cmp/cmp.js similarity index 100% rename from packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/modules/x/cmp/cmp.js rename to packages/@lwc/engine-server/src/__tests__/fixtures/attribute-and-class-modify/simple/modules/x/cmp/cmp.js diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/expected.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/expected.html deleted file mode 100644 index 71d253a4fd..0000000000 --- a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/expected.html +++ /dev/null @@ -1,88 +0,0 @@ - - - \ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/config.json b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/config.json similarity index 100% rename from packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/config.json rename to packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/config.json diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/error-ssr.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/error-ssr.txt similarity index 100% rename from packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/error-ssr.txt rename to packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/error-ssr.txt diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/expected-ssr.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/error.txt similarity index 100% rename from packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/expected-ssr.html rename to packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/error.txt diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/expected-ssr.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/expected-ssr.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/expected.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/expected.html new file mode 100644 index 0000000000..39894df961 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/expected.html @@ -0,0 +1,19 @@ + + + \ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/modules/x/inner/inner.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/modules/x/inner/inner.html new file mode 100644 index 0000000000..2d57eb1731 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/modules/x/inner/inner.html @@ -0,0 +1,8 @@ + diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/modules/x/inner/inner.js b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/modules/x/inner/inner.js similarity index 100% rename from packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/modules/x/inner/inner.js rename to packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-div/modules/x/inner/inner.js diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/config.json b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/config.json new file mode 100644 index 0000000000..29884abdc9 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/config.json @@ -0,0 +1,7 @@ +{ + "entry": "x/inner", + "ssrFiles": { + "error": "error-ssr.txt", + "expected": "expected-ssr.html" + } +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/error-ssr.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/error-ssr.txt new file mode 100644 index 0000000000..e5df9e005c --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/error-ssr.txt @@ -0,0 +1 @@ +Cannot set attribute "inner-h-t-m-l" on . \ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/error.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/error.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/expected-ssr.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/expected-ssr.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/expected.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/expected.html new file mode 100644 index 0000000000..f961fd68d3 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/expected.html @@ -0,0 +1,13 @@ + + + \ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/modules/x/inner/inner.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/modules/x/inner/inner.html new file mode 100644 index 0000000000..82dd3d7904 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/modules/x/inner/inner.html @@ -0,0 +1,5 @@ + diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/modules/x/inner/inner.js b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/modules/x/inner/inner.js new file mode 100644 index 0000000000..b14e3ffae2 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-external/modules/x/inner/inner.js @@ -0,0 +1,5 @@ +import { LightningElement } from 'lwc'; + +export default class extends LightningElement { + computed = 'injected'; +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/config.json b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/config.json new file mode 100644 index 0000000000..29884abdc9 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/config.json @@ -0,0 +1,7 @@ +{ + "entry": "x/inner", + "ssrFiles": { + "error": "error-ssr.txt", + "expected": "expected-ssr.html" + } +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/error-ssr.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/error-ssr.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/error.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/error.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/expected-ssr.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/expected-ssr.html new file mode 100644 index 0000000000..aa2b391827 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/expected-ssr.html @@ -0,0 +1,25 @@ + + + \ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/expected.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/expected.html new file mode 100644 index 0000000000..aa2b391827 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/expected.html @@ -0,0 +1,25 @@ + + + \ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/modules/x/component/component.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/modules/x/component/component.html similarity index 100% rename from packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/modules/x/component/component.html rename to packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/modules/x/component/component.html diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/modules/x/component/component.js b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/modules/x/component/component.js new file mode 100644 index 0000000000..ca8dce94e0 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/modules/x/component/component.js @@ -0,0 +1,3 @@ +import { LightningElement } from 'lwc'; + +export default class extends LightningElement {} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/modules/x/inner/inner.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/modules/x/inner/inner.html new file mode 100644 index 0000000000..690c42e968 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/modules/x/inner/inner.html @@ -0,0 +1,5 @@ + diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/modules/x/inner/inner.js b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/modules/x/inner/inner.js new file mode 100644 index 0000000000..dc4b54ded2 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/inner-lwc/modules/x/inner/inner.js @@ -0,0 +1,6 @@ +import { LightningElement } from 'lwc'; + +export default class extends LightningElement { + computed = 'injected'; + spread = { innerHTML: 'wheeeeeeeeeeeeeeeeeeeeeeeeeee' }; +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/modules/x/inner/inner.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/modules/x/inner/inner.html deleted file mode 100644 index a68a7c2d28..0000000000 --- a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/modules/x/inner/inner.html +++ /dev/null @@ -1,28 +0,0 @@ - diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/config.json b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/config.json new file mode 100644 index 0000000000..52bc34cf9a --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/config.json @@ -0,0 +1,7 @@ +{ + "entry": "x/outer", + "ssrFiles": { + "error": "error-ssr.txt", + "expected": "expected-ssr.html" + } +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/error-ssr.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/error-ssr.txt new file mode 100644 index 0000000000..34c389996c --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/error-ssr.txt @@ -0,0 +1 @@ +Cannot set attribute "outer-h-t-m-l" on
. \ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/error.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/error.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/expected-ssr.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/expected-ssr.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/expected.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/expected.html new file mode 100644 index 0000000000..dd36f951cc --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/expected.html @@ -0,0 +1,19 @@ + + + \ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/modules/x/outer/outer.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/modules/x/outer/outer.html new file mode 100644 index 0000000000..0ac3a752d7 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/modules/x/outer/outer.html @@ -0,0 +1,8 @@ + diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/modules/x/outer/outer.js b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/modules/x/outer/outer.js new file mode 100644 index 0000000000..dc4b54ded2 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-div/modules/x/outer/outer.js @@ -0,0 +1,6 @@ +import { LightningElement } from 'lwc'; + +export default class extends LightningElement { + computed = 'injected'; + spread = { innerHTML: 'wheeeeeeeeeeeeeeeeeeeeeeeeeee' }; +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/config.json b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/config.json new file mode 100644 index 0000000000..52bc34cf9a --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/config.json @@ -0,0 +1,7 @@ +{ + "entry": "x/outer", + "ssrFiles": { + "error": "error-ssr.txt", + "expected": "expected-ssr.html" + } +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/error-ssr.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/error-ssr.txt new file mode 100644 index 0000000000..8d3ab5d52f --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/error-ssr.txt @@ -0,0 +1 @@ +Cannot set attribute "outer-h-t-m-l" on . \ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/error.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/error.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/expected-ssr.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/expected-ssr.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/expected.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/expected.html new file mode 100644 index 0000000000..9922597d77 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/expected.html @@ -0,0 +1,13 @@ + + + \ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/modules/x/outer/outer.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/modules/x/outer/outer.html new file mode 100644 index 0000000000..7e3fc361d1 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/modules/x/outer/outer.html @@ -0,0 +1,5 @@ + diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/modules/x/outer/outer.js b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/modules/x/outer/outer.js new file mode 100644 index 0000000000..dc4b54ded2 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-external/modules/x/outer/outer.js @@ -0,0 +1,6 @@ +import { LightningElement } from 'lwc'; + +export default class extends LightningElement { + computed = 'injected'; + spread = { innerHTML: 'wheeeeeeeeeeeeeeeeeeeeeeeeeee' }; +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/config.json b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/config.json new file mode 100644 index 0000000000..e053573a97 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/config.json @@ -0,0 +1,3 @@ +{ + "entry": "x/outer" +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/error.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/error.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/expected.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/expected.html new file mode 100644 index 0000000000..6786cd8a4a --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/expected.html @@ -0,0 +1,25 @@ + + + \ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/component/component.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/component/component.html new file mode 100644 index 0000000000..6806310398 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/component/component.html @@ -0,0 +1,3 @@ + diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/component/component.js b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/component/component.js new file mode 100644 index 0000000000..ca8dce94e0 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/component/component.js @@ -0,0 +1,3 @@ +import { LightningElement } from 'lwc'; + +export default class extends LightningElement {} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/outer/outer.html b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/outer/outer.html new file mode 100644 index 0000000000..42cc18e7dd --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/outer/outer.html @@ -0,0 +1,5 @@ + diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/outer/outer.js b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/outer/outer.js new file mode 100644 index 0000000000..dc4b54ded2 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/inner-outer-html/outer-lwc/modules/x/outer/outer.js @@ -0,0 +1,6 @@ +import { LightningElement } from 'lwc'; + +export default class extends LightningElement { + computed = 'injected'; + spread = { innerHTML: 'wheeeeeeeeeeeeeeeeeeeeeeeeeee' }; +} diff --git a/packages/@lwc/integration-karma/scripts/karma-plugins/hydration-tests.js b/packages/@lwc/integration-karma/scripts/karma-plugins/hydration-tests.js index 561993edc1..8dce6af03c 100644 --- a/packages/@lwc/integration-karma/scripts/karma-plugins/hydration-tests.js +++ b/packages/@lwc/integration-karma/scripts/karma-plugins/hydration-tests.js @@ -15,18 +15,6 @@ const ssr = ENGINE_SERVER ? require('@lwc/engine-server') : require('@lwc/ssr-ru const { DISABLE_STATIC_CONTENT_OPTIMIZATION } = require('../shared/options'); const Watcher = require('./Watcher'); -/* - * These are hydration tests that currently fail in ssr-compiler (V2) - * They need to be removed from this list and then fixed. There are only 4 - * so kept here for now. - */ -const EXPECTED_V2_FAILURES = [ - 'mismatches/host-mutation-in-connected-callback/class-mutated-attr-mismatch', - 'mismatches/host-mutation-in-connected-callback/class', - 'directives/lwc-dynamic', - 'inner-outer-html', -]; - const context = { LWC: ssr, moduleOutput: null, @@ -84,6 +72,7 @@ async function getCompiledModule(dirName, compileForSSR) { }, enableDynamicComponents: true, enableStaticContentOptimization: !DISABLE_STATIC_CONTENT_OPTIMIZATION, + experimentalDynamicDirective: true, }), ], @@ -219,17 +208,14 @@ function createHCONFIG2JSPreprocessor(config, logger, emitter) { // You can add an `.only` file alongside an `index.spec.js` file to make it `fdescribe()` const onlyFileExists = await existsUp(suiteDir, '.only'); - // If V2 failure is expected, skip it. - const v2FailureExpected = - !ENGINE_SERVER && EXPECTED_V2_FAILURES.some((dir) => suiteDir.includes(dir)); - let describe = onlyFileExists ? 'fdescribe' : 'describe'; + const describe = onlyFileExists ? 'fdescribe' : 'describe'; const { code: componentDefCSR, watchFiles: componentWatchFilesCSR } = await getCompiledModule(suiteDir, false); let ssrOutput; - /* eslint-disable vitest/no-conditional-tests */ + if (ENGINE_SERVER) { // engine-server uses the same def as the client watcher.watchSuite(filePath, testWatchFiles.concat(componentWatchFilesCSR)); @@ -238,7 +224,7 @@ function createHCONFIG2JSPreprocessor(config, logger, emitter) { testCode, path.join(suiteDir, 'ssr.js') ); - } else if (!v2FailureExpected) { + } else { // ssr-compiler has it's own def const { code: componentDefSSR, watchFiles: componentWatchFilesSSR } = await getCompiledModule(suiteDir, true); @@ -251,11 +237,7 @@ function createHCONFIG2JSPreprocessor(config, logger, emitter) { testCode, path.join(suiteDir, 'ssr.js') ); - } else { - console.log(`Expected failure for ${suiteDir}, skipping`); - describe = 'xdescribe'; } - /* eslint-enable vitest/no-conditional-tests */ const newContent = format( TEMPLATE, diff --git a/packages/@lwc/integration-karma/test-hydration/directives/lwc-dynamic/index.spec.js b/packages/@lwc/integration-karma/test-hydration/directives/lwc-dynamic/index.spec.js index 9ecce85f91..b6a49ef4ed 100644 --- a/packages/@lwc/integration-karma/test-hydration/directives/lwc-dynamic/index.spec.js +++ b/packages/@lwc/integration-karma/test-hydration/directives/lwc-dynamic/index.spec.js @@ -3,7 +3,7 @@ export default { label: 'dynamic', }, snapshot(target) { - const cmp = target.shadowRoot.querySelector('x-dynamic-cmp'); + const cmp = target.shadowRoot.querySelector('x-child'); const p = cmp.shadowRoot.querySelector('p'); return { @@ -12,7 +12,7 @@ export default { }; }, test(target, snapshots) { - const cmp = target.shadowRoot.querySelector('x-dynamic-cmp'); + const cmp = target.shadowRoot.querySelector('x-child'); const p = cmp.shadowRoot.querySelector('p'); expect(cmp).toBe(snapshots.cmp); diff --git a/packages/@lwc/integration-karma/test-hydration/directives/lwc-dynamic/x/main/main.html b/packages/@lwc/integration-karma/test-hydration/directives/lwc-dynamic/x/main/main.html index 100385d78d..575bfc8555 100644 --- a/packages/@lwc/integration-karma/test-hydration/directives/lwc-dynamic/x/main/main.html +++ b/packages/@lwc/integration-karma/test-hydration/directives/lwc-dynamic/x/main/main.html @@ -1,3 +1,3 @@ diff --git a/packages/@lwc/integration-karma/test-hydration/inner-outer-html/x/main/main.html b/packages/@lwc/integration-karma/test-hydration/inner-outer-html/x/main/main.html index b0c85440a4..3e9615e892 100644 --- a/packages/@lwc/integration-karma/test-hydration/inner-outer-html/x/main/main.html +++ b/packages/@lwc/integration-karma/test-hydration/inner-outer-html/x/main/main.html @@ -1,26 +1,18 @@