supercov 0.0.2 → 0.0.3
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/LICENSE +21 -0
- package/README.md +115 -20
- package/bin/supercov.js +10 -0
- package/dist/atomic.d.ts +6 -0
- package/dist/atomic.d.ts.map +1 -0
- package/dist/atomic.js +47 -0
- package/dist/atomic.js.map +1 -0
- package/dist/cli.js +431 -214
- package/dist/cli.js.map +1 -1
- package/dist/directInstrumenter.d.ts +8 -0
- package/dist/directInstrumenter.d.ts.map +1 -0
- package/dist/directInstrumenter.js +70 -0
- package/dist/directInstrumenter.js.map +1 -0
- package/dist/instrumenter.d.ts.map +1 -1
- package/dist/instrumenter.js +251 -41
- package/dist/instrumenter.js.map +1 -1
- package/dist/integrity.d.ts.map +1 -1
- package/dist/integrity.js +27 -0
- package/dist/integrity.js.map +1 -1
- package/dist/launchSupervisor.d.ts +24 -0
- package/dist/launchSupervisor.d.ts.map +1 -0
- package/dist/launchSupervisor.js +397 -0
- package/dist/launchSupervisor.js.map +1 -0
- package/dist/playwright.d.ts +0 -4
- package/dist/playwright.d.ts.map +1 -1
- package/dist/playwright.js +33 -17
- package/dist/playwright.js.map +1 -1
- package/dist/playwrightReporter.d.ts.map +1 -1
- package/dist/playwrightReporter.js +3 -2
- package/dist/playwrightReporter.js.map +1 -1
- package/dist/project.d.ts +5 -2
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +192 -27
- package/dist/project.js.map +1 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +1 -0
- package/dist/query.js.map +1 -1
- package/dist/register.mjs +18 -13
- package/dist/register.mjs.map +1 -1
- package/dist/reporter.d.ts +4 -1
- package/dist/reporter.d.ts.map +1 -1
- package/dist/reporter.js +13 -11
- package/dist/reporter.js.map +1 -1
- package/dist/resolve-loader.d.mts.map +1 -1
- package/dist/resolve-loader.mjs +11 -3
- package/dist/resolve-loader.mjs.map +1 -1
- package/dist/runtime.d.ts +2 -2
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +35 -7
- package/dist/runtime.js.map +1 -1
- package/dist/transport.d.ts +2 -0
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +2 -0
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vitePlugin.d.ts.map +1 -1
- package/dist/vitePlugin.js +4 -3
- package/dist/vitePlugin.js.map +1 -1
- package/dist/vitest.js +3 -2
- package/dist/vitest.js.map +1 -1
- package/dist/vitestReporter.d.ts +17 -2
- package/dist/vitestReporter.d.ts.map +1 -1
- package/dist/vitestReporter.js +51 -2
- package/dist/vitestReporter.js.map +1 -1
- package/dist/workspace.d.ts +46 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +284 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +19 -5
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
import childProcess from "node:child_process";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { appendFileSync, mkdirSync } from "node:fs";
|
|
4
|
+
import Module, { syncBuiltinESMExports } from "node:module";
|
|
5
|
+
import { dirname, isAbsolute, relative, resolve } from "node:path";
|
|
6
|
+
import { pathToFileURL } from "node:url";
|
|
7
|
+
const HOST_PATH_KEYS = ["hostPath", "source", "src", "localPath"];
|
|
8
|
+
const GUEST_PATH_KEYS = [
|
|
9
|
+
"guestPath",
|
|
10
|
+
"target",
|
|
11
|
+
"destination",
|
|
12
|
+
"containerPath",
|
|
13
|
+
];
|
|
14
|
+
const CACHE_IDENTITY = /^(?:warmup|snapshot|cache)(?:key|tag|id)$/i;
|
|
15
|
+
const patchedBuilders = new WeakSet();
|
|
16
|
+
const exportedValues = new WeakSet();
|
|
17
|
+
const capabilityProxies = new WeakMap();
|
|
18
|
+
let installed = false;
|
|
19
|
+
let remoteLaunchSequence = 0;
|
|
20
|
+
function executionLogPath(path) {
|
|
21
|
+
const shard = (process.env["SUPERCOV_EXECUTION_LOG_SHARD"] ?? "host").replace(/[^A-Za-z0-9_.-]/g, "_");
|
|
22
|
+
const suffix = `.${shard}.${process.pid}.jsonl`;
|
|
23
|
+
return path.endsWith(".jsonl")
|
|
24
|
+
? `${path.slice(0, -".jsonl".length)}${suffix}`
|
|
25
|
+
: `${path}${suffix}`;
|
|
26
|
+
}
|
|
27
|
+
function record(value) {
|
|
28
|
+
const configuredPath = process.env["SUPERCOV_EXECUTION_LOG"];
|
|
29
|
+
if (!configuredPath)
|
|
30
|
+
return;
|
|
31
|
+
const path = executionLogPath(configuredPath);
|
|
32
|
+
try {
|
|
33
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
34
|
+
appendFileSync(path, `${JSON.stringify({
|
|
35
|
+
at: new Date().toISOString(),
|
|
36
|
+
pid: process.pid,
|
|
37
|
+
ppid: process.ppid,
|
|
38
|
+
...value,
|
|
39
|
+
})}\n`);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Process tracing is diagnostic and must never change test behavior.
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function safeArgument(value) {
|
|
46
|
+
if (value.length <= 160 && !value.includes("\n") && !value.includes("\r"))
|
|
47
|
+
return value;
|
|
48
|
+
return {
|
|
49
|
+
bytes: Buffer.byteLength(value),
|
|
50
|
+
sha256: createHash("sha256").update(value).digest("hex"),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function commandSummary(argv) {
|
|
54
|
+
return {
|
|
55
|
+
executable: argv[0] ? safeArgument(argv[0]) : undefined,
|
|
56
|
+
arguments: argv.slice(1, 9).map(safeArgument),
|
|
57
|
+
argumentCount: Math.max(0, argv.length - 1),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function stringProperty(value, keys) {
|
|
61
|
+
for (const key of keys) {
|
|
62
|
+
const candidate = value[key];
|
|
63
|
+
if (typeof candidate === "string" && candidate.length > 0)
|
|
64
|
+
return candidate;
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
function containsPath(parent, child) {
|
|
69
|
+
const local = relative(resolve(parent), resolve(child));
|
|
70
|
+
if (local === "")
|
|
71
|
+
return "";
|
|
72
|
+
if (local.startsWith("..") || isAbsolute(local))
|
|
73
|
+
return undefined;
|
|
74
|
+
return local;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Find a host-to-guest mount that makes the isolated project visible to a
|
|
78
|
+
* remote executor. This deliberately recognizes data shape, not a provider or
|
|
79
|
+
* package name.
|
|
80
|
+
*/
|
|
81
|
+
export function discoverWorkspaceMapping(value, hostRoot, depth = 0) {
|
|
82
|
+
if (!value || typeof value !== "object" || depth > 5)
|
|
83
|
+
return undefined;
|
|
84
|
+
if (Array.isArray(value)) {
|
|
85
|
+
for (const item of value.slice(0, 200)) {
|
|
86
|
+
const mapping = discoverWorkspaceMapping(item, hostRoot, depth + 1);
|
|
87
|
+
if (mapping)
|
|
88
|
+
return mapping;
|
|
89
|
+
}
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
const candidate = value;
|
|
93
|
+
const hostPath = stringProperty(candidate, HOST_PATH_KEYS);
|
|
94
|
+
const guestPath = stringProperty(candidate, GUEST_PATH_KEYS);
|
|
95
|
+
if (hostPath && guestPath) {
|
|
96
|
+
const local = containsPath(hostPath, hostRoot);
|
|
97
|
+
if (local !== undefined) {
|
|
98
|
+
return {
|
|
99
|
+
hostRoot: resolve(hostRoot),
|
|
100
|
+
guestRoot: local ? resolve(guestPath, local) : resolve(guestPath),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
for (const nested of Object.values(candidate).slice(0, 200)) {
|
|
105
|
+
const mapping = discoverWorkspaceMapping(nested, hostRoot, depth + 1);
|
|
106
|
+
if (mapping)
|
|
107
|
+
return mapping;
|
|
108
|
+
}
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
function scopeCacheValue(value, fingerprint) {
|
|
112
|
+
const suffix = `supercov-${fingerprint.slice(0, 20)}`;
|
|
113
|
+
return value.includes(suffix) ? value : `${value}-${suffix}`;
|
|
114
|
+
}
|
|
115
|
+
/** Clone only branches that contain a recognized cache/snapshot identity. */
|
|
116
|
+
export function scopeCapabilityCache(value, fingerprint, depth = 0) {
|
|
117
|
+
if (!value || typeof value !== "object" || depth > 5)
|
|
118
|
+
return { value, changed: [] };
|
|
119
|
+
if (Array.isArray(value)) {
|
|
120
|
+
const changed = [];
|
|
121
|
+
let cloned;
|
|
122
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
123
|
+
const nested = scopeCapabilityCache(value[index], fingerprint, depth + 1);
|
|
124
|
+
if (nested.changed.length > 0) {
|
|
125
|
+
cloned ??= [...value];
|
|
126
|
+
cloned[index] = nested.value;
|
|
127
|
+
changed.push(...nested.changed.map((path) => `[${index}]${path}`));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return { value: cloned ?? value, changed };
|
|
131
|
+
}
|
|
132
|
+
const source = value;
|
|
133
|
+
let clone;
|
|
134
|
+
const changed = [];
|
|
135
|
+
for (const key of Reflect.ownKeys(source)) {
|
|
136
|
+
if (typeof key !== "string")
|
|
137
|
+
continue;
|
|
138
|
+
const nestedValue = source[key];
|
|
139
|
+
if (CACHE_IDENTITY.test(key) && typeof nestedValue === "string") {
|
|
140
|
+
clone ??= { ...source };
|
|
141
|
+
clone[key] = scopeCacheValue(nestedValue, fingerprint);
|
|
142
|
+
changed.push(key);
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
const nested = scopeCapabilityCache(nestedValue, fingerprint, depth + 1);
|
|
146
|
+
if (nested.changed.length > 0) {
|
|
147
|
+
clone ??= { ...source };
|
|
148
|
+
clone[key] = nested.value;
|
|
149
|
+
changed.push(...nested.changed.map((path) => `${key}.${path}`));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return { value: clone ?? value, changed };
|
|
153
|
+
}
|
|
154
|
+
function replaceRoot(value, mapping) {
|
|
155
|
+
const hostRoot = mapping.hostRoot.replaceAll("\\", "/").replace(/\/$/, "");
|
|
156
|
+
const guestRoot = mapping.guestRoot.replaceAll("\\", "/").replace(/\/$/, "");
|
|
157
|
+
const normalized = value.replaceAll("\\", "/");
|
|
158
|
+
const hostUrl = pathToFileURL(mapping.hostRoot).href.replace(/\/$/, "");
|
|
159
|
+
const guestUrl = pathToFileURL(mapping.guestRoot).href.replace(/\/$/, "");
|
|
160
|
+
if (normalized === hostRoot)
|
|
161
|
+
return guestRoot;
|
|
162
|
+
if (normalized.startsWith(`${hostRoot}/`))
|
|
163
|
+
return `${guestRoot}/${normalized.slice(hostRoot.length + 1)}`;
|
|
164
|
+
if (value === hostUrl)
|
|
165
|
+
return guestUrl;
|
|
166
|
+
if (value.startsWith(`${hostUrl}/`))
|
|
167
|
+
return `${guestUrl}/${value.slice(hostUrl.length + 1)}`;
|
|
168
|
+
return value;
|
|
169
|
+
}
|
|
170
|
+
function appendNodeImport(existing, registerUrl) {
|
|
171
|
+
const addition = `--import=${registerUrl}`;
|
|
172
|
+
if (existing?.includes(addition))
|
|
173
|
+
return existing;
|
|
174
|
+
return [existing, addition].filter(Boolean).join(" ");
|
|
175
|
+
}
|
|
176
|
+
function coverageVariables(environment) {
|
|
177
|
+
return Object.fromEntries(Object.entries(environment).filter(([key, value]) => key.startsWith("SUPERCOV_") && value !== undefined));
|
|
178
|
+
}
|
|
179
|
+
/** Build an environment whose paths remain valid inside the discovered VM. */
|
|
180
|
+
export function guestCoverageEnvironment(mapping, coverageEnvironment = process.env, existingEnvironment = {}) {
|
|
181
|
+
const translated = Object.fromEntries(Object.entries(coverageVariables(coverageEnvironment)).map(([key, value]) => [
|
|
182
|
+
key,
|
|
183
|
+
value === undefined ? value : replaceRoot(value, mapping),
|
|
184
|
+
]));
|
|
185
|
+
const registerUrl = pathToFileURL(resolve(mapping.guestRoot, ".supercov/register.mjs")).href;
|
|
186
|
+
return {
|
|
187
|
+
...existingEnvironment,
|
|
188
|
+
...translated,
|
|
189
|
+
SUPERCOV_PROJECT_ROOT: mapping.guestRoot,
|
|
190
|
+
SUPERCOV_CJS_INTERCEPT: "1",
|
|
191
|
+
NODE_OPTIONS: appendNodeImport(existingEnvironment.NODE_OPTIONS, registerUrl),
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
function launchOptions(value) {
|
|
195
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
196
|
+
return false;
|
|
197
|
+
const candidate = value;
|
|
198
|
+
return ((Array.isArray(candidate.argv) &&
|
|
199
|
+
candidate.argv.every((item) => typeof item === "string")) ||
|
|
200
|
+
(Array.isArray(candidate.cmd) &&
|
|
201
|
+
candidate.cmd.every((item) => typeof item === "string")) ||
|
|
202
|
+
typeof candidate.command === "string");
|
|
203
|
+
}
|
|
204
|
+
function launchArgv(value) {
|
|
205
|
+
if (Array.isArray(value.argv))
|
|
206
|
+
return value.argv;
|
|
207
|
+
if (Array.isArray(value.cmd))
|
|
208
|
+
return value.cmd;
|
|
209
|
+
return [String(value.command)];
|
|
210
|
+
}
|
|
211
|
+
function injectRemoteLaunch(options, mapping) {
|
|
212
|
+
const environmentKey = "environment" in options && !("env" in options) ? "environment" : "env";
|
|
213
|
+
const existing = options[environmentKey];
|
|
214
|
+
return {
|
|
215
|
+
...options,
|
|
216
|
+
[environmentKey]: guestCoverageEnvironment(mapping, {
|
|
217
|
+
...process.env,
|
|
218
|
+
SUPERCOV_EXECUTION_LOG_SHARD: `${process.pid}-${++remoteLaunchSequence}`,
|
|
219
|
+
}, existing && typeof existing === "object"
|
|
220
|
+
? existing
|
|
221
|
+
: {}),
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
function wrapResult(value, mapping) {
|
|
225
|
+
if (value instanceof Promise)
|
|
226
|
+
return value.then((result) => wrapCapabilityObject(result, mapping));
|
|
227
|
+
return wrapCapabilityObject(value, mapping);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Follow an opaque image/pool/machine-style object graph. Any method accepting
|
|
231
|
+
* an argv-shaped options object receives the translated Supercov environment.
|
|
232
|
+
*/
|
|
233
|
+
export function wrapCapabilityObject(value, mapping) {
|
|
234
|
+
if ((!value || typeof value !== "object") && typeof value !== "function")
|
|
235
|
+
return value;
|
|
236
|
+
const object = value;
|
|
237
|
+
const cached = capabilityProxies.get(object);
|
|
238
|
+
if (cached)
|
|
239
|
+
return cached;
|
|
240
|
+
const proxy = new Proxy(object, {
|
|
241
|
+
get(target, property) {
|
|
242
|
+
// Use the real target as the receiver so SDK getters backed by private
|
|
243
|
+
// fields keep their brand check. Method calls are likewise bound below.
|
|
244
|
+
const member = Reflect.get(target, property, target);
|
|
245
|
+
if (typeof member !== "function")
|
|
246
|
+
return member;
|
|
247
|
+
return (...args) => {
|
|
248
|
+
let callArguments = args;
|
|
249
|
+
const index = args.findIndex(launchOptions);
|
|
250
|
+
if (index >= 0) {
|
|
251
|
+
const original = args[index];
|
|
252
|
+
callArguments = [...args];
|
|
253
|
+
callArguments[index] = injectRemoteLaunch(original, mapping);
|
|
254
|
+
record({
|
|
255
|
+
event: "remote-launch",
|
|
256
|
+
command: commandSummary(launchArgv(original)),
|
|
257
|
+
guestRoot: mapping.guestRoot,
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
return wrapResult(Reflect.apply(member, target, callArguments), mapping);
|
|
261
|
+
};
|
|
262
|
+
},
|
|
263
|
+
});
|
|
264
|
+
capabilityProxies.set(object, proxy);
|
|
265
|
+
return proxy;
|
|
266
|
+
}
|
|
267
|
+
function patchBuilder(builder) {
|
|
268
|
+
if (patchedBuilders.has(builder))
|
|
269
|
+
return;
|
|
270
|
+
const descriptor = Object.getOwnPropertyDescriptor(builder, "build");
|
|
271
|
+
if (!descriptor || typeof descriptor.value !== "function" || !descriptor.writable)
|
|
272
|
+
return;
|
|
273
|
+
const original = descriptor.value;
|
|
274
|
+
Object.defineProperty(builder, "build", {
|
|
275
|
+
...descriptor,
|
|
276
|
+
value: function supercovCapabilityBuild(...args) {
|
|
277
|
+
const hostRoot = process.env["SUPERCOV_PROJECT_ROOT"];
|
|
278
|
+
const mapping = hostRoot
|
|
279
|
+
? discoverWorkspaceMapping(args[0], hostRoot)
|
|
280
|
+
: undefined;
|
|
281
|
+
if (!mapping)
|
|
282
|
+
return Reflect.apply(original, this, args);
|
|
283
|
+
const fingerprint = process.env["SUPERCOV_EXECUTION_FINGERPRINT"] ?? "unversioned";
|
|
284
|
+
const scoped = scopeCapabilityCache(args[0], fingerprint);
|
|
285
|
+
const callArguments = [scoped.value, ...args.slice(1)];
|
|
286
|
+
record({
|
|
287
|
+
event: "workspace-capability",
|
|
288
|
+
hostRoot: mapping.hostRoot,
|
|
289
|
+
guestRoot: mapping.guestRoot,
|
|
290
|
+
cacheIdentities: scoped.changed,
|
|
291
|
+
});
|
|
292
|
+
return wrapResult(Reflect.apply(original, this, callArguments), mapping);
|
|
293
|
+
},
|
|
294
|
+
});
|
|
295
|
+
patchedBuilders.add(builder);
|
|
296
|
+
}
|
|
297
|
+
function inspectExports(value, depth = 0) {
|
|
298
|
+
if (((!value || typeof value !== "object") && typeof value !== "function") ||
|
|
299
|
+
depth > 2)
|
|
300
|
+
return;
|
|
301
|
+
const object = value;
|
|
302
|
+
if (exportedValues.has(object))
|
|
303
|
+
return;
|
|
304
|
+
exportedValues.add(object);
|
|
305
|
+
if (typeof value === "function")
|
|
306
|
+
patchBuilder(value);
|
|
307
|
+
for (const key of Reflect.ownKeys(object).slice(0, 200)) {
|
|
308
|
+
if (key === "prototype" || key === "caller" || key === "callee")
|
|
309
|
+
continue;
|
|
310
|
+
try {
|
|
311
|
+
const descriptor = Object.getOwnPropertyDescriptor(object, key);
|
|
312
|
+
if (descriptor && "value" in descriptor)
|
|
313
|
+
inspectExports(descriptor.value, depth + 1);
|
|
314
|
+
}
|
|
315
|
+
catch {
|
|
316
|
+
// Export inspection is best-effort and never invokes accessors.
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
function childOptionsIndex(method, args) {
|
|
321
|
+
if (method === "spawn" || method === "spawnSync" || method === "fork")
|
|
322
|
+
return Array.isArray(args[1]) ? 2 : 1;
|
|
323
|
+
if (method === "exec" ||
|
|
324
|
+
method === "execSync" ||
|
|
325
|
+
method === "execFile" ||
|
|
326
|
+
method === "execFileSync")
|
|
327
|
+
return Array.isArray(args[1]) ? 2 : 1;
|
|
328
|
+
return undefined;
|
|
329
|
+
}
|
|
330
|
+
function injectChildEnvironment(method, args) {
|
|
331
|
+
const index = childOptionsIndex(method, args);
|
|
332
|
+
if (index === undefined)
|
|
333
|
+
return args;
|
|
334
|
+
const next = [...args];
|
|
335
|
+
const original = next[index];
|
|
336
|
+
const options = original && typeof original === "object" && !Array.isArray(original)
|
|
337
|
+
? original
|
|
338
|
+
: {};
|
|
339
|
+
const inherited = coverageVariables(process.env);
|
|
340
|
+
const existingEnvironment = options.env && typeof options.env === "object"
|
|
341
|
+
? options.env
|
|
342
|
+
: undefined;
|
|
343
|
+
const environment = existingEnvironment
|
|
344
|
+
? { ...existingEnvironment, ...inherited }
|
|
345
|
+
: { ...process.env, ...inherited };
|
|
346
|
+
environment.NODE_OPTIONS = appendNodeImport(existingEnvironment?.NODE_OPTIONS ?? process.env.NODE_OPTIONS, pathToFileURL(resolve(process.env["SUPERCOV_PROJECT_ROOT"] ?? process.cwd(), ".supercov/register.mjs")).href);
|
|
347
|
+
next[index] = { ...options, env: environment };
|
|
348
|
+
if (typeof original === "function")
|
|
349
|
+
next.splice(index + 1, 0, original);
|
|
350
|
+
record({
|
|
351
|
+
event: "child-launch",
|
|
352
|
+
method,
|
|
353
|
+
command: safeArgument(String(args[0] ?? "")),
|
|
354
|
+
});
|
|
355
|
+
return next;
|
|
356
|
+
}
|
|
357
|
+
function patchChildProcesses() {
|
|
358
|
+
const methods = [
|
|
359
|
+
"spawn",
|
|
360
|
+
"spawnSync",
|
|
361
|
+
"exec",
|
|
362
|
+
"execSync",
|
|
363
|
+
"execFile",
|
|
364
|
+
"execFileSync",
|
|
365
|
+
"fork",
|
|
366
|
+
];
|
|
367
|
+
for (const method of methods) {
|
|
368
|
+
const original = childProcess[method];
|
|
369
|
+
Object.defineProperty(childProcess, method, {
|
|
370
|
+
configurable: true,
|
|
371
|
+
enumerable: true,
|
|
372
|
+
writable: true,
|
|
373
|
+
value: (...args) => Reflect.apply(original, childProcess, injectChildEnvironment(method, args)),
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
syncBuiltinESMExports();
|
|
377
|
+
}
|
|
378
|
+
export function installLaunchSupervisor() {
|
|
379
|
+
if (installed)
|
|
380
|
+
return;
|
|
381
|
+
installed = true;
|
|
382
|
+
patchChildProcesses();
|
|
383
|
+
const moduleLoader = Module;
|
|
384
|
+
const originalLoad = moduleLoader._load;
|
|
385
|
+
moduleLoader._load = function supercovCapabilityLoad(request, parent, isMain) {
|
|
386
|
+
const exports = originalLoad.call(this, request, parent, isMain);
|
|
387
|
+
inspectExports(exports);
|
|
388
|
+
return exports;
|
|
389
|
+
};
|
|
390
|
+
record({
|
|
391
|
+
event: "process",
|
|
392
|
+
cwd: process.cwd(),
|
|
393
|
+
command: commandSummary(process.argv),
|
|
394
|
+
entrypoint: process.argv[1],
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
//# sourceMappingURL=launchSupervisor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launchSupervisor.js","sourceRoot":"","sources":["../src/launchSupervisor.ts"],"names":[],"mappings":"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"}
|
package/dist/playwright.d.ts
CHANGED
|
@@ -6,8 +6,4 @@ export declare const expect: typeof baseExpect;
|
|
|
6
6
|
export declare const test: TestType<PlaywrightTestArgs & Record<string, unknown> & {
|
|
7
7
|
mcdcAutoCollect: void;
|
|
8
8
|
}, PlaywrightWorkerArgs & Record<string, unknown>>;
|
|
9
|
-
export declare const offlineTest: TestType<PlaywrightTestArgs & Record<string, unknown> & {
|
|
10
|
-
mcdcAutoCollect: void;
|
|
11
|
-
}, PlaywrightWorkerArgs & Record<string, unknown>>;
|
|
12
|
-
export declare const WebhookBodiesContract: unknown;
|
|
13
9
|
//# sourceMappingURL=playwright.d.ts.map
|
package/dist/playwright.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../src/playwright.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,kBAAkB,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAMV,kBAAkB,EAClB,oBAAoB,EAGpB,QAAQ,EAET,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../src/playwright.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,kBAAkB,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAMV,kBAAkB,EAClB,oBAAoB,EAGpB,QAAQ,EAET,MAAM,kBAAkB,CAAC;AAqB1B,cAAc,kBAAkB,CAAC;AA2BjC,QAAA,MAAM,UAAU,+BAAiB,CAAC;AAstBlC,eAAO,MAAM,MAAM,EAEd,OAAO,UAAU,CAAC;AAmOvB,eAAO,MAAM,IAAI;qBAzKuC,IAAI;kDAyKxB,CAAC"}
|
package/dist/playwright.js
CHANGED
|
@@ -8,24 +8,28 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
8
8
|
};
|
|
9
9
|
import { createHash } from "node:crypto";
|
|
10
10
|
import childProcess from "node:child_process";
|
|
11
|
-
import { mkdirSync, readFileSync, rmSync
|
|
11
|
+
import { mkdirSync, readFileSync, rmSync } from "node:fs";
|
|
12
12
|
import http from "node:http";
|
|
13
13
|
import https from "node:https";
|
|
14
14
|
import { syncBuiltinESMExports } from "node:module";
|
|
15
15
|
import { dirname, relative, resolve, sep } from "node:path";
|
|
16
16
|
import * as standardPlaywright from "@playwright/test";
|
|
17
17
|
import { inferTestProvenance } from "./provenance.js";
|
|
18
|
-
import {
|
|
18
|
+
import { atomicWriteFileSync } from "./atomic.js";
|
|
19
|
+
import { COVERAGE_PHASE_HEADER, COVERAGE_PHASE_COOKIE, COVERAGE_SCOPE_COOKIE, COVERAGE_SCOPE_HEADER, COVERAGE_CARRIER_ENV, encodeCoverageCarrier, encodeCoverageScope, serverEvidenceDirectory, serverEvidencePath, } from "./transport.js";
|
|
19
20
|
export * from "@playwright/test";
|
|
20
21
|
const generatedTargetModule = "__SUPERCOV_PLAYWRIGHT_MODULE__";
|
|
21
22
|
const targetModule = process.env["SUPERCOV_PLAYWRIGHT_MODULE"] ??
|
|
22
23
|
(generatedTargetModule.startsWith("__")
|
|
23
24
|
? "@playwright/test"
|
|
24
25
|
: generatedTargetModule);
|
|
26
|
+
const generatedTestExport = "__SUPERCOV_PLAYWRIGHT_TEST_EXPORT__";
|
|
27
|
+
const targetTestExport = process.env["SUPERCOV_PLAYWRIGHT_TEST_EXPORT"] ??
|
|
28
|
+
(generatedTestExport.startsWith("__") ? "test" : generatedTestExport);
|
|
25
29
|
const adapter = (targetModule === "@playwright/test"
|
|
26
30
|
? standardPlaywright
|
|
27
31
|
: await import(__rewriteRelativeImportExtension(targetModule)));
|
|
28
|
-
const base = (adapter
|
|
32
|
+
const base = (adapter[targetTestExport] ?? adapter.test);
|
|
29
33
|
const baseExpect = adapter.expect;
|
|
30
34
|
const GENERATED_EVIDENCE_DIRECTORY = "__SUPERCOV_EVIDENCE_DIRECTORY__";
|
|
31
35
|
const GENERATED_RUN_ID = "__SUPERCOV_RUN_ID__";
|
|
@@ -66,8 +70,7 @@ function isApiRequestContext(value) {
|
|
|
66
70
|
const candidate = value;
|
|
67
71
|
return (typeof candidate["fetch"] === "function" &&
|
|
68
72
|
typeof candidate["get"] === "function" &&
|
|
69
|
-
typeof candidate["post"] === "function"
|
|
70
|
-
typeof candidate["storageState"] === "function");
|
|
73
|
+
typeof candidate["post"] === "function");
|
|
71
74
|
}
|
|
72
75
|
function callerSource() {
|
|
73
76
|
const stack = new Error().stack?.split("\n").slice(2) ?? [];
|
|
@@ -76,11 +79,15 @@ function callerSource() {
|
|
|
76
79
|
!line.includes("node_modules"));
|
|
77
80
|
if (!candidate)
|
|
78
81
|
return undefined;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
.replace(
|
|
83
|
-
|
|
82
|
+
const normalized = candidate.trim().replace(/^at\s+/, "");
|
|
83
|
+
const projectRoot = process.env["SUPERCOV_PROJECT_ROOT"]
|
|
84
|
+
?.replaceAll("\\", "/")
|
|
85
|
+
.replace(/\/$/, "");
|
|
86
|
+
if (!projectRoot)
|
|
87
|
+
return normalized;
|
|
88
|
+
return normalized
|
|
89
|
+
.replace(`file://${projectRoot}/`, "")
|
|
90
|
+
.replace(`${projectRoot}/`, "");
|
|
84
91
|
}
|
|
85
92
|
class CoveragePhaseController {
|
|
86
93
|
scope;
|
|
@@ -134,9 +141,10 @@ class CoveragePhaseController {
|
|
|
134
141
|
return;
|
|
135
142
|
this.contexts.add(context);
|
|
136
143
|
this.contextConfiguredHeaders.set(context, configuredHeaders);
|
|
137
|
-
await context.addInitScript(({ attemptId, scopeHeader, scopeValue }) => {
|
|
144
|
+
await context.addInitScript(({ attemptId, scopeHeader, scopeValue, scopeCookie }) => {
|
|
138
145
|
globalThis.__SUPERCOV_MCDC_TEST_ID__ = attemptId;
|
|
139
146
|
try {
|
|
147
|
+
document.cookie = `${scopeCookie}=${encodeURIComponent(scopeValue)}; Path=/; SameSite=Lax`;
|
|
140
148
|
const originalFetch = globalThis.fetch?.bind(globalThis);
|
|
141
149
|
if (originalFetch) {
|
|
142
150
|
globalThis.fetch = ((input, init) => {
|
|
@@ -157,6 +165,7 @@ class CoveragePhaseController {
|
|
|
157
165
|
attemptId: this.scope.attemptId,
|
|
158
166
|
scopeHeader: COVERAGE_SCOPE_HEADER,
|
|
159
167
|
scopeValue: encodeCoverageScope(this.scope),
|
|
168
|
+
scopeCookie: COVERAGE_SCOPE_COOKIE,
|
|
160
169
|
});
|
|
161
170
|
const attachPhase = async (route) => {
|
|
162
171
|
const phaseId = this.requestPhaseId();
|
|
@@ -373,15 +382,23 @@ class CoveragePhaseController {
|
|
|
373
382
|
async activateInBrowser(phaseId) {
|
|
374
383
|
await Promise.all([...this.contexts].map((context) => this.updateContextHeaders(context, phaseId)));
|
|
375
384
|
await Promise.all([...this.pages].flatMap((page) => page.frames()).map((frame) => frame
|
|
376
|
-
.evaluate(({ id, storageKey }) => {
|
|
385
|
+
.evaluate(({ id, storageKey, scopeCookie, scopeValue, phaseCookie }) => {
|
|
377
386
|
globalThis.__SUPERCOV_PHASE_ID__ = id;
|
|
378
387
|
try {
|
|
379
388
|
localStorage.setItem(storageKey, id);
|
|
389
|
+
document.cookie = `${scopeCookie}=${encodeURIComponent(scopeValue)}; Path=/; SameSite=Lax`;
|
|
390
|
+
document.cookie = `${phaseCookie}=${encodeURIComponent(id)}; Path=/; SameSite=Lax`;
|
|
380
391
|
}
|
|
381
392
|
catch {
|
|
382
393
|
// Sandboxed/cross-origin frames may not expose localStorage.
|
|
383
394
|
}
|
|
384
|
-
}, {
|
|
395
|
+
}, {
|
|
396
|
+
id: phaseId,
|
|
397
|
+
storageKey: PHASE_STORAGE_KEY,
|
|
398
|
+
scopeCookie: COVERAGE_SCOPE_COOKIE,
|
|
399
|
+
scopeValue: encodeCoverageScope(this.scope),
|
|
400
|
+
phaseCookie: COVERAGE_PHASE_COOKIE,
|
|
401
|
+
})
|
|
385
402
|
.catch(() => undefined)));
|
|
386
403
|
await Promise.all([...this.workers].map((worker) => worker
|
|
387
404
|
.evaluate((id) => {
|
|
@@ -767,7 +784,7 @@ const instrumentedTest = base.extend({
|
|
|
767
784
|
server,
|
|
768
785
|
};
|
|
769
786
|
const serialized = `${JSON.stringify(payload)}\n`;
|
|
770
|
-
|
|
787
|
+
atomicWriteFileSync(outputPath, serialized);
|
|
771
788
|
// Pool runners may cycle-restore a VM immediately after Playwright
|
|
772
789
|
// exits, which can discard or overwrite the normal artifact copy.
|
|
773
790
|
// Write one uniquely named, one-shot evidence file to the runner's
|
|
@@ -781,7 +798,7 @@ const instrumentedTest = base.extend({
|
|
|
781
798
|
const safeTestId = testInfo.testId.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
782
799
|
const testEvidenceDirectory = resolve(resolvedDirectory, `${safeTestId}-${testInfo.retry}`);
|
|
783
800
|
mkdirSync(testEvidenceDirectory, { recursive: true });
|
|
784
|
-
|
|
801
|
+
atomicWriteFileSync(resolve(testEvidenceDirectory, "mcdc.json"), serialized);
|
|
785
802
|
}
|
|
786
803
|
}
|
|
787
804
|
},
|
|
@@ -789,6 +806,5 @@ const instrumentedTest = base.extend({
|
|
|
789
806
|
],
|
|
790
807
|
});
|
|
791
808
|
export const test = instrumentedTest;
|
|
792
|
-
|
|
793
|
-
export const WebhookBodiesContract = adapter.WebhookBodiesContract;
|
|
809
|
+
/*__SUPERCOV_ADAPTER_EXPORTS__*/
|
|
794
810
|
//# sourceMappingURL=playwright.js.map
|