@stencil/vitest 1.1.16 → 1.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-serializer.d.ts","sourceRoot":"","sources":["../../src/testing/html-serializer.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"html-serializer.d.ts","sourceRoot":"","sources":["../../src/testing/html-serializer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkCH,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,gBAAgB,GAAG,MAAM,EAC3D,OAAO,GAAE,gBAAqB,GAC7B,MAAM,CAWR;AAuID;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkDjD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
* Shared HTML serialization utilities for Stencil components
|
|
3
3
|
* Used by both matchers and snapshot serializers
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* HTML void elements (self-closing tags) that don't have closing tags
|
|
7
|
+
*/
|
|
8
|
+
const VOID_ELEMENTS = new Set([
|
|
9
|
+
'area',
|
|
10
|
+
'base',
|
|
11
|
+
'br',
|
|
12
|
+
'col',
|
|
13
|
+
'embed',
|
|
14
|
+
'hr',
|
|
15
|
+
'img',
|
|
16
|
+
'input',
|
|
17
|
+
'link',
|
|
18
|
+
'meta',
|
|
19
|
+
'param',
|
|
20
|
+
'source',
|
|
21
|
+
'track',
|
|
22
|
+
'wbr',
|
|
23
|
+
]);
|
|
5
24
|
/**
|
|
6
25
|
* Serialize HTML element to string
|
|
7
26
|
* Works across mock-doc, jsdom, and happy-dom environments
|
|
@@ -52,12 +71,18 @@ function serializeElementWithShadow(element, excludeStyles, serializeShadowRoot
|
|
|
52
71
|
if (elem.attributes) {
|
|
53
72
|
for (let i = 0; i < elem.attributes.length; i++) {
|
|
54
73
|
const attr = elem.attributes[i];
|
|
74
|
+
// Handle namespaced attributes (e.g., xlink:href)
|
|
75
|
+
// Use prefix + localName if available, otherwise fall back to name
|
|
76
|
+
let attrName = attr.name;
|
|
77
|
+
if (attr.prefix && attr.localName) {
|
|
78
|
+
attrName = `${attr.prefix}:${attr.localName}`;
|
|
79
|
+
}
|
|
55
80
|
// Boolean attributes (empty string value) should not have ="value"
|
|
56
81
|
if (attr.value === '') {
|
|
57
|
-
html += ` ${
|
|
82
|
+
html += ` ${attrName}`;
|
|
58
83
|
}
|
|
59
84
|
else {
|
|
60
|
-
html += ` ${
|
|
85
|
+
html += ` ${attrName}="${attr.value}"`;
|
|
61
86
|
}
|
|
62
87
|
}
|
|
63
88
|
}
|
|
@@ -69,7 +94,15 @@ function serializeElementWithShadow(element, excludeStyles, serializeShadowRoot
|
|
|
69
94
|
const hasStencilPolyfill = serializeShadowRoot && '__childNodes' in stencilElem && stencilElem.__childNodes;
|
|
70
95
|
if (hasShadowRoot) {
|
|
71
96
|
// Use mock:shadow-root format to match mock-doc's output
|
|
72
|
-
|
|
97
|
+
// Include shadow root mode (open/closed) and other properties
|
|
98
|
+
const shadowRoot = elem.shadowRoot;
|
|
99
|
+
let shadowRootTag = '<mock:shadow-root';
|
|
100
|
+
// Add delegatesFocus if true
|
|
101
|
+
if (shadowRoot.delegatesFocus) {
|
|
102
|
+
shadowRootTag += ' shadowrootdelegatesfocus';
|
|
103
|
+
}
|
|
104
|
+
shadowRootTag += '>';
|
|
105
|
+
html += shadowRootTag;
|
|
73
106
|
// Serialize shadow DOM children
|
|
74
107
|
const shadowChildren = Array.from(elem.shadowRoot.childNodes);
|
|
75
108
|
for (const child of shadowChildren) {
|
|
@@ -120,7 +153,10 @@ function serializeElementWithShadow(element, excludeStyles, serializeShadowRoot
|
|
|
120
153
|
html += `<!--${child.textContent}-->`;
|
|
121
154
|
}
|
|
122
155
|
}
|
|
123
|
-
|
|
156
|
+
// Void elements don't have closing tags
|
|
157
|
+
if (!VOID_ELEMENTS.has(tagName)) {
|
|
158
|
+
html += `</${tagName}>`;
|
|
159
|
+
}
|
|
124
160
|
return html;
|
|
125
161
|
}
|
|
126
162
|
/**
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"type": "git",
|
|
5
5
|
"url": "https://github.com/stenciljs/vitest"
|
|
6
6
|
},
|
|
7
|
-
"version": "1.1.
|
|
7
|
+
"version": "1.1.18",
|
|
8
8
|
"description": "First-class testing utilities for Stencil design systems with Vitest",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"type": "module",
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"dependencies": {
|
|
98
98
|
"jiti": "^2.6.1",
|
|
99
99
|
"local-pkg": "^1.1.2",
|
|
100
|
-
"vitest-environment-stencil": "1.1.
|
|
100
|
+
"vitest-environment-stencil": "1.1.18"
|
|
101
101
|
},
|
|
102
102
|
"devDependencies": {
|
|
103
103
|
"@eslint/js": "^9.39.2",
|