@vitest/browser 5.0.0-beta.4 → 5.0.0-beta.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/dist/client/.vite/manifest.json +6 -6
- package/dist/client/__vitest_browser__/{defineProperty-C3k2g8Sk.js → defineProperty-WHpdAQXR.js} +44 -1
- package/dist/client/__vitest_browser__/{orchestrator-B44yH1M4.js → orchestrator-bDJB3Bid.js} +44 -31
- package/dist/client/__vitest_browser__/tester-C1kIlbPd.js +2099 -0
- package/dist/client/orchestrator.html +2 -2
- package/dist/client/tester/tester.html +2 -2
- package/dist/client/tester/trace.d.ts +1 -1
- package/dist/index.js +22 -22
- package/dist/state.js +1 -0
- package/dist/types.d.ts +2 -2
- package/package.json +6 -6
- package/dist/client/__vitest__/assets/index-B2jbgabi.js +0 -139
- package/dist/client/__vitest__/assets/index-CEyXAB_I.css +0 -1
- package/dist/client/__vitest__/favicon.ico +0 -0
- package/dist/client/__vitest__/favicon.svg +0 -50
- package/dist/client/__vitest__/index.html +0 -32
- package/dist/client/__vitest_browser__/tester-kAU8uxhk.js +0 -5086
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
{__VITEST_INJECTOR__}
|
|
27
27
|
{__VITEST_ERROR_CATCHER__}
|
|
28
28
|
{__VITEST_SCRIPTS__}
|
|
29
|
-
<script type="module" crossorigin src="/__vitest_browser__/orchestrator-
|
|
30
|
-
<link rel="modulepreload" crossorigin href="/__vitest_browser__/defineProperty-
|
|
29
|
+
<script type="module" crossorigin src="/__vitest_browser__/orchestrator-bDJB3Bid.js"></script>
|
|
30
|
+
<link rel="modulepreload" crossorigin href="/__vitest_browser__/defineProperty-WHpdAQXR.js">
|
|
31
31
|
</head>
|
|
32
32
|
<body>
|
|
33
33
|
<div id="vitest-tester"></div>
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<link rel="icon" href="{__VITEST_FAVICON__}" type="image/svg+xml">
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Vitest Browser Tester</title>
|
|
8
|
-
<script type="module" crossorigin src="/__vitest_browser__/tester-
|
|
9
|
-
<link rel="modulepreload" crossorigin href="/__vitest_browser__/defineProperty-
|
|
8
|
+
<script type="module" crossorigin src="/__vitest_browser__/tester-C1kIlbPd.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/__vitest_browser__/defineProperty-WHpdAQXR.js">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
</body>
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import { isValidApiRequest, isFileServingAllowed, distDir, rolldownVersion, reso
|
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
6
|
import fs, { readFileSync, createReadStream, promises, existsSync } from 'node:fs';
|
|
7
7
|
import { createRequire } from 'node:module';
|
|
8
|
+
import { distClientRoot } from '@vitest/ui';
|
|
8
9
|
import { slash as slash$1, toArray, deepMerge } from '@vitest/utils/helpers';
|
|
9
10
|
import MagicString from 'magic-string';
|
|
10
11
|
import sirv from 'sirv';
|
|
@@ -18,7 +19,7 @@ import { PNG } from 'pngjs';
|
|
|
18
19
|
import { diff } from '@blazediff/core';
|
|
19
20
|
import { WebSocketServer } from 'ws';
|
|
20
21
|
|
|
21
|
-
var version = "5.0.0-beta.
|
|
22
|
+
var version = "5.0.0-beta.5";
|
|
22
23
|
|
|
23
24
|
const _DRIVE_LETTER_START_RE = /^[A-Za-z]:\//;
|
|
24
25
|
function normalizeWindowsPath(input = "") {
|
|
@@ -676,21 +677,13 @@ function slash(path) {
|
|
|
676
677
|
}
|
|
677
678
|
|
|
678
679
|
async function resolveOrchestrator(globalServer, url, res) {
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
if (!
|
|
682
|
-
const contexts = [...globalServer.children].flatMap((p) => [...p.state.orchestrators.keys()]);
|
|
683
|
-
sessionId = contexts.at(-1) ?? "none";
|
|
684
|
-
}
|
|
685
|
-
// it's ok to not have a session here, especially in the preview provider
|
|
686
|
-
// because the user could refresh the page which would remove the session id from the url
|
|
687
|
-
const session = globalServer.vitest._browserSessions.getSession(sessionId);
|
|
688
|
-
const browserProject = session?.project.browser || [...globalServer.children][0];
|
|
689
|
-
if (!browserProject) {
|
|
680
|
+
const sessionId = url.searchParams.get("sessionId");
|
|
681
|
+
const session = sessionId && globalServer.vitest._browserSessions.getSession(sessionId);
|
|
682
|
+
if (!session) {
|
|
690
683
|
return;
|
|
691
684
|
}
|
|
692
|
-
|
|
693
|
-
if (
|
|
685
|
+
const browserProject = session.project.browser;
|
|
686
|
+
if (!browserProject) {
|
|
694
687
|
return;
|
|
695
688
|
}
|
|
696
689
|
const injectorJs = typeof globalServer.injectorJs === "string" ? globalServer.injectorJs : await globalServer.injectorJs;
|
|
@@ -768,7 +761,10 @@ function createOrchestratorMiddleware(parentServer) {
|
|
|
768
761
|
allowIframes(res);
|
|
769
762
|
res.write(html, "utf-8");
|
|
770
763
|
res.end();
|
|
764
|
+
return;
|
|
771
765
|
}
|
|
766
|
+
res.statusCode = 404;
|
|
767
|
+
res.end("Not found");
|
|
772
768
|
};
|
|
773
769
|
}
|
|
774
770
|
|
|
@@ -779,8 +775,8 @@ async function resolveTester(globalServer, url, res, next) {
|
|
|
779
775
|
// but keep the rest of the CSP
|
|
780
776
|
res.setHeader("Content-Security-Policy", csp.replace(/frame-ancestors [^;]+/, "frame-ancestors *"));
|
|
781
777
|
}
|
|
782
|
-
const sessionId = url.searchParams.get("sessionId")
|
|
783
|
-
const session = globalServer.vitest._browserSessions.getSession(sessionId);
|
|
778
|
+
const sessionId = url.searchParams.get("sessionId");
|
|
779
|
+
const session = sessionId && globalServer.vitest._browserSessions.getSession(sessionId);
|
|
784
780
|
if (!session) {
|
|
785
781
|
res.statusCode = 400;
|
|
786
782
|
res.end("Invalid session ID");
|
|
@@ -1063,7 +1059,6 @@ var BrowserPlugin = (parentServer, base = "/") => {
|
|
|
1063
1059
|
"@vitest/browser/client",
|
|
1064
1060
|
"@vitest/utils",
|
|
1065
1061
|
"@vitest/utils/source-map",
|
|
1066
|
-
"@vitest/runner",
|
|
1067
1062
|
"@vitest/spy",
|
|
1068
1063
|
"@vitest/utils/error",
|
|
1069
1064
|
"std-env",
|
|
@@ -1162,7 +1157,7 @@ var BrowserPlugin = (parentServer, base = "/") => {
|
|
|
1162
1157
|
{
|
|
1163
1158
|
name: "vitest:browser:assets",
|
|
1164
1159
|
configureServer(server) {
|
|
1165
|
-
server.middlewares.use("/__vitest__", sirv(
|
|
1160
|
+
server.middlewares.use("/__vitest__", sirv(distClientRoot));
|
|
1166
1161
|
},
|
|
1167
1162
|
resolveId(id) {
|
|
1168
1163
|
if (id.startsWith("/__vitest_browser__/")) {
|
|
@@ -2780,7 +2775,7 @@ class ParentBrowserProject {
|
|
|
2780
2775
|
this.manifest = (async () => {
|
|
2781
2776
|
return JSON.parse(await readFile$1(`${distRoot}/client/.vite/manifest.json`, "utf8"));
|
|
2782
2777
|
})().then((manifest) => this.manifest = manifest);
|
|
2783
|
-
this.orchestratorHtml = (project.config.browser.ui ? readFile$1(resolve(
|
|
2778
|
+
this.orchestratorHtml = (project.config.browser.ui ? readFile$1(resolve(distClientRoot, "index.html"), "utf8") : readFile$1(resolve(distRoot, "client/orchestrator.html"), "utf8")).then((html) => this.orchestratorHtml = html);
|
|
2784
2779
|
this.injectorJs = readFile$1(resolve(distRoot, "client/esm-client-injector.js"), "utf8").then((js) => this.injectorJs = js);
|
|
2785
2780
|
this.errorCatcherUrl = join("/@fs/", resolve(distRoot, "client/error-catcher.js"));
|
|
2786
2781
|
this.matchersUrl = join("/@fs/", distRoot, "expect-element.js");
|
|
@@ -3119,7 +3114,8 @@ function setupBrowserRpc(globalServer, defaultMockerRegistry) {
|
|
|
3119
3114
|
}
|
|
3120
3115
|
if (type === "orchestrator") {
|
|
3121
3116
|
const session = sessions.getSession(sessionId);
|
|
3122
|
-
// it's possible the session was already resolved by the preview provider
|
|
3117
|
+
// it's possible the session was already resolved by the preview provider,
|
|
3118
|
+
// but we still mark the websocket connection when the page reconnects
|
|
3123
3119
|
session?.connected();
|
|
3124
3120
|
}
|
|
3125
3121
|
const project = vitest.getProjectByName(projectName);
|
|
@@ -3128,7 +3124,7 @@ function setupBrowserRpc(globalServer, defaultMockerRegistry) {
|
|
|
3128
3124
|
}
|
|
3129
3125
|
wss.handleUpgrade(request, socket, head, (ws) => {
|
|
3130
3126
|
wss.emit("connection", ws, request);
|
|
3131
|
-
const { rpc, offCancel } = setupClient(project, rpcId, ws);
|
|
3127
|
+
const { rpc, offCancel } = setupClient(project, rpcId, ws, { sessionId });
|
|
3132
3128
|
const state = project.browser.state;
|
|
3133
3129
|
const clients = type === "tester" ? state.testers : state.orchestrators;
|
|
3134
3130
|
clients.set(rpcId, rpc);
|
|
@@ -3167,10 +3163,14 @@ function setupBrowserRpc(globalServer, defaultMockerRegistry) {
|
|
|
3167
3163
|
throw new Error(`Cannot use CDP because browser API write or exec operations are disabled. See https://vitest.dev/config/browser/api.`);
|
|
3168
3164
|
}
|
|
3169
3165
|
}
|
|
3170
|
-
function setupClient(project, rpcId, ws) {
|
|
3166
|
+
function setupClient(project, rpcId, ws, options) {
|
|
3171
3167
|
const mockResolver = new ServerMockResolver(globalServer.vite, { moduleDirectories: project.config?.deps?.moduleDirectories });
|
|
3172
3168
|
const mocker = project.browser?.provider.mocker;
|
|
3173
3169
|
const rpc = createBirpc({
|
|
3170
|
+
onOrchestratorReady() {
|
|
3171
|
+
const sessions = vitest._browserSessions;
|
|
3172
|
+
sessions.getSession(options.sessionId)?.ready();
|
|
3173
|
+
},
|
|
3174
3174
|
async onUnhandledError(error, type) {
|
|
3175
3175
|
if (error && typeof error === "object") {
|
|
3176
3176
|
const _error = error;
|
package/dist/state.js
CHANGED
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { MockedModuleSerialized, ServerIdResolution, ServerMockResolution } from "@vitest/mocker";
|
|
2
|
-
import type { BaselineData, TaskEventPack, TaskResultPack, TestArtifact } from "@vitest/runner";
|
|
3
2
|
import type { BirpcReturn } from "birpc";
|
|
4
|
-
import type { AfterSuiteRunMeta, BrowserTesterOptions, CancelReason, RunnerTestFile, SerializedTestSpecification, SnapshotResult, TestBenchmark, TestExecutionMethod, UserConsoleLog } from "vitest";
|
|
3
|
+
import type { AfterSuiteRunMeta, BaselineData, BrowserTesterOptions, CancelReason, RunnerTestFile, SerializedTestSpecification, SnapshotResult, RunnerTaskEventPack as TaskEventPack, RunnerTaskResultPack as TaskResultPack, TestArtifact, TestBenchmark, TestExecutionMethod, UserConsoleLog } from "vitest";
|
|
5
4
|
import type { MarkOptions } from "vitest/browser";
|
|
6
5
|
export interface WebSocketBrowserHandlers {
|
|
7
6
|
resolveSnapshotPath: (testPath: string) => string;
|
|
@@ -15,6 +14,7 @@ export interface WebSocketBrowserHandlers {
|
|
|
15
14
|
readBenchmarkResult: (relativePath: string) => Promise<BaselineData | null>;
|
|
16
15
|
writeBenchmarkResult: (relativePath: string, data: BaselineData) => Promise<void>;
|
|
17
16
|
onAfterSuiteRun: (meta: AfterSuiteRunMeta) => void;
|
|
17
|
+
onOrchestratorReady: () => void;
|
|
18
18
|
cancelCurrentRun: (reason: CancelReason) => void;
|
|
19
19
|
getCountOfFailedTests: () => number;
|
|
20
20
|
readSnapshotFile: (id: string) => Promise<string | null>;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitest/browser",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.0.0-beta.
|
|
4
|
+
"version": "5.0.0-beta.5",
|
|
5
5
|
"description": "Browser running for Vitest",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"funding": "https://opencollective.com/vitest",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"providers"
|
|
64
64
|
],
|
|
65
65
|
"peerDependencies": {
|
|
66
|
-
"vitest": "5.0.0-beta.
|
|
66
|
+
"vitest": "5.0.0-beta.5"
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
69
|
"@blazediff/core": "1.9.1",
|
|
@@ -72,8 +72,9 @@
|
|
|
72
72
|
"sirv": "^3.0.2",
|
|
73
73
|
"tinyrainbow": "^3.1.0",
|
|
74
74
|
"ws": "^8.19.0",
|
|
75
|
-
"@vitest/mocker": "5.0.0-beta.
|
|
76
|
-
"@vitest/
|
|
75
|
+
"@vitest/mocker": "5.0.0-beta.5",
|
|
76
|
+
"@vitest/ui": "5.0.0-beta.5",
|
|
77
|
+
"@vitest/utils": "5.0.0-beta.5"
|
|
77
78
|
},
|
|
78
79
|
"devDependencies": {
|
|
79
80
|
"@opentelemetry/api": "^1.9.0",
|
|
@@ -87,8 +88,7 @@
|
|
|
87
88
|
"mime": "^4.1.0",
|
|
88
89
|
"pathe": "^2.0.3",
|
|
89
90
|
"rrweb-snapshot": "2.0.0-alpha.20",
|
|
90
|
-
"
|
|
91
|
-
"vitest": "5.0.0-beta.4"
|
|
91
|
+
"vitest": "5.0.0-beta.5"
|
|
92
92
|
},
|
|
93
93
|
"scripts": {
|
|
94
94
|
"typecheck": "tsc -p ./src/client/tsconfig.json --noEmit",
|