From 053e1518fb4bb123a8d81249a5aca53056b33abd Mon Sep 17 00:00:00 2001 From: Nolan Lawson Date: Tue, 9 Jul 2024 11:17:16 -0700 Subject: [PATCH 1/2] chore: trim framework-supplied attributes in CSR (#281) --- .../jest-serializer/src/clean-element-attrs.js | 1 + .../__snapshots__/frameworkAttrs.spec.js.snap | 9 +++++++++ .../__tests__/frameworkAttrs.spec.js | 15 +++++++++++++++ .../frameworkAttrs/frameworkAttrs.css | 3 +++ .../frameworkAttrs/frameworkAttrs.html | 3 +++ .../frameworkAttrs/frameworkAttrs.js | 18 ++++++++++++++++++ 6 files changed, 49 insertions(+) create mode 100644 test/src/modules/serializer/frameworkAttrs/__tests__/__snapshots__/frameworkAttrs.spec.js.snap create mode 100644 test/src/modules/serializer/frameworkAttrs/__tests__/frameworkAttrs.spec.js create mode 100644 test/src/modules/serializer/frameworkAttrs/frameworkAttrs.css create mode 100644 test/src/modules/serializer/frameworkAttrs/frameworkAttrs.html create mode 100644 test/src/modules/serializer/frameworkAttrs/frameworkAttrs.js diff --git a/packages/@lwc/jest-serializer/src/clean-element-attrs.js b/packages/@lwc/jest-serializer/src/clean-element-attrs.js index b7b3c416..1cb2ec21 100644 --- a/packages/@lwc/jest-serializer/src/clean-element-attrs.js +++ b/packages/@lwc/jest-serializer/src/clean-element-attrs.js @@ -8,6 +8,7 @@ const { isKnownScopeToken } = require('@lwc/jest-shared'); const ATTRS_TO_REMOVE = [ 'lwc:host', // https://github.com/salesforce/lwc/pull/1600 + 'data-lwc-host-mutated', // https://github.com/salesforce/lwc/pull/4358 ]; function cleanElementAttributes(elm) { diff --git a/test/src/modules/serializer/frameworkAttrs/__tests__/__snapshots__/frameworkAttrs.spec.js.snap b/test/src/modules/serializer/frameworkAttrs/__tests__/__snapshots__/frameworkAttrs.spec.js.snap new file mode 100644 index 00000000..f19cdf3d --- /dev/null +++ b/test/src/modules/serializer/frameworkAttrs/__tests__/__snapshots__/frameworkAttrs.spec.js.snap @@ -0,0 +1,9 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`serializes a component containing framework-supplied attributes 1`] = ` + +

+ Hello world +

+
+`; diff --git a/test/src/modules/serializer/frameworkAttrs/__tests__/frameworkAttrs.spec.js b/test/src/modules/serializer/frameworkAttrs/__tests__/frameworkAttrs.spec.js new file mode 100644 index 00000000..744a82ee --- /dev/null +++ b/test/src/modules/serializer/frameworkAttrs/__tests__/frameworkAttrs.spec.js @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2024, Salesforce, Inc. + * All rights reserved. + * SPDX-License-Identifier: MIT + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT + */ +import { createElement } from 'lwc'; +import FrameworkAttrs from '../frameworkAttrs'; + +it('serializes a component containing framework-supplied attributes', () => { + const elm = createElement('serializer-component', { is: FrameworkAttrs }); + document.body.appendChild(elm); + + expect(elm).toMatchSnapshot(); +}); diff --git a/test/src/modules/serializer/frameworkAttrs/frameworkAttrs.css b/test/src/modules/serializer/frameworkAttrs/frameworkAttrs.css new file mode 100644 index 00000000..03d0aca0 --- /dev/null +++ b/test/src/modules/serializer/frameworkAttrs/frameworkAttrs.css @@ -0,0 +1,3 @@ +h1 { + color: blue; +} diff --git a/test/src/modules/serializer/frameworkAttrs/frameworkAttrs.html b/test/src/modules/serializer/frameworkAttrs/frameworkAttrs.html new file mode 100644 index 00000000..77dc69f8 --- /dev/null +++ b/test/src/modules/serializer/frameworkAttrs/frameworkAttrs.html @@ -0,0 +1,3 @@ + diff --git a/test/src/modules/serializer/frameworkAttrs/frameworkAttrs.js b/test/src/modules/serializer/frameworkAttrs/frameworkAttrs.js new file mode 100644 index 00000000..bcdc70c3 --- /dev/null +++ b/test/src/modules/serializer/frameworkAttrs/frameworkAttrs.js @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2018, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: MIT + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT + */ + +import { LightningElement } from 'lwc'; + +export default class FrameworkAttrs extends LightningElement { + static renderMode = 'light'; + + connectedCallback() { + // Typically this is only added by the framework itself, but here we are explicitly adding it + // to make the test simpler + this.setAttribute('data-lwc-host-mutated', ''); + } +} From 5d7e988b218d78ea7ebe42e2941f294c1d85aa39 Mon Sep 17 00:00:00 2001 From: Nolan Lawson Date: Tue, 9 Jul 2024 11:18:11 -0700 Subject: [PATCH 2/2] v16.0.2 --- lerna.json | 2 +- packages/@lwc/jest-preset/package.json | 8 ++++---- packages/@lwc/jest-resolver/package.json | 4 ++-- packages/@lwc/jest-serializer/package.json | 4 ++-- packages/@lwc/jest-shared/package.json | 2 +- packages/@lwc/jest-transformer/package.json | 4 ++-- test/package.json | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lerna.json b/lerna.json index 1b6c030d..414764fe 100644 --- a/lerna.json +++ b/lerna.json @@ -6,5 +6,5 @@ }, "exact": true, "npmClient": "yarn", - "version": "16.0.1" + "version": "16.0.2" } diff --git a/packages/@lwc/jest-preset/package.json b/packages/@lwc/jest-preset/package.json index a271d2d2..5fd6d3cf 100644 --- a/packages/@lwc/jest-preset/package.json +++ b/packages/@lwc/jest-preset/package.json @@ -1,6 +1,6 @@ { "name": "@lwc/jest-preset", - "version": "16.0.1", + "version": "16.0.2", "description": "Jest preset configuration and stubs to help test LWC", "homepage": "https://lwc.dev/", "repository": { @@ -31,9 +31,9 @@ "jest": "^26 || ^27 || ^28 || ^29" }, "dependencies": { - "@lwc/jest-resolver": "16.0.1", - "@lwc/jest-serializer": "16.0.1", - "@lwc/jest-transformer": "16.0.1" + "@lwc/jest-resolver": "16.0.2", + "@lwc/jest-serializer": "16.0.2", + "@lwc/jest-transformer": "16.0.2" }, "engines": { "node": ">=10" diff --git a/packages/@lwc/jest-resolver/package.json b/packages/@lwc/jest-resolver/package.json index 005d1009..6e0e232e 100644 --- a/packages/@lwc/jest-resolver/package.json +++ b/packages/@lwc/jest-resolver/package.json @@ -1,6 +1,6 @@ { "name": "@lwc/jest-resolver", - "version": "16.0.1", + "version": "16.0.2", "description": "Jest resolver to resolve LWC specific packages", "homepage": "https://lwc.dev/", "repository": { @@ -22,7 +22,7 @@ "/src/index.js" ], "dependencies": { - "@lwc/jest-shared": "16.0.1" + "@lwc/jest-shared": "16.0.2" }, "peerDependencies": { "jest": "^26 || ^27 || ^28 || ^29" diff --git a/packages/@lwc/jest-serializer/package.json b/packages/@lwc/jest-serializer/package.json index 278a7237..1cc3e40a 100644 --- a/packages/@lwc/jest-serializer/package.json +++ b/packages/@lwc/jest-serializer/package.json @@ -1,6 +1,6 @@ { "name": "@lwc/jest-serializer", - "version": "16.0.1", + "version": "16.0.2", "description": "Custom Jest snapshot serializer", "homepage": "https://lwc.dev/", "repository": { @@ -18,7 +18,7 @@ "lwc" ], "dependencies": { - "@lwc/jest-shared": "16.0.1", + "@lwc/jest-shared": "16.0.2", "pretty-format": "^29.7.0" }, "peerDependencies": { diff --git a/packages/@lwc/jest-shared/package.json b/packages/@lwc/jest-shared/package.json index cca804e9..f73132d5 100644 --- a/packages/@lwc/jest-shared/package.json +++ b/packages/@lwc/jest-shared/package.json @@ -1,6 +1,6 @@ { "name": "@lwc/jest-shared", - "version": "16.0.1", + "version": "16.0.2", "description": "Shared internal code for LWC Jest packages", "homepage": "https://lwc.dev/", "repository": { diff --git a/packages/@lwc/jest-transformer/package.json b/packages/@lwc/jest-transformer/package.json index 9ac4848d..28053c97 100644 --- a/packages/@lwc/jest-transformer/package.json +++ b/packages/@lwc/jest-transformer/package.json @@ -1,6 +1,6 @@ { "name": "@lwc/jest-transformer", - "version": "16.0.1", + "version": "16.0.2", "description": "Jest transformer for LWC and engine", "homepage": "https://lwc.dev/", "repository": { @@ -28,7 +28,7 @@ "@babel/plugin-syntax-decorators": "^7.24.1", "@babel/plugin-transform-modules-commonjs": "^7.24.1", "@babel/preset-typescript": "^7.24.1", - "@lwc/jest-shared": "16.0.1", + "@lwc/jest-shared": "16.0.2", "babel-preset-jest": "^29.6.3", "magic-string": "^0.30.9", "semver": "^7.6.0" diff --git a/test/package.json b/test/package.json index e47a5f3e..158f02eb 100644 --- a/test/package.json +++ b/test/package.json @@ -1,6 +1,6 @@ { "name": "test", - "version": "16.0.1", + "version": "16.0.2", "private": "true", "scripts": { "test": "jest"