@empiricalrun/test-run 0.17.1 → 0.17.2
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/CHANGELOG.md +8 -0
- package/dist/dashboard.d.ts.map +1 -1
- package/dist/dashboard.js +1 -1
- package/dist/env-files.d.ts.map +1 -1
- package/dist/env-files.js +12 -6
- package/dist/failed-test-list.d.ts.map +1 -1
- package/dist/failed-test-list.js +11 -6
- package/dist/glob-matcher.d.ts.map +1 -1
- package/dist/lib/cmd.d.ts +1 -0
- package/dist/lib/cmd.d.ts.map +1 -1
- package/dist/lib/cmd.js +56 -14
- package/dist/lib/merge-reports/index.d.ts.map +1 -1
- package/dist/lib/merge-reports/index.js +2 -1
- package/dist/reporters/test-case-sync-reporter.d.ts +2 -0
- package/dist/reporters/test-case-sync-reporter.d.ts.map +1 -0
- package/dist/reporters/test-case-sync-reporter.js +19 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +7 -5
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
package/dist/dashboard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF,eAAO,MAAM,gBAAgB,oBACV,MAAM,KACtB,OAAO,CAAC,WAAW,CAwDrB,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAa,OAAO,CACxD,mBAAmB,EAAE,CAkDtB,CAAC"}
|
package/dist/dashboard.js
CHANGED
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.fetchEnvironmentVariables = exports.fetchEnvironment = void 0;
|
|
7
7
|
const async_retry_1 = __importDefault(require("async-retry"));
|
|
8
|
-
const DOMAIN = process.env.DASHBOARD_DOMAIN || "https://
|
|
8
|
+
const DOMAIN = process.env.DASHBOARD_DOMAIN || "https://api.empirical.run";
|
|
9
9
|
const fetchEnvironment = async (environmentSlug) => {
|
|
10
10
|
const data = await (0, async_retry_1.default)(async (bail) => {
|
|
11
11
|
if (!process.env.EMPIRICALRUN_API_KEY) {
|
package/dist/env-files.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-files.d.ts","sourceRoot":"","sources":["../src/env-files.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,YAAY,EAAE,KAAK,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC9B,CAAC,CAAC;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;
|
|
1
|
+
{"version":3,"file":"env-files.d.ts","sourceRoot":"","sources":["../src/env-files.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,YAAY,EAAE,KAAK,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC9B,CAAC,CAAC;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAoEF,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,QAAQ,EACR,MAAM,GACP,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;CACxB,QAoDA"}
|
package/dist/env-files.js
CHANGED
|
@@ -60,20 +60,25 @@ function buildDotenvContent(vars) {
|
|
|
60
60
|
.join("\n");
|
|
61
61
|
}
|
|
62
62
|
function parseEnvironmentsYaml(value) {
|
|
63
|
-
if (typeof value !== "object" || value === null)
|
|
63
|
+
if (typeof value !== "object" || value === null) {
|
|
64
64
|
return null;
|
|
65
|
+
}
|
|
65
66
|
const obj = value;
|
|
66
|
-
if (!("environments" in obj) || !Array.isArray(obj.environments))
|
|
67
|
+
if (!("environments" in obj) || !Array.isArray(obj.environments)) {
|
|
67
68
|
return null;
|
|
69
|
+
}
|
|
68
70
|
const environments = [];
|
|
69
71
|
for (const env of obj.environments) {
|
|
70
|
-
if (typeof env !== "object" || env === null)
|
|
72
|
+
if (typeof env !== "object" || env === null) {
|
|
71
73
|
continue;
|
|
74
|
+
}
|
|
72
75
|
const e = env;
|
|
73
|
-
if (typeof e.slug !== "string" || !e.slug.trim())
|
|
76
|
+
if (typeof e.slug !== "string" || !e.slug.trim()) {
|
|
74
77
|
continue;
|
|
75
|
-
|
|
78
|
+
}
|
|
79
|
+
if (typeof e.name !== "string" || !e.name.trim()) {
|
|
76
80
|
continue;
|
|
81
|
+
}
|
|
77
82
|
environments.push({
|
|
78
83
|
slug: e.slug,
|
|
79
84
|
name: e.name,
|
|
@@ -89,8 +94,9 @@ function parseEnvironmentsYaml(value) {
|
|
|
89
94
|
}
|
|
90
95
|
function readEnvironmentsYaml(repoDir) {
|
|
91
96
|
const yamlPath = path.join(repoDir, ENVIRONMENTS_FILE_PATH);
|
|
92
|
-
if (!fs.existsSync(yamlPath))
|
|
97
|
+
if (!fs.existsSync(yamlPath)) {
|
|
93
98
|
return null;
|
|
99
|
+
}
|
|
94
100
|
const content = fs.readFileSync(yamlPath, "utf-8");
|
|
95
101
|
const parsed = js_yaml_1.default.load(content);
|
|
96
102
|
return parseEnvironmentsYaml(parsed);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failed-test-list.d.ts","sourceRoot":"","sources":["../src/failed-test-list.ts"],"names":[],"mappings":"AAsBA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"failed-test-list.d.ts","sourceRoot":"","sources":["../src/failed-test-list.ts"],"names":[],"mappings":"AAsBA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAsB/D;AAID;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBnB;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAmED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;CACvB;AAoBD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA+CjC;AA0FD,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AA0DD,wBAAsB,aAAa,CACjC,UAAU,EAAE,QAAQ,EAAE,EACtB,QAAQ,EAAE,QAAQ,EAAE,EACpB,OAAO,EAAE,oBAAoB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GACnD,OAAO,CAAC,mBAAmB,CAAC,CA0D9B;AAED,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAa9B;AAED,wBAAsB,wBAAwB,CAC5C,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAuCjB"}
|
package/dist/failed-test-list.js
CHANGED
|
@@ -16,7 +16,7 @@ const reporter_1 = require("@empiricalrun/reporter");
|
|
|
16
16
|
const fs_1 = __importDefault(require("fs"));
|
|
17
17
|
const path_1 = __importDefault(require("path"));
|
|
18
18
|
const utils_1 = require("./utils");
|
|
19
|
-
const DOMAIN = process.env.DASHBOARD_DOMAIN || "https://
|
|
19
|
+
const DOMAIN = process.env.DASHBOARD_DOMAIN || "https://api.empirical.run";
|
|
20
20
|
const SUITES_DELIMITER = " › ";
|
|
21
21
|
/**
|
|
22
22
|
* Normalize a test line for comparison between manifest and ran tests.
|
|
@@ -30,15 +30,18 @@ function normalizeTestLine(line) {
|
|
|
30
30
|
}
|
|
31
31
|
function parseTestListLine(line) {
|
|
32
32
|
const trimmed = normalizeTestLine(line.trim());
|
|
33
|
-
if (!trimmed || trimmed.startsWith("#"))
|
|
33
|
+
if (!trimmed || trimmed.startsWith("#")) {
|
|
34
34
|
return null;
|
|
35
|
+
}
|
|
35
36
|
const match = trimmed.match(/^\[(.*?)\]\s*[›>]\s*(.*)/);
|
|
36
|
-
if (!match?.[1] || !match[2])
|
|
37
|
+
if (!match?.[1] || !match[2]) {
|
|
37
38
|
return null;
|
|
39
|
+
}
|
|
38
40
|
const projectName = match[1];
|
|
39
41
|
const parts = match[2].split(/\s*[›>]\s*/);
|
|
40
|
-
if (parts.length < 2)
|
|
42
|
+
if (parts.length < 2) {
|
|
41
43
|
return null;
|
|
44
|
+
}
|
|
42
45
|
const file = parts[0].trim();
|
|
43
46
|
const suites = parts.slice(1, -1);
|
|
44
47
|
const title = parts[parts.length - 1].trim();
|
|
@@ -327,8 +330,9 @@ async function expandSerialDependencies(testListContent, outputPath, repoPath) {
|
|
|
327
330
|
const testsToRun = [];
|
|
328
331
|
for (const line of lines) {
|
|
329
332
|
const parsed = parseTestListLine(line);
|
|
330
|
-
if (parsed)
|
|
333
|
+
if (parsed) {
|
|
331
334
|
testsToRun.push(parsed);
|
|
335
|
+
}
|
|
332
336
|
}
|
|
333
337
|
if (testsToRun.length === 0) {
|
|
334
338
|
console.log("testListContent could not be parsed. Returning original tests");
|
|
@@ -341,8 +345,9 @@ async function expandSerialDependencies(testListContent, outputPath, repoPath) {
|
|
|
341
345
|
const allLines = await getAllTestsForFile(file, repoPath);
|
|
342
346
|
for (const line of allLines) {
|
|
343
347
|
const parsed = parseTestListLine(line);
|
|
344
|
-
if (parsed)
|
|
348
|
+
if (parsed) {
|
|
345
349
|
allTests.push(parsed);
|
|
350
|
+
}
|
|
346
351
|
}
|
|
347
352
|
}
|
|
348
353
|
const result = await buildTestList(testsToRun, allTests, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glob-matcher.d.ts","sourceRoot":"","sources":["../src/glob-matcher.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,
|
|
1
|
+
{"version":3,"file":"glob-matcher.d.ts","sourceRoot":"","sources":["../src/glob-matcher.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,UAChC,MAAM,EAAE,mBACE,MAAM,EAAE,EAAE,KAC1B,MAAM,EAUR,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,oBACtB,MAAM,EAAE,YACf,MAAM,EAAE,KACjB,MAAM,EASR,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,8BAA8B,oBACxB,MAAM,EAAE,SAClB,MAAM,EAAE,UACP,MAAM,EAAE,KACf,MAAM,EAYR,CAAC"}
|
package/dist/lib/cmd.d.ts
CHANGED
package/dist/lib/cmd.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../src/lib/cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,eAAe,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../src/lib/cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,eAAe,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAeA;AAED,wBAAsB,cAAc,CAClC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,YAAY,EACpC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CAChC;;;GAqBF;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IACP,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;CACxC,GACA,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiD5C;AAmDD,wBAAgB,sBAAsB,IAAI,MAAM,CAI/C"}
|
package/dist/lib/cmd.js
CHANGED
|
@@ -3,8 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getCommandFromString = getCommandFromString;
|
|
4
4
|
exports.runTestsForCmd = runTestsForCmd;
|
|
5
5
|
exports.spawnCmd = spawnCmd;
|
|
6
|
+
exports.getChildProcessGraceMs = getChildProcessGraceMs;
|
|
6
7
|
const child_process_1 = require("child_process");
|
|
7
8
|
const logger_1 = require("../logger");
|
|
9
|
+
const SPOT_CHILD_PROCESS_GRACE_MS = 20_000;
|
|
10
|
+
const DEFAULT_CHILD_PROCESS_GRACE_MS = 120_000;
|
|
8
11
|
function getCommandFromString(command) {
|
|
9
12
|
const regex = /[^\s"']+|"([^"]*)"|'([^']*)'/g;
|
|
10
13
|
const matches = command.match(regex) || [];
|
|
@@ -71,7 +74,7 @@ async function spawnCmd(command, args, options) {
|
|
|
71
74
|
errorLogs.push(log);
|
|
72
75
|
});
|
|
73
76
|
p.on("exit", (code) => {
|
|
74
|
-
|
|
77
|
+
forceKillProcessGroup(p);
|
|
75
78
|
cleanupSignalHandlers();
|
|
76
79
|
if (code != 0 && options.throwOnError) {
|
|
77
80
|
// assuming last log is the error message before exiting
|
|
@@ -84,24 +87,23 @@ async function spawnCmd(command, args, options) {
|
|
|
84
87
|
});
|
|
85
88
|
}
|
|
86
89
|
function setupProcessSignalHandlers(proc) {
|
|
90
|
+
let isShuttingDown = false;
|
|
91
|
+
let hasExited = false;
|
|
92
|
+
proc.once("exit", () => {
|
|
93
|
+
hasExited = true;
|
|
94
|
+
});
|
|
87
95
|
const handleSignal = async (signal) => {
|
|
96
|
+
if (isShuttingDown) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
isShuttingDown = true;
|
|
88
100
|
logger_1.logger.debug(`\nReceived ${signal}, gracefully shutting down...`);
|
|
89
101
|
if (proc && !proc.killed && proc.pid) {
|
|
90
102
|
// Forward the signal to the entire process group so all children
|
|
91
103
|
// (including Playwright workers and reporters) receive it
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
catch {
|
|
96
|
-
// Process group may have already exited
|
|
97
|
-
proc.kill(signal);
|
|
98
|
-
}
|
|
99
|
-
// Wait for the child process to exit
|
|
100
|
-
await new Promise((resolve) => {
|
|
101
|
-
proc.once("exit", () => {
|
|
102
|
-
resolve();
|
|
103
|
-
});
|
|
104
|
-
});
|
|
104
|
+
sendSignalToProcessGroup(proc, signal);
|
|
105
|
+
await waitForProcessExit(proc, () => hasExited, getChildProcessGraceMs());
|
|
106
|
+
forceKillProcessGroup(proc);
|
|
105
107
|
}
|
|
106
108
|
process.exit(0);
|
|
107
109
|
};
|
|
@@ -123,3 +125,43 @@ function setupProcessSignalHandlers(proc) {
|
|
|
123
125
|
});
|
|
124
126
|
};
|
|
125
127
|
}
|
|
128
|
+
function getChildProcessGraceMs() {
|
|
129
|
+
return process.env.SPOT_INSTANCE === "true"
|
|
130
|
+
? SPOT_CHILD_PROCESS_GRACE_MS
|
|
131
|
+
: DEFAULT_CHILD_PROCESS_GRACE_MS;
|
|
132
|
+
}
|
|
133
|
+
function sendSignalToProcessGroup(proc, signal) {
|
|
134
|
+
if (!proc.pid) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
process.kill(-proc.pid, signal);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
// Process group may have already exited.
|
|
142
|
+
proc.kill(signal);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
async function waitForProcessExit(proc, hasExited, timeoutMs) {
|
|
146
|
+
if (hasExited()) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
await new Promise((resolve) => {
|
|
150
|
+
const timeout = setTimeout(resolve, timeoutMs);
|
|
151
|
+
proc.once("exit", () => {
|
|
152
|
+
clearTimeout(timeout);
|
|
153
|
+
resolve();
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
function forceKillProcessGroup(proc) {
|
|
158
|
+
if (!proc.pid) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
process.kill(-proc.pid, "SIGKILL");
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
// The group is already gone, which is the desired cleanup state.
|
|
166
|
+
}
|
|
167
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/merge-reports/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA0DlE,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/merge-reports/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA0DlE,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CA+Bf;AAMD,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyCxB;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA+C/B;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAoCjC;AAED,wBAAsB,mBAAmB,CAAC,EACxC,SAAS,EACT,aAAa,GACd,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,aAAa,CAAC;CAC9B,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDhB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAgFhC"}
|
|
@@ -84,8 +84,9 @@ function parsePlaywrightVersionFromReportJsonl(content) {
|
|
|
84
84
|
const userAgent = event.params?.userAgent;
|
|
85
85
|
if (typeof userAgent === "string") {
|
|
86
86
|
const match = userAgent.match(/\bPlaywright\/([^\s)]+)/);
|
|
87
|
-
if (match?.[1])
|
|
87
|
+
if (match?.[1]) {
|
|
88
88
|
userAgentVersion = match[1];
|
|
89
|
+
}
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
92
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-case-sync-reporter.d.ts","sourceRoot":"","sources":["../../src/reporters/test-case-sync-reporter.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
// Re-exports the @empiricalrun/playwright-utils test-case-sync reporter so the
|
|
8
|
+
// test-run-worker can point Playwright at a copy resolved from test-run's own
|
|
9
|
+
// node_modules (a worker-controlled, version-pinned location) rather than from
|
|
10
|
+
// the customer repo's installed @empiricalrun/playwright-utils. This decouples
|
|
11
|
+
// run-manifest generation from whatever playwright-utils version the customer
|
|
12
|
+
// happens to have, while the `test.id` values it reads still come from the
|
|
13
|
+
// customer's running Playwright (so they match the results reporter exactly).
|
|
14
|
+
//
|
|
15
|
+
// The reporter only uses the public Playwright Reporter API and has no runtime
|
|
16
|
+
// dependency on a specific @playwright/test, so it loads cleanly into the
|
|
17
|
+
// customer's Playwright process when referenced by absolute path.
|
|
18
|
+
var test_case_sync_reporter_1 = require("@empiricalrun/playwright-utils/test-case-sync-reporter");
|
|
19
|
+
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(test_case_sync_reporter_1).default; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAW,UAAU,EAAc,MAAM,UAAU,CAAC;AAWjE,wBAAsB,eAAe,CACnC,aAAa,EAAE,MAAM,YAAU,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC,CA4BnB;AAED,eAAO,MAAM,gCAAgC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empiricalrun/test-run",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.2",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"registry": "https://registry.npmjs.org/",
|
|
6
6
|
"access": "public"
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"js-yaml": "^4.1.0",
|
|
37
37
|
"minimatch": "^10.0.1",
|
|
38
38
|
"ts-morph": "^23.0.0",
|
|
39
|
+
"@empiricalrun/playwright-utils": "^0.55.0",
|
|
39
40
|
"@empiricalrun/r2-uploader": "^0.9.1",
|
|
40
41
|
"@empiricalrun/reporter": "^0.29.1"
|
|
41
42
|
},
|
|
@@ -46,14 +47,15 @@
|
|
|
46
47
|
"@types/console-log-level": "^1.4.5",
|
|
47
48
|
"@types/node": "^22.5.5",
|
|
48
49
|
"memfs": "^4.17.1",
|
|
49
|
-
"@empiricalrun/shared-types": "0.
|
|
50
|
+
"@empiricalrun/shared-types": "0.15.3"
|
|
50
51
|
},
|
|
51
52
|
"scripts": {
|
|
52
|
-
"dev": "
|
|
53
|
-
"build": "
|
|
53
|
+
"dev": "tsgo --build --watch",
|
|
54
|
+
"build": "tsgo --build",
|
|
54
55
|
"clean": "rm -rf dist && tsc --build --clean",
|
|
55
56
|
"lint": "biome check --unsafe",
|
|
56
57
|
"test": "vitest run",
|
|
57
|
-
"test:watch": "vitest"
|
|
58
|
+
"test:watch": "vitest",
|
|
59
|
+
"typecheck": "tsgo --noEmit"
|
|
58
60
|
}
|
|
59
61
|
}
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["./src/cmd.ts","./src/dashboard.ts","./src/env-files.ts","./src/failed-test-list.ts","./src/glob-matcher.ts","./src/index.ts","./src/logger.ts","./src/bin/index.ts","./src/bin/commands/failed-list.ts","./src/bin/commands/merge.ts","./src/bin/commands/run.ts","./src/lib/cmd.ts","./src/lib/run-all-tests.ts","./src/lib/run-specific-test.ts","./src/lib/memfs/read-hello-world.ts","./src/lib/merge-reports/html.ts","./src/lib/merge-reports/index.ts","./src/lib/merge-reports/json.ts","./src/lib/merge-reports/types.ts","./src/stdout-parser/index.ts","./src/types/index.ts","./src/utils/config-parser.ts","./src/utils/config.ts","./src/utils/index.ts"]
|
|
1
|
+
{"version":"7.0.0-dev.20260623.1","root":["./src/cmd.ts","./src/dashboard.ts","./src/env-files.ts","./src/failed-test-list.ts","./src/glob-matcher.ts","./src/index.ts","./src/logger.ts","./src/bin/index.ts","./src/bin/commands/failed-list.ts","./src/bin/commands/merge.ts","./src/bin/commands/run.ts","./src/lib/cmd.ts","./src/lib/run-all-tests.ts","./src/lib/run-specific-test.ts","./src/lib/memfs/read-hello-world.ts","./src/lib/merge-reports/html.ts","./src/lib/merge-reports/index.ts","./src/lib/merge-reports/json.ts","./src/lib/merge-reports/types.ts","./src/reporters/test-case-sync-reporter.ts","./src/stdout-parser/index.ts","./src/types/index.ts","./src/utils/config-parser.ts","./src/utils/config.ts","./src/utils/index.ts"]}
|