@vitest/browser 2.0.4 → 2.0.5
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/context.d.ts +12 -4
- package/dist/client/.vite/manifest.json +1 -1
- package/dist/client/__vitest__/assets/index--EAEh9Ei.js +52 -0
- package/dist/client/__vitest__/index.html +1 -1
- package/dist/client/__vitest_browser__/{tester-BSSDPE9E.js → tester-l8kjusoM.js} +9 -3
- package/dist/client/tester/tester.html +1 -1
- package/dist/context.js +92 -60
- package/dist/index.d.ts +4 -2
- package/dist/index.js +62 -39
- package/package.json +12 -12
- package/dist/client/__vitest__/assets/index--tE7Z8jQ.js +0 -52
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
})();
|
|
23
23
|
</script>
|
|
24
24
|
<!-- !LOAD_METADATA! -->
|
|
25
|
-
<script type="module" crossorigin src="./assets/index--
|
|
25
|
+
<script type="module" crossorigin src="./assets/index--EAEh9Ei.js"></script>
|
|
26
26
|
<link rel="stylesheet" crossorigin href="./assets/index-C0SwoDYm.css">
|
|
27
27
|
</head>
|
|
28
28
|
<body>
|
|
@@ -436,13 +436,19 @@ class VitestBrowserClientMocker {
|
|
|
436
436
|
);
|
|
437
437
|
}
|
|
438
438
|
const ext = extname(resolved.id);
|
|
439
|
-
const url2 = new URL(
|
|
440
|
-
const query = `_vitest_original&ext
|
|
439
|
+
const url2 = new URL(resolved.url, location.href);
|
|
440
|
+
const query = `_vitest_original&ext${ext}`;
|
|
441
441
|
const actualUrl = `${url2.pathname}${url2.search ? `${url2.search}&${query}` : `?${query}`}${url2.hash}`;
|
|
442
442
|
return getBrowserState().wrapModule(() => import(
|
|
443
443
|
/* @vite-ignore */
|
|
444
444
|
actualUrl
|
|
445
|
-
))
|
|
445
|
+
)).then((mod) => {
|
|
446
|
+
if (!resolved.optimized || typeof mod.default === "undefined") {
|
|
447
|
+
return mod;
|
|
448
|
+
}
|
|
449
|
+
const m = mod.default;
|
|
450
|
+
return (m == null ? void 0 : m.__esModule) ? m : { ...typeof m === "object" && !Array.isArray(m) || typeof m === "function" ? m : {}, default: m };
|
|
451
|
+
});
|
|
446
452
|
}
|
|
447
453
|
async importMock(rawId, importer) {
|
|
448
454
|
await this.prepare();
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
<script>{__VITEST_STATE__}</script>
|
|
21
21
|
{__VITEST_ERROR_CATCHER__}
|
|
22
22
|
{__VITEST_SCRIPTS__}
|
|
23
|
-
<script type="module" crossorigin src="/__vitest_browser__/tester-
|
|
23
|
+
<script type="module" crossorigin src="/__vitest_browser__/tester-l8kjusoM.js"></script>
|
|
24
24
|
<link rel="modulepreload" crossorigin href="/__vitest_browser__/preload-helper-Btt6SgIy.js">
|
|
25
25
|
</head>
|
|
26
26
|
<body
|
package/dist/context.js
CHANGED
|
@@ -18,6 +18,22 @@ function convertElementToCssSelector(element) {
|
|
|
18
18
|
}
|
|
19
19
|
return getUniqueCssSelector(element);
|
|
20
20
|
}
|
|
21
|
+
function escapeIdForCSSSelector(id) {
|
|
22
|
+
return id.split("").map((char) => {
|
|
23
|
+
const code = char.charCodeAt(0);
|
|
24
|
+
if (char === " " || char === "#" || char === "." || char === ":" || char === "[" || char === "]" || char === ">" || char === "+" || char === "~" || char === "\\") {
|
|
25
|
+
return `\\${char}`;
|
|
26
|
+
} else if (code >= 65536) {
|
|
27
|
+
return `\\${code.toString(16).toUpperCase().padStart(6, "0")} `;
|
|
28
|
+
} else if (code < 32 || code === 127) {
|
|
29
|
+
return `\\${code.toString(16).toUpperCase().padStart(2, "0")} `;
|
|
30
|
+
} else if (code >= 128) {
|
|
31
|
+
return `\\${code.toString(16).toUpperCase().padStart(2, "0")} `;
|
|
32
|
+
} else {
|
|
33
|
+
return char;
|
|
34
|
+
}
|
|
35
|
+
}).join("");
|
|
36
|
+
}
|
|
21
37
|
function getUniqueCssSelector(el) {
|
|
22
38
|
const path = [];
|
|
23
39
|
let parent;
|
|
@@ -28,9 +44,9 @@ function getUniqueCssSelector(el) {
|
|
|
28
44
|
}
|
|
29
45
|
const tag = el.tagName;
|
|
30
46
|
if (el.id) {
|
|
31
|
-
path.push(`#${el.id}`);
|
|
47
|
+
path.push(`#${escapeIdForCSSSelector(el.id)}`);
|
|
32
48
|
} else if (!el.nextElementSibling && !el.previousElementSibling) {
|
|
33
|
-
path.push(tag);
|
|
49
|
+
path.push(tag.toLowerCase());
|
|
34
50
|
} else {
|
|
35
51
|
let index = 0;
|
|
36
52
|
let sameTagSiblings = 0;
|
|
@@ -45,14 +61,14 @@ function getUniqueCssSelector(el) {
|
|
|
45
61
|
}
|
|
46
62
|
}
|
|
47
63
|
if (sameTagSiblings > 1) {
|
|
48
|
-
path.push(`${tag}:nth-child(${elementIndex})`);
|
|
64
|
+
path.push(`${tag.toLowerCase()}:nth-child(${elementIndex})`);
|
|
49
65
|
} else {
|
|
50
|
-
path.push(tag);
|
|
66
|
+
path.push(tag.toLowerCase());
|
|
51
67
|
}
|
|
52
68
|
}
|
|
53
69
|
el = parent;
|
|
54
70
|
}
|
|
55
|
-
return `${provider === "webdriverio" && hasShadowRoot ? ">>>" : ""}${path.reverse().join(" > ")}
|
|
71
|
+
return `${provider === "webdriverio" && hasShadowRoot ? ">>>" : ""}${path.reverse().join(" > ")}`;
|
|
56
72
|
}
|
|
57
73
|
function getParent(el) {
|
|
58
74
|
const parent = el.parentNode;
|
|
@@ -61,61 +77,77 @@ function getParent(el) {
|
|
|
61
77
|
}
|
|
62
78
|
return parent;
|
|
63
79
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
80
|
+
function createUserEvent() {
|
|
81
|
+
const keyboard = {
|
|
82
|
+
unreleased: []
|
|
83
|
+
};
|
|
84
|
+
return {
|
|
85
|
+
setup() {
|
|
86
|
+
return createUserEvent();
|
|
87
|
+
},
|
|
88
|
+
click(element, options = {}) {
|
|
89
|
+
const css = convertElementToCssSelector(element);
|
|
90
|
+
return triggerCommand("__vitest_click", css, options);
|
|
91
|
+
},
|
|
92
|
+
dblClick(element, options = {}) {
|
|
93
|
+
const css = convertElementToCssSelector(element);
|
|
94
|
+
return triggerCommand("__vitest_dblClick", css, options);
|
|
95
|
+
},
|
|
96
|
+
tripleClick(element, options = {}) {
|
|
97
|
+
const css = convertElementToCssSelector(element);
|
|
98
|
+
return triggerCommand("__vitest_tripleClick", css, options);
|
|
99
|
+
},
|
|
100
|
+
selectOptions(element, value) {
|
|
101
|
+
const values = provider === "webdriverio" ? getWebdriverioSelectOptions(element, value) : getSimpleSelectOptions(element, value);
|
|
102
|
+
const css = convertElementToCssSelector(element);
|
|
103
|
+
return triggerCommand("__vitest_selectOptions", css, values);
|
|
104
|
+
},
|
|
105
|
+
async type(element, text, options = {}) {
|
|
106
|
+
const css = convertElementToCssSelector(element);
|
|
107
|
+
const { unreleased } = await triggerCommand(
|
|
108
|
+
"__vitest_type",
|
|
109
|
+
css,
|
|
110
|
+
text,
|
|
111
|
+
{ ...options, unreleased: keyboard.unreleased }
|
|
112
|
+
);
|
|
113
|
+
keyboard.unreleased = unreleased;
|
|
114
|
+
},
|
|
115
|
+
clear(element) {
|
|
116
|
+
const css = convertElementToCssSelector(element);
|
|
117
|
+
return triggerCommand("__vitest_clear", css);
|
|
118
|
+
},
|
|
119
|
+
tab(options = {}) {
|
|
120
|
+
return triggerCommand("__vitest_tab", options);
|
|
121
|
+
},
|
|
122
|
+
async keyboard(text) {
|
|
123
|
+
const { unreleased } = await triggerCommand(
|
|
124
|
+
"__vitest_keyboard",
|
|
125
|
+
text,
|
|
126
|
+
keyboard
|
|
127
|
+
);
|
|
128
|
+
keyboard.unreleased = unreleased;
|
|
129
|
+
},
|
|
130
|
+
hover(element, options = {}) {
|
|
131
|
+
const css = convertElementToCssSelector(element);
|
|
132
|
+
return triggerCommand("__vitest_hover", css, options);
|
|
133
|
+
},
|
|
134
|
+
unhover(element, options = {}) {
|
|
135
|
+
const css = convertElementToCssSelector(element.ownerDocument.body);
|
|
136
|
+
return triggerCommand("__vitest_hover", css, options);
|
|
137
|
+
},
|
|
138
|
+
// non userEvent events, but still useful
|
|
139
|
+
fill(element, text, options) {
|
|
140
|
+
const css = convertElementToCssSelector(element);
|
|
141
|
+
return triggerCommand("__vitest_fill", css, text, options);
|
|
142
|
+
},
|
|
143
|
+
dragAndDrop(source, target, options = {}) {
|
|
144
|
+
const sourceCss = convertElementToCssSelector(source);
|
|
145
|
+
const targetCss = convertElementToCssSelector(target);
|
|
146
|
+
return triggerCommand("__vitest_dragAndDrop", sourceCss, targetCss, options);
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
const userEvent = createUserEvent();
|
|
119
151
|
function getWebdriverioSelectOptions(element, value) {
|
|
120
152
|
const options = [...element.querySelectorAll("option")];
|
|
121
153
|
const arrayValues = Array.isArray(value) ? value : [value];
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CDPSession, BrowserServerState as BrowserServerState$1, BrowserServerStateContext, BrowserServer as BrowserServer$1, WorkspaceProject, Vite, BrowserProvider, BrowserScript, Vitest, ProcessPool } from 'vitest/node';
|
|
2
2
|
import { Plugin } from 'vitest/config';
|
|
3
3
|
import * as vitest from 'vitest';
|
|
4
|
-
import { File, TaskResultPack, AfterSuiteRunMeta, CancelReason, UserConsoleLog, SnapshotResult,
|
|
4
|
+
import { File, TaskResultPack, AfterSuiteRunMeta, CancelReason, UserConsoleLog, SnapshotResult, SerializedConfig } from 'vitest';
|
|
5
5
|
import { ErrorWithDiff } from '@vitest/utils';
|
|
6
6
|
import { StackTraceParserOptions } from '@vitest/utils/source-map';
|
|
7
7
|
|
|
@@ -38,6 +38,8 @@ interface WebSocketBrowserHandlers {
|
|
|
38
38
|
debug: (...args: string[]) => void;
|
|
39
39
|
resolveId: (id: string, importer?: string) => Promise<{
|
|
40
40
|
id: string;
|
|
41
|
+
url: string;
|
|
42
|
+
optimized: boolean;
|
|
41
43
|
} | null>;
|
|
42
44
|
triggerCommand: <T>(contextId: string, command: string, testPath: string | undefined, payload: unknown[]) => Promise<T>;
|
|
43
45
|
resolveMock: (id: string, importer: string, hasFactory: boolean) => Promise<{
|
|
@@ -111,7 +113,7 @@ declare class BrowserServer implements BrowserServer$1 {
|
|
|
111
113
|
private stackTraceOptions;
|
|
112
114
|
constructor(project: WorkspaceProject, base: string);
|
|
113
115
|
setServer(server: Vite.ViteDevServer): void;
|
|
114
|
-
getSerializableConfig():
|
|
116
|
+
getSerializableConfig(): SerializedConfig;
|
|
115
117
|
resolveTesterUrl(pathname: string): {
|
|
116
118
|
contextId: string;
|
|
117
119
|
testFile: string;
|
package/dist/index.js
CHANGED
|
@@ -525,6 +525,7 @@ function getDepsCacheDir(config) {
|
|
|
525
525
|
|
|
526
526
|
const debug$1 = createDebugger("vitest:browser:api");
|
|
527
527
|
const BROWSER_API_PATH = "/__vitest_browser_api__";
|
|
528
|
+
const VALID_ID_PREFIX = "/@id/";
|
|
528
529
|
function setupBrowserRpc(server) {
|
|
529
530
|
const project = server.project;
|
|
530
531
|
const vite = server.vite;
|
|
@@ -568,7 +569,7 @@ function setupBrowserRpc(server) {
|
|
|
568
569
|
ctx.state.catchError(error, type);
|
|
569
570
|
},
|
|
570
571
|
async onCollected(files) {
|
|
571
|
-
ctx.state.collectFiles(files);
|
|
572
|
+
ctx.state.collectFiles(project, files);
|
|
572
573
|
await ctx.report("onCollected", files);
|
|
573
574
|
},
|
|
574
575
|
async onTaskUpdate(packs) {
|
|
@@ -617,14 +618,34 @@ function setupBrowserRpc(server) {
|
|
|
617
618
|
ctx.cancelCurrentRun(reason);
|
|
618
619
|
},
|
|
619
620
|
async resolveId(id, importer) {
|
|
620
|
-
const
|
|
621
|
+
const resolved = await vite.pluginContainer.resolveId(
|
|
621
622
|
id,
|
|
622
623
|
importer,
|
|
623
624
|
{
|
|
624
625
|
ssr: false
|
|
625
626
|
}
|
|
626
627
|
);
|
|
627
|
-
|
|
628
|
+
if (!resolved) {
|
|
629
|
+
return null;
|
|
630
|
+
}
|
|
631
|
+
const isOptimized = resolved.id.startsWith(withTrailingSlash(vite.config.cacheDir));
|
|
632
|
+
let url;
|
|
633
|
+
const root = vite.config.root;
|
|
634
|
+
if (resolved.id.startsWith(withTrailingSlash(root))) {
|
|
635
|
+
url = resolved.id.slice(root.length);
|
|
636
|
+
} else if (resolved.id !== "/@react-refresh" && isAbsolute(resolved.id) && existsSync(cleanUrl(resolved.id))) {
|
|
637
|
+
url = join("/@fs/", resolved.id);
|
|
638
|
+
} else {
|
|
639
|
+
url = resolved.id;
|
|
640
|
+
}
|
|
641
|
+
if (url[0] !== "." && url[0] !== "/") {
|
|
642
|
+
url = id.startsWith(VALID_ID_PREFIX) ? id : VALID_ID_PREFIX + id.replace("\0", "__x00__");
|
|
643
|
+
}
|
|
644
|
+
return {
|
|
645
|
+
id: resolved.id,
|
|
646
|
+
url,
|
|
647
|
+
optimized: isOptimized
|
|
648
|
+
};
|
|
628
649
|
},
|
|
629
650
|
debug(...args) {
|
|
630
651
|
ctx.logger.console.debug(...args);
|
|
@@ -727,6 +748,12 @@ function stringifyReplace(key, value) {
|
|
|
727
748
|
return value;
|
|
728
749
|
}
|
|
729
750
|
}
|
|
751
|
+
function withTrailingSlash(path) {
|
|
752
|
+
if (path[path.length - 1] !== "/") {
|
|
753
|
+
return `${path}/`;
|
|
754
|
+
}
|
|
755
|
+
return path;
|
|
756
|
+
}
|
|
730
757
|
|
|
731
758
|
class BrowserServerState {
|
|
732
759
|
orchestrators = /* @__PURE__ */ new Map();
|
|
@@ -1050,28 +1077,6 @@ var clickableInputTypes;
|
|
|
1050
1077
|
clickableInputTypes["radio"] = "radio";
|
|
1051
1078
|
})(clickableInputTypes || (clickableInputTypes = {}));
|
|
1052
1079
|
|
|
1053
|
-
const ClipboardStubControl = Symbol('Manage ClipboardSub');
|
|
1054
|
-
function isClipboardStub(clipboard) {
|
|
1055
|
-
return !!(clipboard === null || clipboard === void 0 ? void 0 : clipboard[ClipboardStubControl]);
|
|
1056
|
-
}
|
|
1057
|
-
function resetClipboardStubOnView(window) {
|
|
1058
|
-
if (isClipboardStub(window.navigator.clipboard)) {
|
|
1059
|
-
window.navigator.clipboard[ClipboardStubControl].resetClipboardStub();
|
|
1060
|
-
}
|
|
1061
|
-
}
|
|
1062
|
-
function detachClipboardStubFromView(window) {
|
|
1063
|
-
if (isClipboardStub(window.navigator.clipboard)) {
|
|
1064
|
-
window.navigator.clipboard[ClipboardStubControl].detachClipboardStub();
|
|
1065
|
-
}
|
|
1066
|
-
}
|
|
1067
|
-
const g = globalThis;
|
|
1068
|
-
/* istanbul ignore else */ if (typeof g.afterEach === 'function') {
|
|
1069
|
-
g.afterEach(()=>resetClipboardStubOnView(globalThis.window));
|
|
1070
|
-
}
|
|
1071
|
-
/* istanbul ignore else */ if (typeof g.afterAll === 'function') {
|
|
1072
|
-
g.afterAll(()=>detachClipboardStubFromView(globalThis.window));
|
|
1073
|
-
}
|
|
1074
|
-
|
|
1075
1080
|
var editableInputTypes;
|
|
1076
1081
|
(function(editableInputTypes) {
|
|
1077
1082
|
editableInputTypes["text"] = "text";
|
|
@@ -1402,7 +1407,7 @@ var DOM_KEY_LOCATION;
|
|
|
1402
1407
|
}
|
|
1403
1408
|
];
|
|
1404
1409
|
|
|
1405
|
-
const keyboard = async (context, text) => {
|
|
1410
|
+
const keyboard = async (context, text, state) => {
|
|
1406
1411
|
function focusIframe() {
|
|
1407
1412
|
if (!document.activeElement || document.activeElement.ownerDocument !== document || document.activeElement === document.body) {
|
|
1408
1413
|
window.focus();
|
|
@@ -1414,7 +1419,9 @@ const keyboard = async (context, text) => {
|
|
|
1414
1419
|
} else if (context.provider instanceof WebdriverBrowserProvider) {
|
|
1415
1420
|
await context.browser.execute(focusIframe);
|
|
1416
1421
|
}
|
|
1422
|
+
const pressed = new Set(state.unreleased);
|
|
1417
1423
|
await keyboardImplementation(
|
|
1424
|
+
pressed,
|
|
1418
1425
|
context.provider,
|
|
1419
1426
|
context.contextId,
|
|
1420
1427
|
text,
|
|
@@ -1436,9 +1443,11 @@ const keyboard = async (context, text) => {
|
|
|
1436
1443
|
},
|
|
1437
1444
|
true
|
|
1438
1445
|
);
|
|
1446
|
+
return {
|
|
1447
|
+
unreleased: Array.from(pressed)
|
|
1448
|
+
};
|
|
1439
1449
|
};
|
|
1440
|
-
async function keyboardImplementation(provider, contextId, text, selectAll, skipRelease) {
|
|
1441
|
-
const pressed = /* @__PURE__ */ new Set();
|
|
1450
|
+
async function keyboardImplementation(pressed, provider, contextId, text, selectAll, skipRelease) {
|
|
1442
1451
|
if (provider instanceof PlaywrightBrowserProvider) {
|
|
1443
1452
|
const page = provider.getPage(contextId);
|
|
1444
1453
|
const actions = parseKeyDef(defaultKeyMap, text);
|
|
@@ -1501,7 +1510,8 @@ async function keyboardImplementation(provider, contextId, text, selectAll, skip
|
|
|
1501
1510
|
}
|
|
1502
1511
|
}
|
|
1503
1512
|
}
|
|
1504
|
-
|
|
1513
|
+
const allRelease = keyboard2.toJSON().actions.every((action) => action.type === "keyUp");
|
|
1514
|
+
await keyboard2.perform(allRelease ? false : skipRelease);
|
|
1505
1515
|
}
|
|
1506
1516
|
return {
|
|
1507
1517
|
pressed
|
|
@@ -1510,6 +1520,7 @@ async function keyboardImplementation(provider, contextId, text, selectAll, skip
|
|
|
1510
1520
|
|
|
1511
1521
|
const type = async (context, selector, text, options = {}) => {
|
|
1512
1522
|
const { skipClick = false, skipAutoClose = false } = options;
|
|
1523
|
+
const unreleased = new Set(Reflect.get(options, "unreleased") ?? []);
|
|
1513
1524
|
if (context.provider instanceof PlaywrightBrowserProvider) {
|
|
1514
1525
|
const { iframe } = context;
|
|
1515
1526
|
const element = iframe.locator(`css=${selector}`);
|
|
@@ -1517,6 +1528,7 @@ const type = async (context, selector, text, options = {}) => {
|
|
|
1517
1528
|
await element.focus();
|
|
1518
1529
|
}
|
|
1519
1530
|
await keyboardImplementation(
|
|
1531
|
+
unreleased,
|
|
1520
1532
|
context.provider,
|
|
1521
1533
|
context.contextId,
|
|
1522
1534
|
text,
|
|
@@ -1530,6 +1542,7 @@ const type = async (context, selector, text, options = {}) => {
|
|
|
1530
1542
|
await element.click();
|
|
1531
1543
|
}
|
|
1532
1544
|
await keyboardImplementation(
|
|
1545
|
+
unreleased,
|
|
1533
1546
|
context.provider,
|
|
1534
1547
|
context.contextId,
|
|
1535
1548
|
text,
|
|
@@ -1544,6 +1557,9 @@ const type = async (context, selector, text, options = {}) => {
|
|
|
1544
1557
|
} else {
|
|
1545
1558
|
throw new TypeError(`Provider "${context.provider.name}" does not support typing`);
|
|
1546
1559
|
}
|
|
1560
|
+
return {
|
|
1561
|
+
unreleased: Array.from(unreleased)
|
|
1562
|
+
};
|
|
1547
1563
|
};
|
|
1548
1564
|
|
|
1549
1565
|
const clear = async (context, selector) => {
|
|
@@ -1842,10 +1858,17 @@ function getUserEvent(provider) {
|
|
|
1842
1858
|
return "__userEvent_CDP__";
|
|
1843
1859
|
}
|
|
1844
1860
|
return `{
|
|
1845
|
-
...
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1861
|
+
..._userEventSetup,
|
|
1862
|
+
setup() {
|
|
1863
|
+
const userEvent = __vitest_user_event__.setup()
|
|
1864
|
+
userEvent.setup = this.setup
|
|
1865
|
+
userEvent.fill = this.fill.bind(userEvent)
|
|
1866
|
+
userEvent.dragAndDrop = this.dragAndDrop
|
|
1867
|
+
return userEvent
|
|
1868
|
+
},
|
|
1869
|
+
async fill(element, text) {
|
|
1870
|
+
await this.clear(element)
|
|
1871
|
+
await this.type(element, text)
|
|
1849
1872
|
},
|
|
1850
1873
|
dragAndDrop: async () => {
|
|
1851
1874
|
throw new Error('Provider "preview" does not support dragging elements')
|
|
@@ -1862,7 +1885,9 @@ async function getUserEventImport(provider, resolve2) {
|
|
|
1862
1885
|
}
|
|
1863
1886
|
return `import { userEvent as __vitest_user_event__ } from '${slash(
|
|
1864
1887
|
`/@fs/${resolved.id}`
|
|
1865
|
-
)}'
|
|
1888
|
+
)}'
|
|
1889
|
+
const _userEventSetup = __vitest_user_event__.setup()
|
|
1890
|
+
`;
|
|
1866
1891
|
}
|
|
1867
1892
|
|
|
1868
1893
|
function injectDynamicImport(code, id, parse) {
|
|
@@ -1920,11 +1945,10 @@ async function resolveOrchestrator(server, url, res) {
|
|
|
1920
1945
|
contextId = contexts[contexts.length - 1] ?? "none";
|
|
1921
1946
|
}
|
|
1922
1947
|
const files = server.state.getContext(contextId)?.files ?? [];
|
|
1923
|
-
const config = server.getSerializableConfig();
|
|
1924
1948
|
const injectorJs = typeof server.injectorJs === "string" ? server.injectorJs : await server.injectorJs;
|
|
1925
1949
|
const injector = replacer(injectorJs, {
|
|
1926
1950
|
__VITEST_PROVIDER__: JSON.stringify(server.provider.name),
|
|
1927
|
-
__VITEST_CONFIG__: JSON.stringify(
|
|
1951
|
+
__VITEST_CONFIG__: JSON.stringify(server.getSerializableConfig()),
|
|
1928
1952
|
__VITEST_VITE_CONFIG__: JSON.stringify({
|
|
1929
1953
|
root: server.vite.config.root
|
|
1930
1954
|
}),
|
|
@@ -1983,10 +2007,9 @@ async function resolveTester(server, url, res) {
|
|
|
1983
2007
|
const files = context?.files ?? [];
|
|
1984
2008
|
const method = context?.method ?? "run";
|
|
1985
2009
|
const injectorJs = typeof server.injectorJs === "string" ? server.injectorJs : await server.injectorJs;
|
|
1986
|
-
const config = server.getSerializableConfig();
|
|
1987
2010
|
const injector = replacer(injectorJs, {
|
|
1988
2011
|
__VITEST_PROVIDER__: JSON.stringify(server.provider.name),
|
|
1989
|
-
__VITEST_CONFIG__: JSON.stringify(
|
|
2012
|
+
__VITEST_CONFIG__: JSON.stringify(server.getSerializableConfig()),
|
|
1990
2013
|
__VITEST_FILES__: JSON.stringify(files),
|
|
1991
2014
|
__VITEST_VITE_CONFIG__: JSON.stringify({
|
|
1992
2015
|
root: server.vite.config.root
|
|
@@ -2000,7 +2023,7 @@ async function resolveTester(server, url, res) {
|
|
|
2000
2023
|
const testerScripts = await server.formatScripts(
|
|
2001
2024
|
project.config.browser.testerScripts
|
|
2002
2025
|
);
|
|
2003
|
-
const clientScript = `<script type="module" src="${config.base || "/"}@vite/client"><\/script>`;
|
|
2026
|
+
const clientScript = `<script type="module" src="${server.project.config.base || "/"}@vite/client"><\/script>`;
|
|
2004
2027
|
const stateJs = typeof server.stateJs === "string" ? server.stateJs : await server.stateJs;
|
|
2005
2028
|
const stateScript = `<script type="module">${stateJs}<\/script>`;
|
|
2006
2029
|
server.testerScripts = `${stateScript}${clientScript}${testerScripts}`;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitest/browser",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.5",
|
|
5
5
|
"description": "Browser running for Vitest",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"funding": "https://opencollective.com/vitest",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"peerDependencies": {
|
|
55
55
|
"playwright": "*",
|
|
56
56
|
"webdriverio": "*",
|
|
57
|
-
"vitest": "2.0.
|
|
57
|
+
"vitest": "2.0.5"
|
|
58
58
|
},
|
|
59
59
|
"peerDependenciesMeta": {
|
|
60
60
|
"playwright": {
|
|
@@ -68,30 +68,30 @@
|
|
|
68
68
|
}
|
|
69
69
|
},
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"@testing-library/dom": "^10.
|
|
71
|
+
"@testing-library/dom": "^10.4.0",
|
|
72
72
|
"@testing-library/user-event": "^14.5.2",
|
|
73
73
|
"magic-string": "^0.30.10",
|
|
74
|
-
"msw": "^2.3.
|
|
74
|
+
"msw": "^2.3.2",
|
|
75
75
|
"sirv": "^2.0.4",
|
|
76
76
|
"ws": "^8.18.0",
|
|
77
|
-
"@vitest/utils": "2.0.
|
|
77
|
+
"@vitest/utils": "2.0.5"
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"@testing-library/jest-dom": "^6.4.
|
|
80
|
+
"@testing-library/jest-dom": "^6.4.7",
|
|
81
81
|
"@types/ws": "^8.5.11",
|
|
82
82
|
"@wdio/protocols": "^8.38.0",
|
|
83
83
|
"birpc": "0.2.17",
|
|
84
84
|
"flatted": "^3.3.1",
|
|
85
85
|
"pathe": "^1.1.2",
|
|
86
86
|
"periscopic": "^4.0.2",
|
|
87
|
-
"playwright": "^1.45.
|
|
88
|
-
"playwright-core": "^1.45.
|
|
87
|
+
"playwright": "^1.45.3",
|
|
88
|
+
"playwright-core": "^1.45.3",
|
|
89
89
|
"safaridriver": "^0.1.2",
|
|
90
90
|
"webdriverio": "^8.39.1",
|
|
91
|
-
"@vitest/
|
|
92
|
-
"@vitest/
|
|
93
|
-
"
|
|
94
|
-
"vitest": "2.0.
|
|
91
|
+
"@vitest/runner": "2.0.5",
|
|
92
|
+
"@vitest/ws-client": "2.0.5",
|
|
93
|
+
"vitest": "2.0.5",
|
|
94
|
+
"@vitest/ui": "2.0.5"
|
|
95
95
|
},
|
|
96
96
|
"scripts": {
|
|
97
97
|
"build": "rimraf dist && pnpm build:node && pnpm build:client",
|