@stencil/vitest 1.15.1 → 1.16.1
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.
- package/README.md +11 -7
- package/dist/__tests__/environment.spec.d.ts +2 -0
- package/dist/__tests__/environment.spec.d.ts.map +1 -0
- package/dist/__tests__/environment.spec.js +15 -0
- package/dist/environments/stencil.d.ts +4 -3
- package/dist/environments/stencil.d.ts.map +1 -1
- package/dist/environments/stencil.js +50 -17
- package/dist/testing/html-serializer.d.ts +2 -1
- package/dist/testing/html-serializer.d.ts.map +1 -1
- package/dist/testing/html-serializer.js +3 -2
- package/dist/testing/matchers.d.ts +28 -28
- package/dist/testing/matchers.d.ts.map +1 -1
- package/package.json +13 -9
package/README.md
CHANGED
|
@@ -42,6 +42,8 @@ First-class testing utilities for Stencil components, powered by Vitest.
|
|
|
42
42
|
npm i --save-dev @stencil/vitest vitest
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
+
Requires Node.js `^22.12.0 || ^24.0.0 || >=26.0.0`. Vitest 2, 3, 4, and 5 are supported; Vitest 5 also requires Vite `^6.4.0 || ^7.0.0 || ^8.0.0`. See the [Vitest migration guide](https://vitest.dev/guide/migration) when upgrading an existing project.
|
|
46
|
+
|
|
45
47
|
For browser testing, also install:
|
|
46
48
|
|
|
47
49
|
```bash
|
|
@@ -112,13 +114,15 @@ export default defineVitestConfig({
|
|
|
112
114
|
```typescript
|
|
113
115
|
// vitest-setup.ts
|
|
114
116
|
|
|
115
|
-
// Load
|
|
116
|
-
//
|
|
117
|
-
|
|
117
|
+
// Load your components' lazy-loader build.
|
|
118
|
+
// Stencil v5: dist/loader-bundle/<namespace>/<namespace>.js
|
|
119
|
+
// Stencil v4: dist/<namespace>/<namespace>.esm.js
|
|
120
|
+
await import('./dist/loader-bundle/test-components/test-components.js');
|
|
118
121
|
|
|
119
122
|
export {};
|
|
120
|
-
//
|
|
121
|
-
//
|
|
123
|
+
// To test against a different output target, set `skipInDev: false` on it in your
|
|
124
|
+
// stencil.config (Stencil v4: `buildDist: true`), or run with `--prod`.
|
|
125
|
+
// Development builds skip those outputs otherwise.
|
|
122
126
|
```
|
|
123
127
|
|
|
124
128
|
### 4. Write Tests
|
|
@@ -229,11 +233,11 @@ Spy on component methods, props, and lifecycle hooks to verify behaviour without
|
|
|
229
233
|
>
|
|
230
234
|
> ```diff
|
|
231
235
|
> // vitest-setup.ts
|
|
232
|
-
> - await import('./dist/test-components/test-components.
|
|
236
|
+
> - await import('./dist/loader-bundle/test-components/test-components.js');
|
|
233
237
|
>
|
|
234
238
|
> + import { beforeAll } from 'vitest';
|
|
235
239
|
> + beforeAll(async () => {
|
|
236
|
-
> + await import('./dist/test-components/test-components.
|
|
240
|
+
> + await import('./dist/loader-bundle/test-components/test-components.js');
|
|
237
241
|
> + });
|
|
238
242
|
> ```
|
|
239
243
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/environment.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { expect, it } from 'vitest';
|
|
2
|
+
import environment from '../environments/stencil.js';
|
|
3
|
+
it.each(['mock-doc', 'jsdom', 'happy-dom'])('%s keeps the native Event constructor usable during setup and after teardown', async (domEnvironment) => {
|
|
4
|
+
const target = { Event };
|
|
5
|
+
const { teardown } = await environment.setup(target, { stencil: { domEnvironment } });
|
|
6
|
+
try {
|
|
7
|
+
expect(new target.Event('ready')).toBeInstanceOf(Event);
|
|
8
|
+
expect(target.document.createElement('div').tagName).toBe('DIV');
|
|
9
|
+
}
|
|
10
|
+
finally {
|
|
11
|
+
await teardown(target);
|
|
12
|
+
}
|
|
13
|
+
expect(target.Event).toBe(Event);
|
|
14
|
+
expect(target).not.toHaveProperty('document');
|
|
15
|
+
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { WorkerGlobalState } from 'vitest';
|
|
2
|
+
type Environment = WorkerGlobalState['environment'];
|
|
2
3
|
export interface StencilEnvironmentOptions {
|
|
3
4
|
/**
|
|
4
5
|
* The DOM environment to use for testing
|
|
@@ -23,6 +24,6 @@ export interface StencilEnvironmentOptions {
|
|
|
23
24
|
* })
|
|
24
25
|
* ```
|
|
25
26
|
*/
|
|
26
|
-
declare const
|
|
27
|
-
export default
|
|
27
|
+
declare const environment: Environment;
|
|
28
|
+
export default environment;
|
|
28
29
|
//# sourceMappingURL=stencil.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stencil.d.ts","sourceRoot":"","sources":["../../src/environments/stencil.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stencil.d.ts","sourceRoot":"","sources":["../../src/environments/stencil.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAOhD,KAAK,WAAW,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAmCpD,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,cAAc,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;CACrD;AAQD;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,WAAW,EAAE,WAsGlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -1,17 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
try {
|
|
4
|
-
// Use variable to prevent Vite's static import analysis from failing on older vitest
|
|
5
|
-
const runtimePath = 'vitest/' + 'runtime';
|
|
6
|
-
return (await import(/* @vite-ignore */ runtimePath)).populateGlobal;
|
|
7
|
-
}
|
|
8
|
-
catch {
|
|
9
|
-
return (await import('vitest/environments')).populateGlobal;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { pathToFileURL } from 'node:url';
|
|
12
3
|
import happyDom from './env/happy-dom.js';
|
|
13
4
|
import jsdom from './env/jsdom.js';
|
|
14
5
|
import mockDoc from './env/mock-doc.js';
|
|
6
|
+
const require = createRequire(import.meta.url);
|
|
7
|
+
// Vitest 4 replaced `transformMode` with `viteEnvironment` and warns when the old field is still set.
|
|
8
|
+
const vitestMajor = Number.parseInt(require('vitest/package.json').version, 10);
|
|
9
|
+
const environmentOptions = vitestMajor >= 4 ? { viteEnvironment: 'ssr' } : { transformMode: 'ssr' };
|
|
10
|
+
// populateGlobal lives in vitest/runtime from Vitest 4.1 and in vitest/environments before that (removed in Vitest 5).
|
|
11
|
+
// The specifiers are variables because Vite fails to analyze an entry the installed Vitest lacks.
|
|
12
|
+
// The file URL is a fallback for Vitest 5 on Windows, whose two module runners each mishandle one form:
|
|
13
|
+
// the one that loads environments rejects the URL, and the one that runs test code (where this module
|
|
14
|
+
// ends up when it is imported directly) resolves the bare specifier against the cwd.
|
|
15
|
+
async function getPopulateGlobal() {
|
|
16
|
+
let error;
|
|
17
|
+
for (const entry of ['vitest/runtime', 'vitest/environments']) {
|
|
18
|
+
let resolved;
|
|
19
|
+
try {
|
|
20
|
+
resolved = require.resolve(entry);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
for (const specifier of [entry, pathToFileURL(resolved).href]) {
|
|
26
|
+
try {
|
|
27
|
+
return (await import(/* @vite-ignore */ specifier)).populateGlobal;
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
error ??= e;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
throw new Error('@stencil/vitest: could not load populateGlobal from the installed version of vitest', {
|
|
35
|
+
cause: error,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
15
38
|
const environmentMap = {
|
|
16
39
|
'happy-dom': happyDom,
|
|
17
40
|
jsdom: jsdom,
|
|
@@ -34,9 +57,9 @@ const environmentMap = {
|
|
|
34
57
|
* })
|
|
35
58
|
* ```
|
|
36
59
|
*/
|
|
37
|
-
|
|
60
|
+
const environment = {
|
|
38
61
|
name: 'stencil',
|
|
39
|
-
|
|
62
|
+
...environmentOptions,
|
|
40
63
|
async setup(global, options) {
|
|
41
64
|
const { stencil = {} } = options;
|
|
42
65
|
const domEnvironment = stencil.domEnvironment || 'mock-doc';
|
|
@@ -67,6 +90,14 @@ export default {
|
|
|
67
90
|
if (!win.process.env.NODE_ENV) {
|
|
68
91
|
win.process.env.NODE_ENV = 'test';
|
|
69
92
|
}
|
|
93
|
+
// Vitest 2–4 store values in originals; Vitest 5 stores descriptors.
|
|
94
|
+
// Capture descriptors ourselves so both preserve the native globals.
|
|
95
|
+
const originalDescriptors = Object.getOwnPropertyDescriptors(global);
|
|
96
|
+
const restoreGlobal = (key) => {
|
|
97
|
+
const descriptor = originalDescriptors[key];
|
|
98
|
+
if (descriptor)
|
|
99
|
+
Object.defineProperty(global, key, descriptor);
|
|
100
|
+
};
|
|
70
101
|
// Populate global with window properties
|
|
71
102
|
const populateGlobal = await getPopulateGlobal();
|
|
72
103
|
const { keys, originals } = populateGlobal(global, win, {
|
|
@@ -75,7 +106,7 @@ export default {
|
|
|
75
106
|
// Restore Node's native Event constructor (chai needs this)
|
|
76
107
|
// CustomEvent can stay as mock-doc's version since it's needed for event creation
|
|
77
108
|
if (originals.has('Event')) {
|
|
78
|
-
|
|
109
|
+
restoreGlobal('Event');
|
|
79
110
|
}
|
|
80
111
|
// Create HTMLElement wrapper that captures ownerDocument
|
|
81
112
|
// In Stencil 4.43+, win.HTMLElement returns MockHTMLElement directly which expects
|
|
@@ -83,7 +114,7 @@ export default {
|
|
|
83
114
|
// super() with no args (standard browser behavior). This wrapper bridges the gap.
|
|
84
115
|
const MockHTMLElementBase = global.HTMLElement;
|
|
85
116
|
const doc = win.document;
|
|
86
|
-
|
|
117
|
+
const HTMLElement = class extends MockHTMLElementBase {
|
|
87
118
|
constructor() {
|
|
88
119
|
super(doc, '');
|
|
89
120
|
const observedAttributes = this.constructor.observedAttributes;
|
|
@@ -97,10 +128,11 @@ export default {
|
|
|
97
128
|
}
|
|
98
129
|
}
|
|
99
130
|
};
|
|
131
|
+
Object.defineProperty(global, 'HTMLElement', { value: HTMLElement, writable: true, configurable: true });
|
|
100
132
|
// Remove undefined properties that shadow native globals
|
|
101
133
|
keys.forEach((key) => {
|
|
102
134
|
if (global[key] === undefined && originals.has(key)) {
|
|
103
|
-
|
|
135
|
+
restoreGlobal(key);
|
|
104
136
|
}
|
|
105
137
|
});
|
|
106
138
|
return {
|
|
@@ -111,8 +143,9 @@ export default {
|
|
|
111
143
|
envTeardown();
|
|
112
144
|
// Then clean up populated globals
|
|
113
145
|
keys.forEach((key) => delete global[key]);
|
|
114
|
-
originals.forEach((
|
|
146
|
+
originals.forEach((_, key) => restoreGlobal(key));
|
|
115
147
|
},
|
|
116
148
|
};
|
|
117
149
|
},
|
|
118
150
|
};
|
|
151
|
+
export default environment;
|
|
@@ -21,7 +21,8 @@ export declare function serializeHtml(input: HTMLElement | ShadowRoot | Document
|
|
|
21
21
|
*/
|
|
22
22
|
export declare function prettifyHtml(html: string): string;
|
|
23
23
|
/**
|
|
24
|
-
* Normalize HTML for comparison by removing extra whitespace
|
|
24
|
+
* Normalize HTML for comparison by removing extra whitespace,
|
|
25
|
+
* including whitespace between a tag and its text content
|
|
25
26
|
*/
|
|
26
27
|
export declare function normalizeHtml(html: string): string;
|
|
27
28
|
//# sourceMappingURL=html-serializer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
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;AAiJD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuDjD;AAED
|
|
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;AAiJD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuDjD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
|
@@ -224,8 +224,9 @@ export function prettifyHtml(html) {
|
|
|
224
224
|
return lines.join('\n');
|
|
225
225
|
}
|
|
226
226
|
/**
|
|
227
|
-
* Normalize HTML for comparison by removing extra whitespace
|
|
227
|
+
* Normalize HTML for comparison by removing extra whitespace,
|
|
228
|
+
* including whitespace between a tag and its text content
|
|
228
229
|
*/
|
|
229
230
|
export function normalizeHtml(html) {
|
|
230
|
-
return html.replace(/\s+/g, ' ').replace(/>\s+</g, '
|
|
231
|
+
return html.replace(/\s+/g, ' ').replace(/>\s+/g, '>').replace(/\s+</g, '<').trim();
|
|
231
232
|
}
|
|
@@ -3,57 +3,57 @@
|
|
|
3
3
|
*
|
|
4
4
|
* These extend Vitest's expect with Stencil-specific assertions
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
interface CustomMatchers
|
|
6
|
+
type MatcherResult<T> = T extends {
|
|
7
|
+
toBe: (...args: any[]) => infer R;
|
|
8
|
+
} ? R : unknown;
|
|
9
|
+
interface CustomMatchers {
|
|
10
10
|
/** Asserts element has the specified CSS class. */
|
|
11
|
-
toHaveClass(className: string):
|
|
11
|
+
toHaveClass(className: string): MatcherResult<this>;
|
|
12
12
|
/** Asserts element has all specified CSS classes. */
|
|
13
|
-
toHaveClasses(classNames: string[]):
|
|
13
|
+
toHaveClasses(classNames: string[]): MatcherResult<this>;
|
|
14
14
|
/** Asserts element has exactly the specified CSS classes (no more, no less). */
|
|
15
|
-
toMatchClasses(classNames: string[]):
|
|
15
|
+
toMatchClasses(classNames: string[]): MatcherResult<this>;
|
|
16
16
|
/** Asserts element has the attribute, optionally with a specific value. */
|
|
17
|
-
toHaveAttribute(attribute: string, value?: string):
|
|
17
|
+
toHaveAttribute(attribute: string, value?: string): MatcherResult<this>;
|
|
18
18
|
/** Asserts element attribute equals the expected value exactly. */
|
|
19
|
-
toEqualAttribute(attribute: string, value: string):
|
|
19
|
+
toEqualAttribute(attribute: string, value: string): MatcherResult<this>;
|
|
20
20
|
/** Asserts element has all specified attributes with exact values. */
|
|
21
|
-
toEqualAttributes(expectedAttrs: Record<string, string>):
|
|
22
|
-
/** Asserts element has the property, optionally with a specific value. */
|
|
23
|
-
toHaveProperty(property: string, value?: any): R;
|
|
21
|
+
toEqualAttributes(expectedAttrs: Record<string, string>): MatcherResult<this>;
|
|
24
22
|
/** Asserts element's text content (including shadow DOM) contains the specified text. */
|
|
25
|
-
toHaveTextContent(text: string):
|
|
23
|
+
toHaveTextContent(text: string): MatcherResult<this>;
|
|
26
24
|
/** Asserts element's light DOM text content contains the specified text. */
|
|
27
|
-
toHaveLightTextContent(text: string):
|
|
25
|
+
toHaveLightTextContent(text: string): MatcherResult<this>;
|
|
28
26
|
/** Asserts element's trimmed text content (including shadow DOM) equals the expected text exactly. */
|
|
29
|
-
toEqualText(expectedText: string):
|
|
27
|
+
toEqualText(expectedText: string): MatcherResult<this>;
|
|
30
28
|
/** Asserts element's trimmed light DOM text content (excluding shadow DOM) equals the expected text exactly. */
|
|
31
|
-
toEqualLightText(expectedText: string):
|
|
29
|
+
toEqualLightText(expectedText: string): MatcherResult<this>;
|
|
32
30
|
/** Asserts element has an attached shadow root. */
|
|
33
|
-
toHaveShadowRoot():
|
|
31
|
+
toHaveShadowRoot(): MatcherResult<this>;
|
|
34
32
|
/** Asserts element's serialized HTML (including shadow DOM) matches expected HTML. */
|
|
35
|
-
toEqualHtml(expectedHtml: string):
|
|
33
|
+
toEqualHtml(expectedHtml: string): MatcherResult<this>;
|
|
36
34
|
/** Asserts element's light DOM HTML (excluding shadow DOM internals) matches expected HTML. */
|
|
37
|
-
toEqualLightHtml(expectedHtml: string):
|
|
35
|
+
toEqualLightHtml(expectedHtml: string): MatcherResult<this>;
|
|
38
36
|
/** Asserts event spy has received at least one event. */
|
|
39
|
-
toHaveReceivedEvent():
|
|
37
|
+
toHaveReceivedEvent(): MatcherResult<this>;
|
|
40
38
|
/** Asserts event spy has received exactly the specified number of events. */
|
|
41
|
-
toHaveReceivedEventTimes(count: number):
|
|
39
|
+
toHaveReceivedEventTimes(count: number): MatcherResult<this>;
|
|
42
40
|
/** Asserts event spy's last received event has the expected detail. */
|
|
43
|
-
toHaveReceivedEventDetail(detail: any):
|
|
41
|
+
toHaveReceivedEventDetail(detail: any): MatcherResult<this>;
|
|
44
42
|
/** Asserts event spy's first received event has the expected detail. */
|
|
45
|
-
toHaveFirstReceivedEventDetail(detail: any):
|
|
43
|
+
toHaveFirstReceivedEventDetail(detail: any): MatcherResult<this>;
|
|
46
44
|
/** Asserts event spy's last received event has the expected detail. */
|
|
47
|
-
toHaveLastReceivedEventDetail(detail: any):
|
|
45
|
+
toHaveLastReceivedEventDetail(detail: any): MatcherResult<this>;
|
|
48
46
|
/** Asserts event spy's nth received event (0-indexed) has the expected detail. */
|
|
49
|
-
toHaveNthReceivedEventDetail(index: number, detail: any):
|
|
47
|
+
toHaveNthReceivedEventDetail(index: number, detail: any): MatcherResult<this>;
|
|
50
48
|
}
|
|
51
49
|
declare module 'vitest' {
|
|
52
|
-
interface Assertion
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
interface Assertion extends CustomMatchers {
|
|
51
|
+
toHaveClass(className: string): MatcherResult<this>;
|
|
52
|
+
toHaveAttribute(attribute: string, value?: string): MatcherResult<this>;
|
|
53
|
+
toHaveTextContent(text: string): MatcherResult<this>;
|
|
55
54
|
}
|
|
56
55
|
interface AsymmetricMatchersContaining extends CustomMatchers {
|
|
56
|
+
toHaveProperty(property: string, value?: any): unknown;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../../src/testing/matchers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../../src/testing/matchers.ts"],"names":[],"mappings":"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"}
|
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.
|
|
7
|
+
"version": "1.16.1",
|
|
8
8
|
"description": "First-class testing utilities for Stencil design systems with Vitest",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"type": "module",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
},
|
|
78
78
|
"peerDependencies": {
|
|
79
79
|
"@stencil/core": "^4.0.0 || >=5.0.0-alpha.0 <5.0.0-next.0 || ^5.0.0",
|
|
80
|
-
"vitest": "^4.0.0 || ^3.0.0 || ^2.0.0"
|
|
80
|
+
"vitest": "^5.0.0 || ^4.0.0 || ^3.0.0 || ^2.0.0"
|
|
81
81
|
},
|
|
82
82
|
"peerDependenciesMeta": {
|
|
83
83
|
"@playwright/test": {
|
|
@@ -111,34 +111,37 @@
|
|
|
111
111
|
"dependencies": {
|
|
112
112
|
"jiti": "^2.6.1",
|
|
113
113
|
"local-pkg": "^1.1.2",
|
|
114
|
-
"vitest-environment-stencil": "1.
|
|
114
|
+
"vitest-environment-stencil": "1.16.1"
|
|
115
115
|
},
|
|
116
116
|
"devDependencies": {
|
|
117
117
|
"@eslint/js": "^9.39.2",
|
|
118
118
|
"@semantic-release/changelog": "^6.0.3",
|
|
119
119
|
"@semantic-release/exec": "^6.0.3",
|
|
120
120
|
"@semantic-release/git": "^10.0.1",
|
|
121
|
-
"@stencil/core": "^4.0.0 || >=5.0.0-alpha.0 <5.0.0-next.0 || ^5.0.0",
|
|
122
121
|
"@stencil/cli": "^5.0.0 || >=5.0.0-alpha.0 <5.0.0-next.0",
|
|
122
|
+
"@stencil/core": "^4.0.0 || >=5.0.0-alpha.0 <5.0.0-next.0 || ^5.0.0",
|
|
123
123
|
"@types/node": "24.10.4",
|
|
124
124
|
"@typescript-eslint/eslint-plugin": "^8.50.0",
|
|
125
125
|
"@typescript-eslint/parser": "^8.50.0",
|
|
126
|
-
"@vitest/
|
|
126
|
+
"@vitest/browser": "^5.0.3",
|
|
127
|
+
"@vitest/coverage-v8": "^5.0.3",
|
|
127
128
|
"eslint": "^9.39.2",
|
|
129
|
+
"happy-dom": "^20.0.11",
|
|
128
130
|
"installed-check": "^9.3.0",
|
|
131
|
+
"jsdom": "^27.3.0",
|
|
129
132
|
"knip": "^5.76.3",
|
|
130
133
|
"prettier": "^3.7.4",
|
|
131
134
|
"semantic-release": "^25.0.2",
|
|
132
135
|
"typescript": "~5.8.3",
|
|
133
|
-
"vitest": "^
|
|
136
|
+
"vitest": "^5.0.3"
|
|
134
137
|
},
|
|
135
138
|
"engines": {
|
|
136
|
-
"node": "^
|
|
139
|
+
"node": "^22.12.0 || ^24.0.0 || >=26.0.0"
|
|
137
140
|
},
|
|
138
141
|
"scripts": {
|
|
139
142
|
"build": "tsc && tsc -p tsconfig.bin.json && cp src/globals.d.ts dist/globals.d.ts",
|
|
140
143
|
"dev": "tsc --watch",
|
|
141
|
-
"test:e2e": "pnpm --filter test-project test",
|
|
144
|
+
"test:e2e": "pnpm --filter test-project --filter test-env-comments test",
|
|
142
145
|
"test:unit": "vitest run",
|
|
143
146
|
"test:unit:watch": "vitest",
|
|
144
147
|
"test:engines": "pnpm installed-check --no-workspaces --ignore-dev",
|
|
@@ -149,6 +152,7 @@
|
|
|
149
152
|
"knip": "knip",
|
|
150
153
|
"quality": "pnpm format && pnpm lint && pnpm knip",
|
|
151
154
|
"quality:fix": "pnpm format:fix && pnpm lint:fix && pnpm knip",
|
|
152
|
-
"release": "semantic-release"
|
|
155
|
+
"release": "semantic-release",
|
|
156
|
+
"test:types": "tsc -p tsconfig.types.json"
|
|
153
157
|
}
|
|
154
158
|
}
|