@rpcbase/test 0.348.0 → 0.350.0
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/clearDatabase.d.ts.map +1 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/coverage/collect.d.ts.map +1 -0
- package/dist/coverage/config-loader.d.ts.map +1 -0
- package/dist/coverage/config.d.ts.map +1 -0
- package/dist/coverage/console-text-report.d.ts.map +1 -0
- package/dist/coverage/files.d.ts.map +1 -0
- package/dist/coverage/fixtures.d.ts.map +1 -0
- package/dist/coverage/global-setup.d.ts.map +1 -0
- package/dist/coverage/index.d.ts.map +1 -0
- package/dist/coverage/report.d.ts.map +1 -0
- package/dist/coverage/reporter.d.ts.map +1 -0
- package/dist/coverage/types.d.ts.map +1 -0
- package/dist/coverage/v8-tracker.d.ts.map +1 -0
- package/dist/defineConfig.d.ts.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/runners/playwright.d.ts +12 -0
- package/dist/runners/playwright.d.ts.map +1 -0
- package/dist/runners/playwright.js +31 -5
- package/dist/runners/playwright.js.map +1 -1
- package/dist/{src/runners → runners}/process.d.ts +4 -1
- package/dist/runners/process.d.ts.map +1 -0
- package/dist/runners/process.js +12 -7
- package/dist/runners/process.js.map +1 -1
- package/dist/runners/vitest.d.ts.map +1 -0
- package/dist/serverCoverage.d.ts.map +1 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/src/clearDatabase.d.ts.map +0 -1
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/coverage/collect.d.ts.map +0 -1
- package/dist/src/coverage/config-loader.d.ts.map +0 -1
- package/dist/src/coverage/config.d.ts.map +0 -1
- package/dist/src/coverage/console-text-report.d.ts.map +0 -1
- package/dist/src/coverage/files.d.ts.map +0 -1
- package/dist/src/coverage/fixtures.d.ts.map +0 -1
- package/dist/src/coverage/global-setup.d.ts.map +0 -1
- package/dist/src/coverage/index.d.ts.map +0 -1
- package/dist/src/coverage/report.d.ts.map +0 -1
- package/dist/src/coverage/reporter.d.ts.map +0 -1
- package/dist/src/coverage/types.d.ts.map +0 -1
- package/dist/src/coverage/v8-tracker.d.ts.map +0 -1
- package/dist/src/defineConfig.d.ts.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/runners/playwright.d.ts +0 -4
- package/dist/src/runners/playwright.d.ts.map +0 -1
- package/dist/src/runners/process.d.ts.map +0 -1
- package/dist/src/runners/vitest.d.ts.map +0 -1
- package/dist/src/serverCoverage.d.ts.map +0 -1
- package/dist/src/vitest.config.d.ts.map +0 -1
- /package/dist/{src/clearDatabase.d.ts → clearDatabase.d.ts} +0 -0
- /package/dist/{src/cli.d.ts → cli.d.ts} +0 -0
- /package/dist/{src/coverage → coverage}/collect.d.ts +0 -0
- /package/dist/{src/coverage → coverage}/config-loader.d.ts +0 -0
- /package/dist/{src/coverage → coverage}/config.d.ts +0 -0
- /package/dist/{src/coverage → coverage}/console-text-report.d.ts +0 -0
- /package/dist/{src/coverage → coverage}/files.d.ts +0 -0
- /package/dist/{src/coverage → coverage}/fixtures.d.ts +0 -0
- /package/dist/{src/coverage → coverage}/global-setup.d.ts +0 -0
- /package/dist/{src/coverage → coverage}/index.d.ts +0 -0
- /package/dist/{src/coverage → coverage}/report.d.ts +0 -0
- /package/dist/{src/coverage → coverage}/reporter.d.ts +0 -0
- /package/dist/{src/coverage → coverage}/types.d.ts +0 -0
- /package/dist/{src/coverage → coverage}/v8-tracker.d.ts +0 -0
- /package/dist/{src/defineConfig.d.ts → defineConfig.d.ts} +0 -0
- /package/dist/{src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{src/runners → runners}/vitest.d.ts +0 -0
- /package/dist/{src/serverCoverage.d.ts → serverCoverage.d.ts} +0 -0
- /package/dist/{src/vitest.config.d.ts → vitest.config.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clearDatabase.d.ts","sourceRoot":"","sources":["../src/clearDatabase.ts"],"names":[],"mappings":"AAGA,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAejE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect.d.ts","sourceRoot":"","sources":["../../src/coverage/collect.ts"],"names":[],"mappings":"AAKA,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAsDnH;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE9C;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAO7E;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CA4BzF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/coverage/config-loader.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAKrD,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB,CAAA;AAED,QAAA,MAAM,2BAA2B,UAMhC,CAAA;AAUD,wBAAsB,mBAAmB,CAAC,EACxC,QAAgB,EAChB,UAAwC,GACzC,GAAE,uBAA4B,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CA4BvE;AAED,wBAAgB,uBAAuB,CAAC,EACtC,QAAgB,EAChB,UAAwC,GACzC,GAAE,uBAA4B,GAAG,sBAAsB,GAAG,IAAI,CA4B9D;AAiRD,OAAO,EAAE,2BAA2B,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/coverage/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAA8F,MAAM,SAAS,CAAA;AAajK,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,GAAG,cAAc,CAuCpF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-text-report.d.ts","sourceRoot":"","sources":["../../src/coverage/console-text-report.ts"],"names":[],"mappings":"AAMA,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,GACX;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAWpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/coverage/files.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAe7C,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,EACtB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC,CAgCnB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC,CAwBf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/coverage/fixtures.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAyB7C,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAA;CAAE,EACrF,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,cAAc,GACrB,CAAC,CAiCH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-setup.d.ts","sourceRoot":"","sources":["../../src/coverage/global-setup.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAG7C,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAarF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/coverage/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAGtE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAgBtF;AAkCD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAChE,mBAAmB,SAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/coverage/report.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAA+C,MAAM,SAAS,CAAA;AAK1F,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAoElF;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBnF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/coverage/reporter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAI3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAG7C,KAAK,sBAAsB,GAAG,UAAU,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,cAAM,gBAAgB;IACpB,MAAM,EAAE,cAAc,CAAA;gBAEV,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,cAAc,CAAA;KAAO;IAOvD,OAAO;IAaP,KAAK,CAAC,MAAM,EAAE,sBAAsB;CA0B3C;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAC3B,eAAe,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/coverage/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACpC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,MAAM,GAAG,SAAS,CAAA;CACpE,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,oBAAoB,CAAA;AAExF,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,kBAAkB,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,UAAU,CAAC,EAAE,uBAAuB,CAAA;IACpC,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,OAAO,CAAA;IACxB,UAAU,EAAE,kBAAkB,CAAA;IAC9B,gBAAgB,EAAE,uBAAuB,EAAE,CAAA;IAC3C,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,cAAc,CAAA;IACtB,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,UAAU,CAAC,CAAC,SAAS;QAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAA;KAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;IAC5E,aAAa,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CACpD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v8-tracker.d.ts","sourceRoot":"","sources":["../../src/coverage/v8-tracker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAGtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAe7C,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CA2C1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineConfig.d.ts","sourceRoot":"","sources":["../src/defineConfig.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,IAAI,sBAAsB,EAAW,MAAM,kBAAkB,CAAA;AA6ElF,MAAM,CAAC,OAAO,WAAU,MAAM,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,2DA6C3E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAwB,YAAY,IAAI,sBAAsB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAM1H,cAAc,kBAAkB,CAAA;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAIhC,eAAO,MAAM,IAAI,EAAE,OAAO,QAA4E,CAAA;AACtG,eAAO,MAAM,MAAM,uCAAa,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,CAAA;AAElB,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAA;AAGpE,wBAAgB,YAAY,CAAC,UAAU,GAAE,gBAAqB,2DAgB7D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function runPlaywright(userArgs: string[], { disableCoverage }?: {
|
|
2
|
+
disableCoverage?: boolean;
|
|
3
|
+
}): Promise<void>;
|
|
4
|
+
export declare function createPlaywrightRetryEnv(baseEnv: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
5
|
+
export declare function formatPlaywrightRetryLogLabel({ failedFile, }: {
|
|
6
|
+
failedFile: string;
|
|
7
|
+
}): string;
|
|
8
|
+
export declare function formatPlaywrightRetryLinePrefix({ failedFile, stream, }: {
|
|
9
|
+
failedFile: string;
|
|
10
|
+
stream: "stdout" | "stderr";
|
|
11
|
+
}): string;
|
|
12
|
+
//# sourceMappingURL=playwright.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../../src/runners/playwright.ts"],"names":[],"mappings":"AAmEA,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAAE,EAClB,EAAE,eAAuB,EAAE,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9D,OAAO,CAAC,IAAI,CAAC,CAsFf;AA4dD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAKtF;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,UAAU,GACX,EAAE;IACD,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,MAAM,CAET;AAED,wBAAgB,+BAA+B,CAAC,EAC9C,UAAU,EACV,MAAM,GACP,EAAE;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC5B,GAAG,MAAM,CAIT"}
|
|
@@ -104,7 +104,7 @@ async function runPlaywright(userArgs, { disableCoverage = false } = {}) {
|
|
|
104
104
|
throw lastError;
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
|
-
function runPlaywrightOnce({ launcher, args, env, outputMode = "chunk", successMessage, failureMessage }) {
|
|
107
|
+
function runPlaywrightOnce({ launcher, args, env, outputMode = "chunk", successMessage, failureMessage, stdoutLinePrefix, stderrLinePrefix }) {
|
|
108
108
|
return spawnWithLogs({
|
|
109
109
|
name: "Playwright",
|
|
110
110
|
launcher,
|
|
@@ -112,7 +112,9 @@ function runPlaywrightOnce({ launcher, args, env, outputMode = "chunk", successM
|
|
|
112
112
|
env,
|
|
113
113
|
outputMode,
|
|
114
114
|
successMessage: successMessage === void 0 ? "Playwright suite passed!" : successMessage ?? void 0,
|
|
115
|
-
failureMessage: failureMessage === void 0 ? "Playwright failed" : failureMessage ?? void 0
|
|
115
|
+
failureMessage: failureMessage === void 0 ? "Playwright failed" : failureMessage ?? void 0,
|
|
116
|
+
stdoutLinePrefix,
|
|
117
|
+
stderrLinePrefix
|
|
116
118
|
});
|
|
117
119
|
}
|
|
118
120
|
function resolvePlaywrightLauncher() {
|
|
@@ -373,32 +375,56 @@ function normalizePlaywrightReportFile(filePath, rootDir) {
|
|
|
373
375
|
return toPosixPath(raw);
|
|
374
376
|
}
|
|
375
377
|
function toPosixPath(input) {
|
|
376
|
-
return String(input ?? "").split(path.sep).join("/");
|
|
378
|
+
return String(input ?? "").replaceAll("\\", "/").split(path.sep).join("/");
|
|
377
379
|
}
|
|
378
380
|
function buildPlaywrightRetryOutputDir(attempt, failedFiles) {
|
|
379
381
|
const slug = failedFiles.map((file) => toPosixPath(file).replace(/[^a-zA-Z0-9._/-]+/g, "-").replace(/\//g, "__")).join("--");
|
|
380
382
|
return toPosixPath(path.join("build", "playwright", "test-results", "rb-retries", `attempt-${attempt}`, slug));
|
|
381
383
|
}
|
|
384
|
+
function createPlaywrightRetryEnv(baseEnv) {
|
|
385
|
+
return {
|
|
386
|
+
...baseEnv,
|
|
387
|
+
PLAYWRIGHT_FORCE_TTY: "false"
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
function formatPlaywrightRetryLogLabel({ failedFile }) {
|
|
391
|
+
return `[${toPosixPath(failedFile)}]`;
|
|
392
|
+
}
|
|
393
|
+
function formatPlaywrightRetryLinePrefix({ failedFile, stream }) {
|
|
394
|
+
return stream === "stderr" ? `[${toPosixPath(failedFile)} stderr] ` : `${formatPlaywrightRetryLogLabel({ failedFile })} `;
|
|
395
|
+
}
|
|
382
396
|
async function runPlaywrightRetryAttempt({ launcher, userArgs, failedFiles, retryConcurrency, configPath, hasCustomConfig, env, attempt }) {
|
|
383
397
|
const failedAgain = /* @__PURE__ */ new Set();
|
|
384
398
|
let lastError = null;
|
|
385
399
|
let nextIndex = 0;
|
|
400
|
+
const retryEnv = createPlaywrightRetryEnv(env);
|
|
386
401
|
async function runNext() {
|
|
387
402
|
while (nextIndex < failedFiles.length) {
|
|
388
403
|
const fileIndex = nextIndex;
|
|
389
404
|
nextIndex += 1;
|
|
390
405
|
const failedFile = failedFiles[fileIndex];
|
|
406
|
+
const retryLogLabel = formatPlaywrightRetryLogLabel({ failedFile });
|
|
391
407
|
const retryArgs = buildPlaywrightWorkerRetryArgs(userArgs, [failedFile], attempt);
|
|
392
408
|
const retryPlaywrightArgs = ["test"];
|
|
393
409
|
if (!hasCustomConfig) retryPlaywrightArgs.push("--config", configPath);
|
|
394
410
|
retryPlaywrightArgs.push(...retryArgs);
|
|
395
411
|
try {
|
|
412
|
+
console.warn(`${retryLogLabel} Starting fresh-worker retry`);
|
|
396
413
|
await runPlaywrightOnce({
|
|
397
414
|
launcher,
|
|
398
415
|
args: retryPlaywrightArgs,
|
|
399
|
-
env,
|
|
416
|
+
env: retryEnv,
|
|
400
417
|
outputMode: "line",
|
|
401
|
-
successMessage: null
|
|
418
|
+
successMessage: null,
|
|
419
|
+
failureMessage: `${retryLogLabel} Playwright failed`,
|
|
420
|
+
stdoutLinePrefix: formatPlaywrightRetryLinePrefix({
|
|
421
|
+
failedFile,
|
|
422
|
+
stream: "stdout"
|
|
423
|
+
}),
|
|
424
|
+
stderrLinePrefix: formatPlaywrightRetryLinePrefix({
|
|
425
|
+
failedFile,
|
|
426
|
+
stream: "stderr"
|
|
427
|
+
})
|
|
402
428
|
});
|
|
403
429
|
} catch (retryError) {
|
|
404
430
|
lastError = retryError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright.js","names":["fs","fsPromises","path","createRequire","fileURLToPath","spawnAndCaptureStdout","spawnWithLogs","withRegisterShim","SpawnLauncher","require","import","meta","url","moduleDir","dirname","COMBINED_COVERAGE_ENV_VAR","PLAYWRIGHT_RESULTS_FILE","join","process","cwd","PlaywrightReportSummary","failedFiles","PlaywrightRuntimeSettings","retries","workers","PLAYWRIGHT_OPTIONS_WITH_REQUIRED_VALUE","Set","PLAYWRIGHT_OPTIONS_WITH_OPTIONAL_VALUE","PLAYWRIGHT_OPTIONS_TO_REMOVE_FOR_WORKER_RETRY","PLAYWRIGHT_OPTIONS_TO_REMOVE_FOR_INITIAL_FRESH_RUN","runPlaywright","userArgs","disableCoverage","Promise","configPath","existsSync","hasCustomConfig","some","arg","startsWith","ensureJsxRuntimeShim","launcher","resolvePlaywrightLauncher","env","RB_DISABLE_COVERAGE","runtimeSettings","resolveFreshWorkerRetrySettings","configuredRetries","retryConcurrency","Math","max","resultsMtimeBeforeRun","getFileMtimeMs","initialRunArgs","buildPlaywrightInitialFreshWorkerArgs","initialPlaywrightArgs","push","runPlaywrightOnce","args","error","summary","readPlaywrightReportSummary","length","lastError","maxAttempts","attempt","activeRetryWorkers","min","console","warn","retryResults","runPlaywrightRetryAttempt","outputMode","successMessage","failureMessage","NodeJS","ProcessEnv","name","undefined","cliPath","resolveCliPath","command","execPath","localBin","resolve","searchRoots","base","pkgPath","paths","_error","buildPlaywrightWorkerRetryArgs","optionArgs","extractPlaywrightOptionArgs","sanitizedOptions","removePlaywrightOptions","buildPlaywrightRetryOutputDir","positionalArgs","extractPlaywrightPositionalArgs","configuredSettings","probeConfiguredPlaywrightSettings","probeArgs","extractPlaywrightProjectArgs","stdout","json","parseJsonObjectFromText","resolvePlaywrightRetriesFromReport","resolvePlaywrightWorkersFromReport","output","i","next","input","JSON","parse","start","indexOf","end","lastIndexOf","slice","includes","has","optionsToRemove","normalized","split","resultsFilePath","newerThanMtimeMs","stats","stat","catch","mtimeMs","data","readJson","resolveFailedPlaywrightFiles","filePath","statSync","projects","Array","isArray","config","retriesFromProjects","map","project","Number","filter","value","isFinite","floor","fallback","configWorkers","workersFromProjects","metadata","actualWorkers","suites","rootDir","suite","collectFailedPlaywrightFiles","from","sort","specs","spec","isPlaywrightSpecSuccessful","file","normalizePlaywrightReportFile","add","innerSuites","innerSuite","ok","tests","every","test","testStatus","String","status","results","result","raw","trim","absolutePath","isAbsolute","normalize","cwdCandidate","rootCandidate","relative","toPosixPath","sep","slug","replace","failedAgain","nextIndex","runNext","fileIndex","failedFile","retryArgs","retryPlaywrightArgs","retryError","all","readFile","projectRoot","shimDir","mkdirSync","recursive","shims","target","content","writeFileSync"],"sources":["../../src/runners/playwright.ts"],"sourcesContent":["import fs from \"node:fs\"\nimport fsPromises from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { createRequire } from \"node:module\"\nimport { fileURLToPath } from \"node:url\"\n\nimport { spawnAndCaptureStdout, spawnWithLogs, withRegisterShim, type SpawnLauncher } from \"./process\"\n\n\nconst require = createRequire(import.meta.url)\nconst moduleDir = path.dirname(fileURLToPath(import.meta.url))\n\nconst COMBINED_COVERAGE_ENV_VAR = \"RB_TEST_COMBINED_COVERAGE\"\nconst PLAYWRIGHT_RESULTS_FILE = path.join(process.cwd(), \"build\", \"playwright\", \"results.json\")\n\ntype PlaywrightReportSummary = {\n failedFiles: string[]\n}\n\ntype PlaywrightRuntimeSettings = {\n retries: number | null\n workers: number | null\n}\n\nconst PLAYWRIGHT_OPTIONS_WITH_REQUIRED_VALUE = new Set([\n \"--browser\",\n \"--config\",\n \"-c\",\n \"--grep\",\n \"-g\",\n \"--grep-invert\",\n \"--global-timeout\",\n \"--max-failures\",\n \"--output\",\n \"--project\",\n \"--repeat-each\",\n \"--reporter\",\n \"--retries\",\n \"--shard\",\n \"--timeout\",\n \"--trace\",\n \"--tsconfig\",\n \"--workers\",\n \"-j\",\n])\n\nconst PLAYWRIGHT_OPTIONS_WITH_OPTIONAL_VALUE = new Set([\n \"--only-changed\",\n \"--update-snapshots\",\n \"-u\",\n])\n\nconst PLAYWRIGHT_OPTIONS_TO_REMOVE_FOR_WORKER_RETRY = new Set([\n \"--last-failed\",\n \"--only-changed\",\n \"--output\",\n \"--retries\",\n \"--pass-with-no-tests\",\n \"--reporter\",\n \"--workers\",\n \"-j\",\n])\n\nconst PLAYWRIGHT_OPTIONS_TO_REMOVE_FOR_INITIAL_FRESH_RUN = new Set([\n \"--retries\",\n])\n\nexport async function runPlaywright(\n userArgs: string[],\n { disableCoverage = false }: { disableCoverage?: boolean } = {},\n): Promise<void> {\n const configPath = fs.existsSync(\n path.join(process.cwd(), \"playwright.config.ts\"),\n )\n ? path.join(process.cwd(), \"playwright.config.ts\")\n : path.join(moduleDir, \"..\", \"playwright.config.ts\")\n\n const hasCustomConfig = userArgs.some((arg) => {\n if (arg === \"--config\" || arg === \"-c\") {\n return true\n }\n\n return arg.startsWith(\"--config=\")\n })\n\n ensureJsxRuntimeShim(process.cwd())\n const launcher = resolvePlaywrightLauncher()\n const env = withRegisterShim(process.env)\n env[COMBINED_COVERAGE_ENV_VAR] = \"1\"\n if (disableCoverage) {\n env.RB_DISABLE_COVERAGE = \"1\"\n }\n\n const runtimeSettings = await resolveFreshWorkerRetrySettings({\n launcher,\n configPath,\n hasCustomConfig,\n userArgs,\n env,\n })\n const configuredRetries = runtimeSettings.retries\n const retryConcurrency = Math.max(1, runtimeSettings.workers ?? 1)\n\n const resultsMtimeBeforeRun = getFileMtimeMs(PLAYWRIGHT_RESULTS_FILE)\n const initialRunArgs = buildPlaywrightInitialFreshWorkerArgs(userArgs)\n const initialPlaywrightArgs = [\"test\"]\n if (!hasCustomConfig) {\n initialPlaywrightArgs.push(\"--config\", configPath)\n }\n initialPlaywrightArgs.push(...initialRunArgs)\n\n try {\n await runPlaywrightOnce({\n launcher,\n args: initialPlaywrightArgs,\n env,\n })\n return\n } catch (error) {\n const summary = await readPlaywrightReportSummary(PLAYWRIGHT_RESULTS_FILE, resultsMtimeBeforeRun)\n if (!summary || configuredRetries <= 0 || summary.failedFiles.length === 0) {\n throw error\n }\n\n let lastError = error\n let failedFiles = summary.failedFiles\n const maxAttempts = configuredRetries\n\n for (let attempt = 1; attempt <= maxAttempts && failedFiles.length > 0; attempt += 1) {\n const activeRetryWorkers = Math.max(1, Math.min(retryConcurrency, failedFiles.length))\n console.warn(\n `[rb-test] Retrying ${failedFiles.length} failed Playwright file(s) with fresh workers (${attempt}/${maxAttempts}, up to ${activeRetryWorkers} in parallel)`,\n )\n const retryResults = await runPlaywrightRetryAttempt({\n launcher,\n userArgs,\n failedFiles,\n retryConcurrency: activeRetryWorkers,\n configPath,\n hasCustomConfig,\n env,\n attempt,\n })\n\n if (retryResults.lastError) {\n lastError = retryResults.lastError\n }\n failedFiles = retryResults.failedFiles\n }\n\n if (failedFiles.length === 0) {\n return\n }\n\n throw lastError\n }\n}\n\nfunction runPlaywrightOnce({\n launcher,\n args,\n env,\n outputMode = \"chunk\",\n successMessage,\n failureMessage,\n}: {\n launcher: SpawnLauncher\n args: string[]\n env: NodeJS.ProcessEnv\n outputMode?: \"chunk\" | \"line\"\n successMessage?: string | null\n failureMessage?: string | null\n}): Promise<void> {\n return spawnWithLogs({\n name: \"Playwright\",\n launcher,\n args,\n env,\n outputMode,\n successMessage: successMessage === undefined ? \"Playwright suite passed!\" : successMessage ?? undefined,\n failureMessage: failureMessage === undefined ? \"Playwright failed\" : failureMessage ?? undefined,\n })\n}\n\nfunction resolvePlaywrightLauncher(): SpawnLauncher {\n const cliPath = resolveCliPath()\n if (cliPath) {\n return {\n command: process.execPath,\n args: [cliPath],\n }\n }\n\n const localBin = path.resolve(process.cwd(), \"node_modules/.bin/playwright\")\n if (fs.existsSync(localBin)) {\n return {\n command: localBin,\n args: [],\n }\n }\n\n return {\n command: \"playwright\",\n args: [],\n }\n}\n\nfunction resolveCliPath(): string | null {\n const searchRoots = [process.cwd(), moduleDir]\n\n for (const base of searchRoots) {\n try {\n const pkgPath = require.resolve(\"@playwright/test/package.json\", { paths: [base] })\n const cliPath = path.join(path.dirname(pkgPath), \"cli.js\")\n if (fs.existsSync(cliPath)) {\n return cliPath\n }\n } catch (_error) {\n // Continue searching for a usable playwright launcher.\n }\n }\n\n return null\n}\n\nfunction buildPlaywrightWorkerRetryArgs(userArgs: string[], failedFiles: string[], attempt: number): string[] {\n const optionArgs = extractPlaywrightOptionArgs(userArgs)\n const sanitizedOptions = removePlaywrightOptions(optionArgs, PLAYWRIGHT_OPTIONS_TO_REMOVE_FOR_WORKER_RETRY)\n return [\n ...sanitizedOptions,\n \"--retries=0\",\n \"--workers=1\",\n \"--reporter=list\",\n \"--output\",\n buildPlaywrightRetryOutputDir(attempt, failedFiles),\n ...failedFiles,\n ]\n}\n\nfunction buildPlaywrightInitialFreshWorkerArgs(userArgs: string[]): string[] {\n const optionArgs = extractPlaywrightOptionArgs(userArgs)\n const sanitizedOptions = removePlaywrightOptions(optionArgs, PLAYWRIGHT_OPTIONS_TO_REMOVE_FOR_INITIAL_FRESH_RUN)\n const positionalArgs = extractPlaywrightPositionalArgs(userArgs)\n return [...sanitizedOptions, \"--retries=0\", ...positionalArgs]\n}\n\nasync function resolveFreshWorkerRetrySettings({\n launcher,\n configPath,\n hasCustomConfig,\n userArgs,\n env,\n}: {\n launcher: SpawnLauncher\n configPath: string\n hasCustomConfig: boolean\n userArgs: string[]\n env: NodeJS.ProcessEnv\n}): Promise<{ retries: number; workers: number | null }> {\n const configuredSettings = await probeConfiguredPlaywrightSettings({\n launcher,\n configPath,\n hasCustomConfig,\n userArgs,\n env,\n })\n\n return {\n retries: configuredSettings.retries ?? 0,\n workers: configuredSettings.workers,\n }\n}\n\nasync function probeConfiguredPlaywrightSettings({\n launcher,\n configPath,\n hasCustomConfig,\n userArgs,\n env,\n}: {\n launcher: SpawnLauncher\n configPath: string\n hasCustomConfig: boolean\n userArgs: string[]\n env: NodeJS.ProcessEnv\n}): Promise<PlaywrightRuntimeSettings> {\n const probeArgs = [\"test\"]\n if (!hasCustomConfig) {\n probeArgs.push(\"--config\", configPath)\n }\n probeArgs.push(\"--list\", \"--reporter=json\", ...extractPlaywrightProjectArgs(userArgs))\n\n try {\n const stdout = await spawnAndCaptureStdout({\n name: \"Playwright retries probe\",\n launcher,\n args: probeArgs,\n env,\n })\n const json = parseJsonObjectFromText(stdout)\n if (!json) {\n return { retries: null, workers: null }\n }\n return {\n retries: resolvePlaywrightRetriesFromReport(json),\n workers: resolvePlaywrightWorkersFromReport(json),\n }\n } catch (_error) {\n return { retries: null, workers: null }\n }\n}\n\nfunction extractPlaywrightProjectArgs(userArgs: string[]): string[] {\n const output: string[] = []\n for (let i = 0; i < userArgs.length; i += 1) {\n const arg = userArgs[i]\n if (arg === \"--\") {\n break\n }\n if (arg === \"--project\") {\n const next = userArgs[i + 1]\n if (next != null) {\n output.push(arg, next)\n i += 1\n }\n continue\n }\n if (arg.startsWith(\"--project=\")) {\n output.push(arg)\n }\n }\n return output\n}\n\nfunction parseJsonObjectFromText(input: string): any | null {\n try {\n return JSON.parse(input)\n } catch {\n const start = input.indexOf(\"{\")\n const end = input.lastIndexOf(\"}\")\n if (start === -1 || end === -1 || end <= start) {\n return null\n }\n try {\n return JSON.parse(input.slice(start, end + 1))\n } catch {\n return null\n }\n }\n}\n\nfunction extractPlaywrightPositionalArgs(userArgs: string[]): string[] {\n const output: string[] = []\n\n for (let i = 0; i < userArgs.length; i += 1) {\n const arg = userArgs[i]\n\n if (arg === \"--\") {\n break\n }\n\n if (!arg.startsWith(\"-\")) {\n output.push(arg)\n continue\n }\n\n if (arg.includes(\"=\")) {\n continue\n }\n\n if (PLAYWRIGHT_OPTIONS_WITH_REQUIRED_VALUE.has(arg)) {\n const next = userArgs[i + 1]\n if (next !== undefined) {\n i += 1\n }\n continue\n }\n\n if (PLAYWRIGHT_OPTIONS_WITH_OPTIONAL_VALUE.has(arg)) {\n const next = userArgs[i + 1]\n if (next !== undefined && !next.startsWith(\"-\")) {\n i += 1\n }\n }\n }\n\n return output\n}\n\nfunction removePlaywrightOptions(optionArgs: string[], optionsToRemove: Set<string>): string[] {\n const output: string[] = []\n for (let i = 0; i < optionArgs.length; i += 1) {\n const arg = optionArgs[i]\n const normalized = arg.split(\"=\")[0]\n if (!arg.startsWith(\"-\") || !optionsToRemove.has(normalized)) {\n output.push(arg)\n continue\n }\n\n if (arg.includes(\"=\")) {\n continue\n }\n\n if (PLAYWRIGHT_OPTIONS_WITH_REQUIRED_VALUE.has(normalized)) {\n const next = optionArgs[i + 1]\n if (next !== undefined) {\n i += 1\n }\n continue\n }\n\n if (PLAYWRIGHT_OPTIONS_WITH_OPTIONAL_VALUE.has(normalized)) {\n const next = optionArgs[i + 1]\n if (next !== undefined && !next.startsWith(\"-\")) {\n i += 1\n }\n }\n }\n return output\n}\n\nfunction extractPlaywrightOptionArgs(userArgs: string[]): string[] {\n const output: string[] = []\n\n for (let i = 0; i < userArgs.length; i += 1) {\n const arg = userArgs[i]\n\n if (arg === \"--\") {\n break\n }\n\n if (!arg.startsWith(\"-\")) {\n continue\n }\n\n output.push(arg)\n\n if (arg.includes(\"=\")) {\n continue\n }\n\n if (PLAYWRIGHT_OPTIONS_WITH_REQUIRED_VALUE.has(arg)) {\n const next = userArgs[i + 1]\n if (next !== undefined) {\n output.push(next)\n i += 1\n }\n continue\n }\n\n if (PLAYWRIGHT_OPTIONS_WITH_OPTIONAL_VALUE.has(arg)) {\n const next = userArgs[i + 1]\n if (next !== undefined && !next.startsWith(\"-\")) {\n output.push(next)\n i += 1\n }\n }\n }\n\n return output\n}\n\nasync function readPlaywrightReportSummary(\n resultsFilePath: string,\n newerThanMtimeMs: number | null,\n): Promise<PlaywrightReportSummary | null> {\n const stats = await fsPromises.stat(resultsFilePath).catch(() => null)\n if (!stats) {\n return null\n }\n\n if (newerThanMtimeMs != null && stats.mtimeMs <= newerThanMtimeMs) {\n return null\n }\n\n const data = await readJson(resultsFilePath)\n if (!data || typeof data !== \"object\") {\n return null\n }\n\n return {\n failedFiles: resolveFailedPlaywrightFiles(data),\n }\n}\n\nfunction getFileMtimeMs(filePath: string): number | null {\n try {\n return fs.statSync(filePath).mtimeMs\n } catch {\n return null\n }\n}\n\nfunction resolvePlaywrightRetriesFromReport(data: any): number {\n const projects = Array.isArray(data?.config?.projects) ? data.config.projects : []\n const retriesFromProjects = projects\n .map((project: any) => Number(project?.retries))\n .filter((value: number) => Number.isFinite(value))\n .map((value: number) => Math.max(0, Math.floor(value)))\n\n if (retriesFromProjects.length > 0) {\n return Math.max(...retriesFromProjects)\n }\n\n const fallback = Number(data?.config?.retries)\n if (Number.isFinite(fallback)) {\n return Math.max(0, Math.floor(fallback))\n }\n\n return 0\n}\n\nfunction resolvePlaywrightWorkersFromReport(data: any): number | null {\n const configWorkers = Number(data?.config?.workers)\n if (Number.isFinite(configWorkers)) {\n return Math.max(1, Math.floor(configWorkers))\n }\n\n const projects = Array.isArray(data?.config?.projects) ? data.config.projects : []\n const workersFromProjects = projects\n .map((project: any) => Number(project?.metadata?.actualWorkers ?? project?.workers))\n .filter((value: number) => Number.isFinite(value))\n .map((value: number) => Math.max(1, Math.floor(value)))\n\n if (workersFromProjects.length > 0) {\n return Math.max(...workersFromProjects)\n }\n\n return null\n}\n\nfunction resolveFailedPlaywrightFiles(data: any): string[] {\n const suites = Array.isArray(data?.suites) ? data.suites : []\n const rootDir = typeof data?.config?.rootDir === \"string\" ? data.config.rootDir : null\n const failedFiles = new Set<string>()\n\n for (const suite of suites) {\n collectFailedPlaywrightFiles(suite, failedFiles, rootDir)\n }\n\n return Array.from(failedFiles).sort()\n}\n\nfunction collectFailedPlaywrightFiles(suite: any, output: Set<string>, rootDir: string | null): void {\n const specs = Array.isArray(suite?.specs) ? suite.specs : []\n\n for (const spec of specs) {\n if (isPlaywrightSpecSuccessful(spec)) {\n continue\n }\n const file = normalizePlaywrightReportFile(spec?.file ?? suite?.file, rootDir)\n if (file) {\n output.add(file)\n }\n }\n\n const innerSuites = Array.isArray(suite?.suites) ? suite.suites : []\n for (const innerSuite of innerSuites) {\n collectFailedPlaywrightFiles(innerSuite, output, rootDir)\n }\n}\n\nfunction isPlaywrightSpecSuccessful(spec: any): boolean {\n if (typeof spec?.ok === \"boolean\") {\n return spec.ok\n }\n\n const tests = Array.isArray(spec?.tests) ? spec.tests : []\n if (tests.length === 0) {\n return false\n }\n\n return tests.every((test: any) => {\n const testStatus = String(test?.status ?? \"\")\n if (testStatus === \"expected\" || testStatus === \"skipped\" || testStatus === \"flaky\") {\n return true\n }\n\n const results = Array.isArray(test?.results) ? test.results : []\n if (results.length === 0) {\n return false\n }\n return results.every((result: any) => result?.status === \"passed\" || result?.status === \"skipped\")\n })\n}\n\nfunction normalizePlaywrightReportFile(filePath: unknown, rootDir: string | null): string | null {\n const raw = String(filePath ?? \"\").trim()\n if (!raw) {\n return null\n }\n\n let absolutePath: string\n if (path.isAbsolute(raw)) {\n absolutePath = path.normalize(raw)\n } else {\n const cwdCandidate = path.resolve(process.cwd(), raw)\n const rootCandidate = rootDir ? path.resolve(rootDir, raw) : null\n if (rootCandidate && fs.existsSync(rootCandidate)) {\n absolutePath = rootCandidate\n } else if (fs.existsSync(cwdCandidate)) {\n absolutePath = cwdCandidate\n } else {\n absolutePath = rootCandidate ?? cwdCandidate\n }\n }\n\n const relative = path.relative(process.cwd(), absolutePath)\n if (relative === \"\" || (!relative.startsWith(\"..\") && !path.isAbsolute(relative))) {\n return toPosixPath(relative || raw)\n }\n\n return toPosixPath(raw)\n}\n\nfunction toPosixPath(input: unknown): string {\n return String(input ?? \"\").split(path.sep).join(\"/\")\n}\n\nfunction buildPlaywrightRetryOutputDir(attempt: number, failedFiles: string[]): string {\n const slug = failedFiles\n .map((file) => toPosixPath(file).replace(/[^a-zA-Z0-9._/-]+/g, \"-\").replace(/\\//g, \"__\"))\n .join(\"--\")\n return toPosixPath(path.join(\"build\", \"playwright\", \"test-results\", \"rb-retries\", `attempt-${attempt}`, slug))\n}\n\nasync function runPlaywrightRetryAttempt({\n launcher,\n userArgs,\n failedFiles,\n retryConcurrency,\n configPath,\n hasCustomConfig,\n env,\n attempt,\n}: {\n launcher: SpawnLauncher\n userArgs: string[]\n failedFiles: string[]\n retryConcurrency: number\n configPath: string\n hasCustomConfig: boolean\n env: NodeJS.ProcessEnv\n attempt: number\n}): Promise<{ failedFiles: string[]; lastError: unknown }> {\n const failedAgain = new Set<string>()\n let lastError: unknown = null\n let nextIndex = 0\n\n async function runNext(): Promise<void> {\n while (nextIndex < failedFiles.length) {\n const fileIndex = nextIndex\n nextIndex += 1\n\n const failedFile = failedFiles[fileIndex]\n const retryArgs = buildPlaywrightWorkerRetryArgs(userArgs, [failedFile], attempt)\n const retryPlaywrightArgs = [\"test\"]\n if (!hasCustomConfig) {\n retryPlaywrightArgs.push(\"--config\", configPath)\n }\n retryPlaywrightArgs.push(...retryArgs)\n\n try {\n await runPlaywrightOnce({\n launcher,\n args: retryPlaywrightArgs,\n env,\n outputMode: \"line\",\n successMessage: null,\n })\n } catch (retryError) {\n lastError = retryError\n failedAgain.add(failedFile)\n }\n }\n }\n\n await Promise.all(\n Array.from({ length: Math.max(1, Math.min(retryConcurrency, failedFiles.length)) }, () => runNext()),\n )\n\n return {\n failedFiles: failedFiles.filter((failedFile) => failedAgain.has(failedFile)),\n lastError,\n }\n}\n\nasync function readJson(filePath: string): Promise<any | null> {\n try {\n const raw = await fsPromises.readFile(filePath, \"utf8\")\n return JSON.parse(raw)\n } catch {\n return null\n }\n}\n\nfunction ensureJsxRuntimeShim(projectRoot: string): void {\n const shimDir = path.join(projectRoot, \"node_modules\", \"playwright\")\n fs.mkdirSync(shimDir, { recursive: true })\n const shims = [\n { file: \"jsx-runtime.js\", target: \"react/jsx-runtime\" },\n { file: \"jsx-dev-runtime.js\", target: \"react/jsx-dev-runtime\" },\n ]\n\n for (const { file, target } of shims) {\n const filePath = path.join(shimDir, file)\n if (!fs.existsSync(filePath)) {\n const content = `export * from \"${target}\";\\nexport { default } from \"${target}\";\\n`\n fs.writeFileSync(filePath, content, \"utf8\")\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"playwright.js","names":["fs","fsPromises","path","createRequire","fileURLToPath","spawnAndCaptureStdout","spawnWithLogs","withRegisterShim","SpawnLauncher","require","import","meta","url","moduleDir","dirname","COMBINED_COVERAGE_ENV_VAR","PLAYWRIGHT_RESULTS_FILE","join","process","cwd","PlaywrightReportSummary","failedFiles","PlaywrightRuntimeSettings","retries","workers","PLAYWRIGHT_OPTIONS_WITH_REQUIRED_VALUE","Set","PLAYWRIGHT_OPTIONS_WITH_OPTIONAL_VALUE","PLAYWRIGHT_OPTIONS_TO_REMOVE_FOR_WORKER_RETRY","PLAYWRIGHT_OPTIONS_TO_REMOVE_FOR_INITIAL_FRESH_RUN","runPlaywright","userArgs","disableCoverage","Promise","configPath","existsSync","hasCustomConfig","some","arg","startsWith","ensureJsxRuntimeShim","launcher","resolvePlaywrightLauncher","env","RB_DISABLE_COVERAGE","runtimeSettings","resolveFreshWorkerRetrySettings","configuredRetries","retryConcurrency","Math","max","resultsMtimeBeforeRun","getFileMtimeMs","initialRunArgs","buildPlaywrightInitialFreshWorkerArgs","initialPlaywrightArgs","push","runPlaywrightOnce","args","error","summary","readPlaywrightReportSummary","length","lastError","maxAttempts","attempt","activeRetryWorkers","min","console","warn","retryResults","runPlaywrightRetryAttempt","outputMode","successMessage","failureMessage","stdoutLinePrefix","stderrLinePrefix","NodeJS","ProcessEnv","name","undefined","cliPath","resolveCliPath","command","execPath","localBin","resolve","searchRoots","base","pkgPath","paths","_error","buildPlaywrightWorkerRetryArgs","optionArgs","extractPlaywrightOptionArgs","sanitizedOptions","removePlaywrightOptions","buildPlaywrightRetryOutputDir","positionalArgs","extractPlaywrightPositionalArgs","configuredSettings","probeConfiguredPlaywrightSettings","probeArgs","extractPlaywrightProjectArgs","stdout","json","parseJsonObjectFromText","resolvePlaywrightRetriesFromReport","resolvePlaywrightWorkersFromReport","output","i","next","input","JSON","parse","start","indexOf","end","lastIndexOf","slice","includes","has","optionsToRemove","normalized","split","resultsFilePath","newerThanMtimeMs","stats","stat","catch","mtimeMs","data","readJson","resolveFailedPlaywrightFiles","filePath","statSync","projects","Array","isArray","config","retriesFromProjects","map","project","Number","filter","value","isFinite","floor","fallback","configWorkers","workersFromProjects","metadata","actualWorkers","suites","rootDir","suite","collectFailedPlaywrightFiles","from","sort","specs","spec","isPlaywrightSpecSuccessful","file","normalizePlaywrightReportFile","add","innerSuites","innerSuite","ok","tests","every","test","testStatus","String","status","results","result","raw","trim","absolutePath","isAbsolute","normalize","cwdCandidate","rootCandidate","relative","toPosixPath","replaceAll","sep","slug","replace","createPlaywrightRetryEnv","baseEnv","PLAYWRIGHT_FORCE_TTY","formatPlaywrightRetryLogLabel","failedFile","formatPlaywrightRetryLinePrefix","stream","failedAgain","nextIndex","retryEnv","runNext","fileIndex","retryLogLabel","retryArgs","retryPlaywrightArgs","retryError","all","readFile","projectRoot","shimDir","mkdirSync","recursive","shims","target","content","writeFileSync"],"sources":["../../src/runners/playwright.ts"],"sourcesContent":["import fs from \"node:fs\"\nimport fsPromises from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { createRequire } from \"node:module\"\nimport { fileURLToPath } from \"node:url\"\n\nimport { spawnAndCaptureStdout, spawnWithLogs, withRegisterShim, type SpawnLauncher } from \"./process\"\n\n\nconst require = createRequire(import.meta.url)\nconst moduleDir = path.dirname(fileURLToPath(import.meta.url))\n\nconst COMBINED_COVERAGE_ENV_VAR = \"RB_TEST_COMBINED_COVERAGE\"\nconst PLAYWRIGHT_RESULTS_FILE = path.join(process.cwd(), \"build\", \"playwright\", \"results.json\")\n\ntype PlaywrightReportSummary = {\n failedFiles: string[]\n}\n\ntype PlaywrightRuntimeSettings = {\n retries: number | null\n workers: number | null\n}\n\nconst PLAYWRIGHT_OPTIONS_WITH_REQUIRED_VALUE = new Set([\n \"--browser\",\n \"--config\",\n \"-c\",\n \"--grep\",\n \"-g\",\n \"--grep-invert\",\n \"--global-timeout\",\n \"--max-failures\",\n \"--output\",\n \"--project\",\n \"--repeat-each\",\n \"--reporter\",\n \"--retries\",\n \"--shard\",\n \"--timeout\",\n \"--trace\",\n \"--tsconfig\",\n \"--workers\",\n \"-j\",\n])\n\nconst PLAYWRIGHT_OPTIONS_WITH_OPTIONAL_VALUE = new Set([\n \"--only-changed\",\n \"--update-snapshots\",\n \"-u\",\n])\n\nconst PLAYWRIGHT_OPTIONS_TO_REMOVE_FOR_WORKER_RETRY = new Set([\n \"--last-failed\",\n \"--only-changed\",\n \"--output\",\n \"--retries\",\n \"--pass-with-no-tests\",\n \"--reporter\",\n \"--workers\",\n \"-j\",\n])\n\nconst PLAYWRIGHT_OPTIONS_TO_REMOVE_FOR_INITIAL_FRESH_RUN = new Set([\n \"--retries\",\n])\n\nexport async function runPlaywright(\n userArgs: string[],\n { disableCoverage = false }: { disableCoverage?: boolean } = {},\n): Promise<void> {\n const configPath = fs.existsSync(\n path.join(process.cwd(), \"playwright.config.ts\"),\n )\n ? path.join(process.cwd(), \"playwright.config.ts\")\n : path.join(moduleDir, \"..\", \"playwright.config.ts\")\n\n const hasCustomConfig = userArgs.some((arg) => {\n if (arg === \"--config\" || arg === \"-c\") {\n return true\n }\n\n return arg.startsWith(\"--config=\")\n })\n\n ensureJsxRuntimeShim(process.cwd())\n const launcher = resolvePlaywrightLauncher()\n const env = withRegisterShim(process.env)\n env[COMBINED_COVERAGE_ENV_VAR] = \"1\"\n if (disableCoverage) {\n env.RB_DISABLE_COVERAGE = \"1\"\n }\n\n const runtimeSettings = await resolveFreshWorkerRetrySettings({\n launcher,\n configPath,\n hasCustomConfig,\n userArgs,\n env,\n })\n const configuredRetries = runtimeSettings.retries\n const retryConcurrency = Math.max(1, runtimeSettings.workers ?? 1)\n\n const resultsMtimeBeforeRun = getFileMtimeMs(PLAYWRIGHT_RESULTS_FILE)\n const initialRunArgs = buildPlaywrightInitialFreshWorkerArgs(userArgs)\n const initialPlaywrightArgs = [\"test\"]\n if (!hasCustomConfig) {\n initialPlaywrightArgs.push(\"--config\", configPath)\n }\n initialPlaywrightArgs.push(...initialRunArgs)\n\n try {\n await runPlaywrightOnce({\n launcher,\n args: initialPlaywrightArgs,\n env,\n })\n return\n } catch (error) {\n const summary = await readPlaywrightReportSummary(PLAYWRIGHT_RESULTS_FILE, resultsMtimeBeforeRun)\n if (!summary || configuredRetries <= 0 || summary.failedFiles.length === 0) {\n throw error\n }\n\n let lastError = error\n let failedFiles = summary.failedFiles\n const maxAttempts = configuredRetries\n\n for (let attempt = 1; attempt <= maxAttempts && failedFiles.length > 0; attempt += 1) {\n const activeRetryWorkers = Math.max(1, Math.min(retryConcurrency, failedFiles.length))\n console.warn(\n `[rb-test] Retrying ${failedFiles.length} failed Playwright file(s) with fresh workers (${attempt}/${maxAttempts}, up to ${activeRetryWorkers} in parallel)`,\n )\n const retryResults = await runPlaywrightRetryAttempt({\n launcher,\n userArgs,\n failedFiles,\n retryConcurrency: activeRetryWorkers,\n configPath,\n hasCustomConfig,\n env,\n attempt,\n })\n\n if (retryResults.lastError) {\n lastError = retryResults.lastError\n }\n failedFiles = retryResults.failedFiles\n }\n\n if (failedFiles.length === 0) {\n return\n }\n\n throw lastError\n }\n}\n\nfunction runPlaywrightOnce({\n launcher,\n args,\n env,\n outputMode = \"chunk\",\n successMessage,\n failureMessage,\n stdoutLinePrefix,\n stderrLinePrefix,\n}: {\n launcher: SpawnLauncher\n args: string[]\n env: NodeJS.ProcessEnv\n outputMode?: \"chunk\" | \"line\"\n successMessage?: string | null\n failureMessage?: string | null\n stdoutLinePrefix?: string\n stderrLinePrefix?: string\n}): Promise<void> {\n return spawnWithLogs({\n name: \"Playwright\",\n launcher,\n args,\n env,\n outputMode,\n successMessage: successMessage === undefined ? \"Playwright suite passed!\" : successMessage ?? undefined,\n failureMessage: failureMessage === undefined ? \"Playwright failed\" : failureMessage ?? undefined,\n stdoutLinePrefix,\n stderrLinePrefix,\n })\n}\n\nfunction resolvePlaywrightLauncher(): SpawnLauncher {\n const cliPath = resolveCliPath()\n if (cliPath) {\n return {\n command: process.execPath,\n args: [cliPath],\n }\n }\n\n const localBin = path.resolve(process.cwd(), \"node_modules/.bin/playwright\")\n if (fs.existsSync(localBin)) {\n return {\n command: localBin,\n args: [],\n }\n }\n\n return {\n command: \"playwright\",\n args: [],\n }\n}\n\nfunction resolveCliPath(): string | null {\n const searchRoots = [process.cwd(), moduleDir]\n\n for (const base of searchRoots) {\n try {\n const pkgPath = require.resolve(\"@playwright/test/package.json\", { paths: [base] })\n const cliPath = path.join(path.dirname(pkgPath), \"cli.js\")\n if (fs.existsSync(cliPath)) {\n return cliPath\n }\n } catch (_error) {\n // Continue searching for a usable playwright launcher.\n }\n }\n\n return null\n}\n\nfunction buildPlaywrightWorkerRetryArgs(userArgs: string[], failedFiles: string[], attempt: number): string[] {\n const optionArgs = extractPlaywrightOptionArgs(userArgs)\n const sanitizedOptions = removePlaywrightOptions(optionArgs, PLAYWRIGHT_OPTIONS_TO_REMOVE_FOR_WORKER_RETRY)\n return [\n ...sanitizedOptions,\n \"--retries=0\",\n \"--workers=1\",\n \"--reporter=list\",\n \"--output\",\n buildPlaywrightRetryOutputDir(attempt, failedFiles),\n ...failedFiles,\n ]\n}\n\nfunction buildPlaywrightInitialFreshWorkerArgs(userArgs: string[]): string[] {\n const optionArgs = extractPlaywrightOptionArgs(userArgs)\n const sanitizedOptions = removePlaywrightOptions(optionArgs, PLAYWRIGHT_OPTIONS_TO_REMOVE_FOR_INITIAL_FRESH_RUN)\n const positionalArgs = extractPlaywrightPositionalArgs(userArgs)\n return [...sanitizedOptions, \"--retries=0\", ...positionalArgs]\n}\n\nasync function resolveFreshWorkerRetrySettings({\n launcher,\n configPath,\n hasCustomConfig,\n userArgs,\n env,\n}: {\n launcher: SpawnLauncher\n configPath: string\n hasCustomConfig: boolean\n userArgs: string[]\n env: NodeJS.ProcessEnv\n}): Promise<{ retries: number; workers: number | null }> {\n const configuredSettings = await probeConfiguredPlaywrightSettings({\n launcher,\n configPath,\n hasCustomConfig,\n userArgs,\n env,\n })\n\n return {\n retries: configuredSettings.retries ?? 0,\n workers: configuredSettings.workers,\n }\n}\n\nasync function probeConfiguredPlaywrightSettings({\n launcher,\n configPath,\n hasCustomConfig,\n userArgs,\n env,\n}: {\n launcher: SpawnLauncher\n configPath: string\n hasCustomConfig: boolean\n userArgs: string[]\n env: NodeJS.ProcessEnv\n}): Promise<PlaywrightRuntimeSettings> {\n const probeArgs = [\"test\"]\n if (!hasCustomConfig) {\n probeArgs.push(\"--config\", configPath)\n }\n probeArgs.push(\"--list\", \"--reporter=json\", ...extractPlaywrightProjectArgs(userArgs))\n\n try {\n const stdout = await spawnAndCaptureStdout({\n name: \"Playwright retries probe\",\n launcher,\n args: probeArgs,\n env,\n })\n const json = parseJsonObjectFromText(stdout)\n if (!json) {\n return { retries: null, workers: null }\n }\n return {\n retries: resolvePlaywrightRetriesFromReport(json),\n workers: resolvePlaywrightWorkersFromReport(json),\n }\n } catch (_error) {\n return { retries: null, workers: null }\n }\n}\n\nfunction extractPlaywrightProjectArgs(userArgs: string[]): string[] {\n const output: string[] = []\n for (let i = 0; i < userArgs.length; i += 1) {\n const arg = userArgs[i]\n if (arg === \"--\") {\n break\n }\n if (arg === \"--project\") {\n const next = userArgs[i + 1]\n if (next != null) {\n output.push(arg, next)\n i += 1\n }\n continue\n }\n if (arg.startsWith(\"--project=\")) {\n output.push(arg)\n }\n }\n return output\n}\n\nfunction parseJsonObjectFromText(input: string): any | null {\n try {\n return JSON.parse(input)\n } catch {\n const start = input.indexOf(\"{\")\n const end = input.lastIndexOf(\"}\")\n if (start === -1 || end === -1 || end <= start) {\n return null\n }\n try {\n return JSON.parse(input.slice(start, end + 1))\n } catch {\n return null\n }\n }\n}\n\nfunction extractPlaywrightPositionalArgs(userArgs: string[]): string[] {\n const output: string[] = []\n\n for (let i = 0; i < userArgs.length; i += 1) {\n const arg = userArgs[i]\n\n if (arg === \"--\") {\n break\n }\n\n if (!arg.startsWith(\"-\")) {\n output.push(arg)\n continue\n }\n\n if (arg.includes(\"=\")) {\n continue\n }\n\n if (PLAYWRIGHT_OPTIONS_WITH_REQUIRED_VALUE.has(arg)) {\n const next = userArgs[i + 1]\n if (next !== undefined) {\n i += 1\n }\n continue\n }\n\n if (PLAYWRIGHT_OPTIONS_WITH_OPTIONAL_VALUE.has(arg)) {\n const next = userArgs[i + 1]\n if (next !== undefined && !next.startsWith(\"-\")) {\n i += 1\n }\n }\n }\n\n return output\n}\n\nfunction removePlaywrightOptions(optionArgs: string[], optionsToRemove: Set<string>): string[] {\n const output: string[] = []\n for (let i = 0; i < optionArgs.length; i += 1) {\n const arg = optionArgs[i]\n const normalized = arg.split(\"=\")[0]\n if (!arg.startsWith(\"-\") || !optionsToRemove.has(normalized)) {\n output.push(arg)\n continue\n }\n\n if (arg.includes(\"=\")) {\n continue\n }\n\n if (PLAYWRIGHT_OPTIONS_WITH_REQUIRED_VALUE.has(normalized)) {\n const next = optionArgs[i + 1]\n if (next !== undefined) {\n i += 1\n }\n continue\n }\n\n if (PLAYWRIGHT_OPTIONS_WITH_OPTIONAL_VALUE.has(normalized)) {\n const next = optionArgs[i + 1]\n if (next !== undefined && !next.startsWith(\"-\")) {\n i += 1\n }\n }\n }\n return output\n}\n\nfunction extractPlaywrightOptionArgs(userArgs: string[]): string[] {\n const output: string[] = []\n\n for (let i = 0; i < userArgs.length; i += 1) {\n const arg = userArgs[i]\n\n if (arg === \"--\") {\n break\n }\n\n if (!arg.startsWith(\"-\")) {\n continue\n }\n\n output.push(arg)\n\n if (arg.includes(\"=\")) {\n continue\n }\n\n if (PLAYWRIGHT_OPTIONS_WITH_REQUIRED_VALUE.has(arg)) {\n const next = userArgs[i + 1]\n if (next !== undefined) {\n output.push(next)\n i += 1\n }\n continue\n }\n\n if (PLAYWRIGHT_OPTIONS_WITH_OPTIONAL_VALUE.has(arg)) {\n const next = userArgs[i + 1]\n if (next !== undefined && !next.startsWith(\"-\")) {\n output.push(next)\n i += 1\n }\n }\n }\n\n return output\n}\n\nasync function readPlaywrightReportSummary(\n resultsFilePath: string,\n newerThanMtimeMs: number | null,\n): Promise<PlaywrightReportSummary | null> {\n const stats = await fsPromises.stat(resultsFilePath).catch(() => null)\n if (!stats) {\n return null\n }\n\n if (newerThanMtimeMs != null && stats.mtimeMs <= newerThanMtimeMs) {\n return null\n }\n\n const data = await readJson(resultsFilePath)\n if (!data || typeof data !== \"object\") {\n return null\n }\n\n return {\n failedFiles: resolveFailedPlaywrightFiles(data),\n }\n}\n\nfunction getFileMtimeMs(filePath: string): number | null {\n try {\n return fs.statSync(filePath).mtimeMs\n } catch {\n return null\n }\n}\n\nfunction resolvePlaywrightRetriesFromReport(data: any): number {\n const projects = Array.isArray(data?.config?.projects) ? data.config.projects : []\n const retriesFromProjects = projects\n .map((project: any) => Number(project?.retries))\n .filter((value: number) => Number.isFinite(value))\n .map((value: number) => Math.max(0, Math.floor(value)))\n\n if (retriesFromProjects.length > 0) {\n return Math.max(...retriesFromProjects)\n }\n\n const fallback = Number(data?.config?.retries)\n if (Number.isFinite(fallback)) {\n return Math.max(0, Math.floor(fallback))\n }\n\n return 0\n}\n\nfunction resolvePlaywrightWorkersFromReport(data: any): number | null {\n const configWorkers = Number(data?.config?.workers)\n if (Number.isFinite(configWorkers)) {\n return Math.max(1, Math.floor(configWorkers))\n }\n\n const projects = Array.isArray(data?.config?.projects) ? data.config.projects : []\n const workersFromProjects = projects\n .map((project: any) => Number(project?.metadata?.actualWorkers ?? project?.workers))\n .filter((value: number) => Number.isFinite(value))\n .map((value: number) => Math.max(1, Math.floor(value)))\n\n if (workersFromProjects.length > 0) {\n return Math.max(...workersFromProjects)\n }\n\n return null\n}\n\nfunction resolveFailedPlaywrightFiles(data: any): string[] {\n const suites = Array.isArray(data?.suites) ? data.suites : []\n const rootDir = typeof data?.config?.rootDir === \"string\" ? data.config.rootDir : null\n const failedFiles = new Set<string>()\n\n for (const suite of suites) {\n collectFailedPlaywrightFiles(suite, failedFiles, rootDir)\n }\n\n return Array.from(failedFiles).sort()\n}\n\nfunction collectFailedPlaywrightFiles(suite: any, output: Set<string>, rootDir: string | null): void {\n const specs = Array.isArray(suite?.specs) ? suite.specs : []\n\n for (const spec of specs) {\n if (isPlaywrightSpecSuccessful(spec)) {\n continue\n }\n const file = normalizePlaywrightReportFile(spec?.file ?? suite?.file, rootDir)\n if (file) {\n output.add(file)\n }\n }\n\n const innerSuites = Array.isArray(suite?.suites) ? suite.suites : []\n for (const innerSuite of innerSuites) {\n collectFailedPlaywrightFiles(innerSuite, output, rootDir)\n }\n}\n\nfunction isPlaywrightSpecSuccessful(spec: any): boolean {\n if (typeof spec?.ok === \"boolean\") {\n return spec.ok\n }\n\n const tests = Array.isArray(spec?.tests) ? spec.tests : []\n if (tests.length === 0) {\n return false\n }\n\n return tests.every((test: any) => {\n const testStatus = String(test?.status ?? \"\")\n if (testStatus === \"expected\" || testStatus === \"skipped\" || testStatus === \"flaky\") {\n return true\n }\n\n const results = Array.isArray(test?.results) ? test.results : []\n if (results.length === 0) {\n return false\n }\n return results.every((result: any) => result?.status === \"passed\" || result?.status === \"skipped\")\n })\n}\n\nfunction normalizePlaywrightReportFile(filePath: unknown, rootDir: string | null): string | null {\n const raw = String(filePath ?? \"\").trim()\n if (!raw) {\n return null\n }\n\n let absolutePath: string\n if (path.isAbsolute(raw)) {\n absolutePath = path.normalize(raw)\n } else {\n const cwdCandidate = path.resolve(process.cwd(), raw)\n const rootCandidate = rootDir ? path.resolve(rootDir, raw) : null\n if (rootCandidate && fs.existsSync(rootCandidate)) {\n absolutePath = rootCandidate\n } else if (fs.existsSync(cwdCandidate)) {\n absolutePath = cwdCandidate\n } else {\n absolutePath = rootCandidate ?? cwdCandidate\n }\n }\n\n const relative = path.relative(process.cwd(), absolutePath)\n if (relative === \"\" || (!relative.startsWith(\"..\") && !path.isAbsolute(relative))) {\n return toPosixPath(relative || raw)\n }\n\n return toPosixPath(raw)\n}\n\nfunction toPosixPath(input: unknown): string {\n return String(input ?? \"\").replaceAll(\"\\\\\", \"/\").split(path.sep).join(\"/\")\n}\n\nfunction buildPlaywrightRetryOutputDir(attempt: number, failedFiles: string[]): string {\n const slug = failedFiles\n .map((file) => toPosixPath(file).replace(/[^a-zA-Z0-9._/-]+/g, \"-\").replace(/\\//g, \"__\"))\n .join(\"--\")\n return toPosixPath(path.join(\"build\", \"playwright\", \"test-results\", \"rb-retries\", `attempt-${attempt}`, slug))\n}\n\nexport function createPlaywrightRetryEnv(baseEnv: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n return {\n ...baseEnv,\n PLAYWRIGHT_FORCE_TTY: \"false\",\n }\n}\n\nexport function formatPlaywrightRetryLogLabel({\n failedFile,\n}: {\n failedFile: string\n}): string {\n return `[${toPosixPath(failedFile)}]`\n}\n\nexport function formatPlaywrightRetryLinePrefix({\n failedFile,\n stream,\n}: {\n failedFile: string\n stream: \"stdout\" | \"stderr\"\n}): string {\n return stream === \"stderr\"\n ? `[${toPosixPath(failedFile)} stderr] `\n : `${formatPlaywrightRetryLogLabel({ failedFile })} `\n}\n\nasync function runPlaywrightRetryAttempt({\n launcher,\n userArgs,\n failedFiles,\n retryConcurrency,\n configPath,\n hasCustomConfig,\n env,\n attempt,\n}: {\n launcher: SpawnLauncher\n userArgs: string[]\n failedFiles: string[]\n retryConcurrency: number\n configPath: string\n hasCustomConfig: boolean\n env: NodeJS.ProcessEnv\n attempt: number\n}): Promise<{ failedFiles: string[]; lastError: unknown }> {\n const failedAgain = new Set<string>()\n let lastError: unknown = null\n let nextIndex = 0\n const retryEnv = createPlaywrightRetryEnv(env)\n\n async function runNext(): Promise<void> {\n while (nextIndex < failedFiles.length) {\n const fileIndex = nextIndex\n nextIndex += 1\n\n const failedFile = failedFiles[fileIndex]\n const retryLogLabel = formatPlaywrightRetryLogLabel({\n failedFile,\n })\n const retryArgs = buildPlaywrightWorkerRetryArgs(userArgs, [failedFile], attempt)\n const retryPlaywrightArgs = [\"test\"]\n if (!hasCustomConfig) {\n retryPlaywrightArgs.push(\"--config\", configPath)\n }\n retryPlaywrightArgs.push(...retryArgs)\n\n try {\n console.warn(`${retryLogLabel} Starting fresh-worker retry`)\n await runPlaywrightOnce({\n launcher,\n args: retryPlaywrightArgs,\n env: retryEnv,\n outputMode: \"line\",\n successMessage: null,\n failureMessage: `${retryLogLabel} Playwright failed`,\n stdoutLinePrefix: formatPlaywrightRetryLinePrefix({\n failedFile,\n stream: \"stdout\",\n }),\n stderrLinePrefix: formatPlaywrightRetryLinePrefix({\n failedFile,\n stream: \"stderr\",\n }),\n })\n } catch (retryError) {\n lastError = retryError\n failedAgain.add(failedFile)\n }\n }\n }\n\n await Promise.all(\n Array.from(\n { length: Math.max(1, Math.min(retryConcurrency, failedFiles.length)) },\n () => runNext(),\n ),\n )\n\n return {\n failedFiles: failedFiles.filter((failedFile) => failedAgain.has(failedFile)),\n lastError,\n }\n}\n\nasync function readJson(filePath: string): Promise<any | null> {\n try {\n const raw = await fsPromises.readFile(filePath, \"utf8\")\n return JSON.parse(raw)\n } catch {\n return null\n }\n}\n\nfunction ensureJsxRuntimeShim(projectRoot: string): void {\n const shimDir = path.join(projectRoot, \"node_modules\", \"playwright\")\n fs.mkdirSync(shimDir, { recursive: true })\n const shims = [\n { file: \"jsx-runtime.js\", target: \"react/jsx-runtime\" },\n { file: \"jsx-dev-runtime.js\", target: \"react/jsx-dev-runtime\" },\n ]\n\n for (const { file, target } of shims) {\n const filePath = path.join(shimDir, file)\n if (!fs.existsSync(filePath)) {\n const content = `export * from \"${target}\";\\nexport { default } from \"${target}\";\\n`\n fs.writeFileSync(filePath, content, \"utf8\")\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ export type SpawnLauncher = {
|
|
|
3
3
|
args?: string[];
|
|
4
4
|
};
|
|
5
5
|
type SpawnOutputMode = "chunk" | "line";
|
|
6
|
-
export declare function spawnWithLogs({ name, launcher, args, env, successMessage, failureMessage, outputMode, }: {
|
|
6
|
+
export declare function spawnWithLogs({ name, launcher, args, env, successMessage, failureMessage, outputMode, stdoutLinePrefix, stderrLinePrefix, }: {
|
|
7
7
|
name: string;
|
|
8
8
|
launcher: SpawnLauncher;
|
|
9
9
|
args: string[];
|
|
@@ -11,6 +11,8 @@ export declare function spawnWithLogs({ name, launcher, args, env, successMessag
|
|
|
11
11
|
successMessage?: string;
|
|
12
12
|
failureMessage?: string;
|
|
13
13
|
outputMode?: SpawnOutputMode;
|
|
14
|
+
stdoutLinePrefix?: string;
|
|
15
|
+
stderrLinePrefix?: string;
|
|
14
16
|
}): Promise<void>;
|
|
15
17
|
export declare function spawnAndCaptureStdout({ name, launcher, args, env, }: {
|
|
16
18
|
name: string;
|
|
@@ -19,5 +21,6 @@ export declare function spawnAndCaptureStdout({ name, launcher, args, env, }: {
|
|
|
19
21
|
env: NodeJS.ProcessEnv;
|
|
20
22
|
}): Promise<string>;
|
|
21
23
|
export declare function withRegisterShim(baseEnv: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
24
|
+
export declare function prefixOutputLine(line: string, prefix?: string): string;
|
|
22
25
|
export {};
|
|
23
26
|
//# sourceMappingURL=process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/runners/process.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,KAAK,eAAe,GAAG,OAAO,GAAG,MAAM,CAAA;AAIvC,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,GAAG,EACH,cAAc,EACd,cAAc,EACd,UAAoB,EACpB,gBAAgB,EAChB,gBAAgB,GACjB,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEhB;AAED,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,GAAG,GACJ,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CACvB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkClB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAM9E;AAUD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAUtE"}
|
package/dist/runners/process.js
CHANGED
|
@@ -5,7 +5,7 @@ import { spawn } from "node:child_process";
|
|
|
5
5
|
var moduleDir = path.dirname(fileURLToPath(import.meta.url));
|
|
6
6
|
var isAider = process.env.IS_AIDER === "yes";
|
|
7
7
|
var queuedOutputWrite = Promise.resolve();
|
|
8
|
-
function spawnWithLogs({ name, launcher, args, env, successMessage, failureMessage, outputMode = "chunk" }) {
|
|
8
|
+
function spawnWithLogs({ name, launcher, args, env, successMessage, failureMessage, outputMode = "chunk", stdoutLinePrefix, stderrLinePrefix }) {
|
|
9
9
|
return new Promise((resolve, reject) => {
|
|
10
10
|
const stdoutBuffer = [];
|
|
11
11
|
const stderrBuffer = [];
|
|
@@ -13,8 +13,8 @@ function spawnWithLogs({ name, launcher, args, env, successMessage, failureMessa
|
|
|
13
13
|
shell: false,
|
|
14
14
|
env
|
|
15
15
|
});
|
|
16
|
-
const stdoutForwarder = createOutputForwarder(process.stdout, outputMode);
|
|
17
|
-
const stderrForwarder = createOutputForwarder(process.stderr, outputMode);
|
|
16
|
+
const stdoutForwarder = createOutputForwarder(process.stdout, outputMode, stdoutLinePrefix);
|
|
17
|
+
const stderrForwarder = createOutputForwarder(process.stderr, outputMode, stderrLinePrefix);
|
|
18
18
|
child.stdout?.on("data", (data) => {
|
|
19
19
|
if (!isAider) stdoutForwarder.write(data);
|
|
20
20
|
stdoutBuffer.push(data.toString());
|
|
@@ -83,12 +83,17 @@ function appendNodeRequire(existing, modulePath) {
|
|
|
83
83
|
if (!existing || existing.length === 0) return flag;
|
|
84
84
|
return `${existing} ${flag}`;
|
|
85
85
|
}
|
|
86
|
-
function
|
|
86
|
+
function prefixOutputLine(line, prefix) {
|
|
87
|
+
if (!prefix || line.length === 0) return line;
|
|
88
|
+
if (line.endsWith("\n")) return `${prefix}${line.slice(0, -1)}\n`;
|
|
89
|
+
return `${prefix}${line}`;
|
|
90
|
+
}
|
|
91
|
+
function createOutputForwarder(stream, outputMode, linePrefix) {
|
|
87
92
|
let pendingLine = "";
|
|
88
93
|
return {
|
|
89
94
|
write(data) {
|
|
90
95
|
const text = data.toString();
|
|
91
|
-
if (outputMode === "chunk") {
|
|
96
|
+
if (outputMode === "chunk" && !linePrefix) {
|
|
92
97
|
queueStreamWrite(stream, text);
|
|
93
98
|
return;
|
|
94
99
|
}
|
|
@@ -98,12 +103,12 @@ function createOutputForwarder(stream, outputMode) {
|
|
|
98
103
|
if (newlineIndex === -1) break;
|
|
99
104
|
const nextLine = pendingLine.slice(0, newlineIndex + 1);
|
|
100
105
|
pendingLine = pendingLine.slice(newlineIndex + 1);
|
|
101
|
-
queueStreamWrite(stream, nextLine);
|
|
106
|
+
queueStreamWrite(stream, prefixOutputLine(nextLine, linePrefix));
|
|
102
107
|
}
|
|
103
108
|
},
|
|
104
109
|
flush() {
|
|
105
110
|
if (pendingLine.length === 0) return;
|
|
106
|
-
queueStreamWrite(stream, pendingLine);
|
|
111
|
+
queueStreamWrite(stream, prefixOutputLine(pendingLine, linePrefix));
|
|
107
112
|
pendingLine = "";
|
|
108
113
|
}
|
|
109
114
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","names":["spawn","path","fileURLToPath","moduleDir","dirname","import","meta","url","isAider","process","env","IS_AIDER","SpawnLauncher","command","args","SpawnOutputMode","queuedOutputWrite","Promise","resolve","spawnWithLogs","name","launcher","successMessage","failureMessage","outputMode","NodeJS","ProcessEnv","reject","stdoutBuffer","stderrBuffer","child","shell","stdoutForwarder","createOutputForwarder","stdout","stderrForwarder","stderr","on","data","write","push","toString","code","flush","pendingWrites","then","console","log","error","length","join","Error","spawnAndCaptureStdout","withRegisterShim","baseEnv","nodeOptions","appendNodeRequire","NODE_OPTIONS","existing","modulePath","flag","stream","WriteStream","pendingLine","Buffer","text","queueStreamWrite","newlineIndex","indexOf","nextLine","
|
|
1
|
+
{"version":3,"file":"process.js","names":["spawn","path","fileURLToPath","moduleDir","dirname","import","meta","url","isAider","process","env","IS_AIDER","SpawnLauncher","command","args","SpawnOutputMode","queuedOutputWrite","Promise","resolve","spawnWithLogs","name","launcher","successMessage","failureMessage","outputMode","stdoutLinePrefix","stderrLinePrefix","NodeJS","ProcessEnv","reject","stdoutBuffer","stderrBuffer","child","shell","stdoutForwarder","createOutputForwarder","stdout","stderrForwarder","stderr","on","data","write","push","toString","code","flush","pendingWrites","then","console","log","error","length","join","Error","spawnAndCaptureStdout","withRegisterShim","baseEnv","nodeOptions","appendNodeRequire","NODE_OPTIONS","existing","modulePath","flag","prefixOutputLine","line","prefix","endsWith","slice","stream","WriteStream","linePrefix","pendingLine","Buffer","text","queueStreamWrite","newlineIndex","indexOf","nextLine","catch","undefined"],"sources":["../../src/runners/process.ts"],"sourcesContent":["import { spawn } from \"node:child_process\"\nimport path from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\n\n\nconst moduleDir = path.dirname(fileURLToPath(import.meta.url))\nconst isAider = process.env.IS_AIDER === \"yes\"\n\nexport type SpawnLauncher = {\n command: string\n args?: string[]\n}\n\ntype SpawnOutputMode = \"chunk\" | \"line\"\n\nlet queuedOutputWrite: Promise<void> = Promise.resolve()\n\nexport function spawnWithLogs({\n name,\n launcher,\n args,\n env,\n successMessage,\n failureMessage,\n outputMode = \"chunk\",\n stdoutLinePrefix,\n stderrLinePrefix,\n}: {\n name: string\n launcher: SpawnLauncher\n args: string[]\n env: NodeJS.ProcessEnv\n successMessage?: string\n failureMessage?: string\n outputMode?: SpawnOutputMode\n stdoutLinePrefix?: string\n stderrLinePrefix?: string\n}): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n const stdoutBuffer: string[] = []\n const stderrBuffer: string[] = []\n\n const child = spawn(\n launcher.command,\n [...(launcher.args || []), ...args],\n {\n shell: false,\n env,\n },\n )\n\n const stdoutForwarder = createOutputForwarder(process.stdout, outputMode, stdoutLinePrefix)\n const stderrForwarder = createOutputForwarder(process.stderr, outputMode, stderrLinePrefix)\n\n child.stdout?.on(\"data\", (data) => {\n if (!isAider) {\n stdoutForwarder.write(data)\n }\n stdoutBuffer.push(data.toString())\n })\n\n child.stderr?.on(\"data\", (data) => {\n if (!isAider) {\n stderrForwarder.write(data)\n }\n stderrBuffer.push(data.toString())\n })\n\n child.on(\"close\", (code) => {\n if (!isAider) {\n stdoutForwarder.flush()\n stderrForwarder.flush()\n }\n\n const pendingWrites = queuedOutputWrite\n pendingWrites.then(() => {\n if (code === 0) {\n if (successMessage) {\n console.log(successMessage)\n }\n resolve()\n } else {\n console.error(failureMessage || `${name} failed:`)\n\n if (isAider) {\n if (stdoutBuffer.length > 0) {\n console.error(stdoutBuffer.join(\"\"))\n }\n\n if (stderrBuffer.length > 0) {\n console.error(stderrBuffer.join(\"\"))\n }\n }\n\n reject(new Error(`${name} failed with exit code: ${code}`))\n }\n })\n })\n\n child.on(\"error\", (error) => {\n console.error(`Error spawning ${name}:`, error)\n reject(error)\n })\n })\n}\n\nexport function spawnAndCaptureStdout({\n name,\n launcher,\n args,\n env,\n}: {\n name: string\n launcher: SpawnLauncher\n args: string[]\n env: NodeJS.ProcessEnv\n}): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const stdoutBuffer: string[] = []\n const stderrBuffer: string[] = []\n\n const child = spawn(\n launcher.command,\n [...(launcher.args || []), ...args],\n {\n shell: false,\n env,\n },\n )\n\n child.stdout?.on(\"data\", (data) => {\n stdoutBuffer.push(data.toString())\n })\n\n child.stderr?.on(\"data\", (data) => {\n stderrBuffer.push(data.toString())\n })\n\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolve(stdoutBuffer.join(\"\"))\n } else {\n reject(new Error(`${name} failed with exit code: ${code}\\n${stderrBuffer.join(\"\")}`))\n }\n })\n\n child.on(\"error\", (error) => {\n reject(error)\n })\n })\n}\n\nexport function withRegisterShim(baseEnv: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const nodeOptions = appendNodeRequire(baseEnv.NODE_OPTIONS, path.join(moduleDir, \"..\", \"register-tty.cjs\"))\n return {\n ...baseEnv,\n NODE_OPTIONS: nodeOptions,\n }\n}\n\nfunction appendNodeRequire(existing: string | undefined, modulePath: string): string {\n const flag = `--require=${modulePath}`\n if (!existing || existing.length === 0) {\n return flag\n }\n return `${existing} ${flag}`\n}\n\nexport function prefixOutputLine(line: string, prefix?: string): string {\n if (!prefix || line.length === 0) {\n return line\n }\n\n if (line.endsWith(\"\\n\")) {\n return `${prefix}${line.slice(0, -1)}\\n`\n }\n\n return `${prefix}${line}`\n}\n\nfunction createOutputForwarder(stream: NodeJS.WriteStream, outputMode: SpawnOutputMode, linePrefix?: string) {\n let pendingLine = \"\"\n\n return {\n write(data: Buffer | string) {\n const text = data.toString()\n if (outputMode === \"chunk\" && !linePrefix) {\n queueStreamWrite(stream, text)\n return\n }\n\n pendingLine += text\n while (true) {\n const newlineIndex = pendingLine.indexOf(\"\\n\")\n if (newlineIndex === -1) {\n break\n }\n const nextLine = pendingLine.slice(0, newlineIndex + 1)\n pendingLine = pendingLine.slice(newlineIndex + 1)\n queueStreamWrite(stream, prefixOutputLine(nextLine, linePrefix))\n }\n },\n flush() {\n if (pendingLine.length === 0) {\n return\n }\n queueStreamWrite(stream, prefixOutputLine(pendingLine, linePrefix))\n pendingLine = \"\"\n },\n }\n}\n\nfunction queueStreamWrite(stream: NodeJS.WriteStream, text: string): void {\n queuedOutputWrite = queuedOutputWrite\n .then(() => new Promise<void>((resolve) => {\n stream.write(text, () => resolve())\n }))\n .catch(() => undefined)\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.d.ts","sourceRoot":"","sources":["../../src/runners/vitest.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAOvD,KAAK,aAAa,GAAG;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAAA;AAExE,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,aAAa,EACvB,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,QAAQ,EAAE,MAAM,EAAE,EAClB,EAAE,eAAuB,EAAE,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9D,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAErE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serverCoverage.d.ts","sourceRoot":"","sources":["../src/serverCoverage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGlD,KAAK,0BAA0B,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CA2B9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../src/vitest.config.ts"],"names":[],"mappings":";AAyGA,wBAKE"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clearDatabase.d.ts","sourceRoot":"","sources":["../../src/clearDatabase.ts"],"names":[],"mappings":"AAGA,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAejE"}
|
package/dist/src/cli.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collect.d.ts","sourceRoot":"","sources":["../../../src/coverage/collect.ts"],"names":[],"mappings":"AAKA,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAsDnH;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE9C;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAO7E;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CA4BzF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/coverage/config-loader.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAKrD,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB,CAAA;AAED,QAAA,MAAM,2BAA2B,UAMhC,CAAA;AAUD,wBAAsB,mBAAmB,CAAC,EACxC,QAAgB,EAChB,UAAwC,GACzC,GAAE,uBAA4B,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CA4BvE;AAED,wBAAgB,uBAAuB,CAAC,EACtC,QAAgB,EAChB,UAAwC,GACzC,GAAE,uBAA4B,GAAG,sBAAsB,GAAG,IAAI,CA4B9D;AAiRD,OAAO,EAAE,2BAA2B,EAAE,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/coverage/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAA8F,MAAM,SAAS,CAAA;AAajK,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,GAAG,cAAc,CAuCpF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"console-text-report.d.ts","sourceRoot":"","sources":["../../../src/coverage/console-text-report.ts"],"names":[],"mappings":"AAMA,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,GACX;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAWpD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/coverage/files.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAe7C,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,EACtB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC,CAgCnB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC,CAwBf"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../src/coverage/fixtures.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAyB7C,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAA;CAAE,EACrF,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,cAAc,GACrB,CAAC,CAiCH"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"global-setup.d.ts","sourceRoot":"","sources":["../../../src/coverage/global-setup.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAG7C,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAarF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/coverage/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAGtE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAgBtF;AAkCD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAChE,mBAAmB,SAAS,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/coverage/report.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAA+C,MAAM,SAAS,CAAA;AAK1F,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAoElF;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBnF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../src/coverage/reporter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAI3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAG7C,KAAK,sBAAsB,GAAG,UAAU,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,cAAM,gBAAgB;IACpB,MAAM,EAAE,cAAc,CAAA;gBAEV,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,cAAc,CAAA;KAAO;IAOvD,OAAO;IAaP,KAAK,CAAC,MAAM,EAAE,sBAAsB;CA0B3C;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAC3B,eAAe,gBAAgB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/coverage/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACpC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,MAAM,GAAG,SAAS,CAAA;CACpE,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,oBAAoB,CAAA;AAExF,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,kBAAkB,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,UAAU,CAAC,EAAE,uBAAuB,CAAA;IACpC,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,OAAO,CAAA;IACxB,UAAU,EAAE,kBAAkB,CAAA;IAC9B,gBAAgB,EAAE,uBAAuB,EAAE,CAAA;IAC3C,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,cAAc,CAAA;IACtB,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,UAAU,CAAC,CAAC,SAAS;QAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAA;KAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;IAC5E,aAAa,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CACpD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"v8-tracker.d.ts","sourceRoot":"","sources":["../../../src/coverage/v8-tracker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAGtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAe7C,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CA2C1D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defineConfig.d.ts","sourceRoot":"","sources":["../../src/defineConfig.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,IAAI,sBAAsB,EAAW,MAAM,kBAAkB,CAAA;AA6ElF,MAAM,CAAC,OAAO,WAAU,MAAM,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,2DA6C3E"}
|
package/dist/src/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAwB,YAAY,IAAI,sBAAsB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAM1H,cAAc,kBAAkB,CAAA;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAIhC,eAAO,MAAM,IAAI,EAAE,OAAO,QAA4E,CAAA;AACtG,eAAO,MAAM,MAAM,uCAAa,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,CAAA;AAElB,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAA;AAGpE,wBAAgB,YAAY,CAAC,UAAU,GAAE,gBAAqB,2DAgB7D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../../../src/runners/playwright.ts"],"names":[],"mappings":"AAmEA,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAAE,EAClB,EAAE,eAAuB,EAAE,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9D,OAAO,CAAC,IAAI,CAAC,CAsFf"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/runners/process.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,KAAK,eAAe,GAAG,OAAO,GAAG,MAAM,CAAA;AAIvC,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,GAAG,EACH,cAAc,EACd,cAAc,EACd,UAAoB,GACrB,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,eAAe,CAAA;CAC7B,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEhB;AAED,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,GAAG,GACJ,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CACvB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkClB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAM9E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vitest.d.ts","sourceRoot":"","sources":["../../../src/runners/vitest.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAOvD,KAAK,aAAa,GAAG;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAAA;AAExE,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,aAAa,EACvB,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,QAAQ,EAAE,MAAM,EAAE,EAClB,EAAE,eAAuB,EAAE,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9D,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAErE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serverCoverage.d.ts","sourceRoot":"","sources":["../../src/serverCoverage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGlD,KAAK,0BAA0B,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CA2B9B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../../src/vitest.config.ts"],"names":[],"mappings":";AAyGA,wBAKE"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|