@midleman/playwright-reporter 0.39.3 → 0.41.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/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +101 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/run-shard.d.ts +78 -0
- package/dist/cli/run-shard.d.ts.map +1 -0
- package/dist/cli/run-shard.js +363 -0
- package/dist/cli/run-shard.js.map +1 -0
- package/dist/schemas.d.ts +1 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +1 -0
- package/dist/schemas.js.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* E2E Insights CLI
|
|
5
|
+
*
|
|
6
|
+
* Provides utilities for E2E test infrastructure, including predictive sharding.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const run_shard_1 = require("./run-shard");
|
|
10
|
+
const args = process.argv.slice(2);
|
|
11
|
+
const command = args[0];
|
|
12
|
+
function printHelp() {
|
|
13
|
+
console.log(`
|
|
14
|
+
e2e-insights - CLI tools for E2E Test Insights
|
|
15
|
+
|
|
16
|
+
Commands:
|
|
17
|
+
run-shard Run tests with predictive sharding
|
|
18
|
+
|
|
19
|
+
Usage:
|
|
20
|
+
npx e2e-insights run-shard [options] [-- playwright-options]
|
|
21
|
+
|
|
22
|
+
Run 'npx e2e-insights <command> --help' for command-specific help.
|
|
23
|
+
|
|
24
|
+
Examples:
|
|
25
|
+
npx e2e-insights run-shard --shard-index=1 --shard-total=6 --repo=posit-dev/positron
|
|
26
|
+
npx e2e-insights run-shard --help
|
|
27
|
+
`);
|
|
28
|
+
}
|
|
29
|
+
async function main() {
|
|
30
|
+
if (!command || command === "--help" || command === "-h") {
|
|
31
|
+
printHelp();
|
|
32
|
+
process.exit(0);
|
|
33
|
+
}
|
|
34
|
+
if (command === "run-shard") {
|
|
35
|
+
const subArgs = args.slice(1);
|
|
36
|
+
if (subArgs.includes("--help") || subArgs.includes("-h")) {
|
|
37
|
+
console.log(`
|
|
38
|
+
e2e-insights run-shard - Predictive test sharding
|
|
39
|
+
|
|
40
|
+
Uses historical test duration data to optimally distribute specs across CI shards.
|
|
41
|
+
|
|
42
|
+
Usage:
|
|
43
|
+
npx e2e-insights run-shard [options] [-- playwright-options]
|
|
44
|
+
|
|
45
|
+
Required:
|
|
46
|
+
--shard-index=N Shard index (1-based, e.g., 1, 2, 3)
|
|
47
|
+
--shard-total=N Total number of shards
|
|
48
|
+
--repo=OWNER/REPO Repository identifier (e.g., posit-dev/positron)
|
|
49
|
+
|
|
50
|
+
Optional:
|
|
51
|
+
--os=OS Filter by OS (e.g., ubuntu, windows)
|
|
52
|
+
--browser=BROWSER Filter by browser (e.g., chromium, firefox)
|
|
53
|
+
--branch=BRANCH Filter by branch (defaults to current)
|
|
54
|
+
--fallback=MODE What to do if API fails: native (default) or fail
|
|
55
|
+
|
|
56
|
+
Pass-through:
|
|
57
|
+
Unrecognized arguments are automatically passed to Playwright.
|
|
58
|
+
You can also use -- for explicit pass-through.
|
|
59
|
+
|
|
60
|
+
Supported Playwright args include: --workers, --retries, --project,
|
|
61
|
+
--grep, --timeout, --reporter, --config, --headed, --ui, --trace, etc.
|
|
62
|
+
|
|
63
|
+
Examples:
|
|
64
|
+
# Basic usage
|
|
65
|
+
npx e2e-insights run-shard --shard-index=1 --shard-total=6 --repo=posit-dev/positron
|
|
66
|
+
|
|
67
|
+
# With platform filtering
|
|
68
|
+
npx e2e-insights run-shard --shard-index=1 --shard-total=6 --repo=posit-dev/positron \\
|
|
69
|
+
--os=ubuntu --browser=chromium
|
|
70
|
+
|
|
71
|
+
# With Playwright options (auto pass-through)
|
|
72
|
+
npx e2e-insights run-shard --shard-index=1 --shard-total=6 --repo=posit-dev/positron \\
|
|
73
|
+
--workers=4 --retries=2 --project=chromium
|
|
74
|
+
|
|
75
|
+
# With explicit pass-through
|
|
76
|
+
npx e2e-insights run-shard --shard-index=1 --shard-total=6 --repo=posit-dev/positron \\
|
|
77
|
+
-- --headed --debug
|
|
78
|
+
`);
|
|
79
|
+
process.exit(0);
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
const options = (0, run_shard_1.parseRunShardArgs)(subArgs);
|
|
83
|
+
const exitCode = await (0, run_shard_1.runShard)(options);
|
|
84
|
+
process.exit(exitCode);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.error(`❌ ${error}`);
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
console.error(`Unknown command: ${command}`);
|
|
93
|
+
printHelp();
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
main().catch((error) => {
|
|
98
|
+
console.error(`❌ Unexpected error: ${error}`);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AACA;;;;GAIG;;AAEH,2CAA0D;AAE1D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;CAcb,CAAC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACzD,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE9B,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCjB,CAAC,CAAC;YACG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,6BAAiB,EAAC,OAAO,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAQ,EAAC,OAAO,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC7C,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI tool for predictive test sharding
|
|
3
|
+
*
|
|
4
|
+
* Discovers spec files, fetches optimal shard assignment from API,
|
|
5
|
+
* and runs Playwright with only the assigned specs.
|
|
6
|
+
*/
|
|
7
|
+
export interface RunShardOptions {
|
|
8
|
+
shardIndex: number;
|
|
9
|
+
shardTotal: number;
|
|
10
|
+
repo: string;
|
|
11
|
+
os?: string;
|
|
12
|
+
browser?: string;
|
|
13
|
+
branch?: string;
|
|
14
|
+
fallback?: "native" | "fail";
|
|
15
|
+
playwrightArgs?: string[];
|
|
16
|
+
}
|
|
17
|
+
export interface ShardAssignment {
|
|
18
|
+
shard_index: number;
|
|
19
|
+
num_shards: number;
|
|
20
|
+
specs: string[];
|
|
21
|
+
estimated_duration_ms: number;
|
|
22
|
+
total_specs_assigned: number;
|
|
23
|
+
total_specs_all_shards: number;
|
|
24
|
+
data_quality: {
|
|
25
|
+
specs_with_history: number;
|
|
26
|
+
specs_without_history: number;
|
|
27
|
+
};
|
|
28
|
+
shard_balance?: {
|
|
29
|
+
variance_pct: number;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
interface FetchShardParams {
|
|
33
|
+
specs: string[];
|
|
34
|
+
shardIndex: number;
|
|
35
|
+
numShards: number;
|
|
36
|
+
repo: string;
|
|
37
|
+
os?: string;
|
|
38
|
+
browser?: string;
|
|
39
|
+
branch?: string;
|
|
40
|
+
}
|
|
41
|
+
export declare function parseRunShardArgs(args: string[]): RunShardOptions;
|
|
42
|
+
/**
|
|
43
|
+
* Parse the JSON output from `playwright test --list --reporter=json`
|
|
44
|
+
*/
|
|
45
|
+
export declare function parsePlaywrightListOutput(output: string): string[];
|
|
46
|
+
/**
|
|
47
|
+
* Discover all spec files by running `playwright test --list`
|
|
48
|
+
*/
|
|
49
|
+
export declare function discoverSpecs(): Promise<string[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Fetch shard assignment from the E2E Insights API
|
|
52
|
+
*/
|
|
53
|
+
export declare function fetchShardAssignment(apiUrl: string, params: FetchShardParams): Promise<ShardAssignment>;
|
|
54
|
+
/**
|
|
55
|
+
* Build Playwright command arguments for assigned specs
|
|
56
|
+
*/
|
|
57
|
+
export declare function buildPlaywrightArgs(specs: string[], extraArgs: string[]): string[];
|
|
58
|
+
/**
|
|
59
|
+
* Build Playwright command arguments for native sharding fallback
|
|
60
|
+
*/
|
|
61
|
+
export declare function buildNativeShardingArgs(shardIndex: number, shardTotal: number, extraArgs: string[]): string[];
|
|
62
|
+
/**
|
|
63
|
+
* Run Playwright with the given arguments
|
|
64
|
+
*/
|
|
65
|
+
export declare function runPlaywright(args: string[]): Promise<number>;
|
|
66
|
+
/**
|
|
67
|
+
* Extract browser from --project argument in Playwright args
|
|
68
|
+
*
|
|
69
|
+
* Supports both formats:
|
|
70
|
+
* - --project=e2e-chromium
|
|
71
|
+
* - --project e2e-chromium
|
|
72
|
+
*
|
|
73
|
+
* Uses the same inference logic as the reporter (inferBrowserFromProject)
|
|
74
|
+
*/
|
|
75
|
+
export declare function extractBrowserFromArgs(args: string[]): string | undefined;
|
|
76
|
+
export declare function runShard(options: RunShardOptions): Promise<number>;
|
|
77
|
+
export {};
|
|
78
|
+
//# sourceMappingURL=run-shard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-shard.d.ts","sourceRoot":"","sources":["../../src/cli/run-shard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAKD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,YAAY,EAAE;QACZ,kBAAkB,EAAE,MAAM,CAAC;QAC3B,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,aAAa,CAAC,EAAE;QACd,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CA4EjE;AAMD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CASlE;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CA+BvD;AAMD;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,eAAe,CAAC,CAoC1B;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EAAE,GAClB,MAAM,EAAE,CAEV;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EAAE,GAClB,MAAM,EAAE,CAEV;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAenE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAyBzE;AAMD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAkFxE"}
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CLI tool for predictive test sharding
|
|
4
|
+
*
|
|
5
|
+
* Discovers spec files, fetches optimal shard assignment from API,
|
|
6
|
+
* and runs Playwright with only the assigned specs.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.parseRunShardArgs = parseRunShardArgs;
|
|
10
|
+
exports.parsePlaywrightListOutput = parsePlaywrightListOutput;
|
|
11
|
+
exports.discoverSpecs = discoverSpecs;
|
|
12
|
+
exports.fetchShardAssignment = fetchShardAssignment;
|
|
13
|
+
exports.buildPlaywrightArgs = buildPlaywrightArgs;
|
|
14
|
+
exports.buildNativeShardingArgs = buildNativeShardingArgs;
|
|
15
|
+
exports.runPlaywright = runPlaywright;
|
|
16
|
+
exports.extractBrowserFromArgs = extractBrowserFromArgs;
|
|
17
|
+
exports.runShard = runShard;
|
|
18
|
+
const child_process_1 = require("child_process");
|
|
19
|
+
const utils_1 = require("../utils");
|
|
20
|
+
// Hardcoded API URL - only one production environment
|
|
21
|
+
const API_URL = "https://connect.posit.it/e2e-test-insights-api";
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Argument Parsing
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Args that belong to our CLI (everything else passes through to Playwright)
|
|
26
|
+
const OUR_ARG_PREFIXES = [
|
|
27
|
+
"--shard-index=",
|
|
28
|
+
"--shard-total=",
|
|
29
|
+
"--repo=",
|
|
30
|
+
"--os=",
|
|
31
|
+
"--browser=",
|
|
32
|
+
"--branch=",
|
|
33
|
+
"--fallback=",
|
|
34
|
+
];
|
|
35
|
+
function parseRunShardArgs(args) {
|
|
36
|
+
const options = {
|
|
37
|
+
fallback: "native",
|
|
38
|
+
playwrightArgs: [],
|
|
39
|
+
};
|
|
40
|
+
// Find the -- separator for explicit pass-through args
|
|
41
|
+
const separatorIndex = args.indexOf("--");
|
|
42
|
+
const ourArgs = separatorIndex >= 0 ? args.slice(0, separatorIndex) : args;
|
|
43
|
+
const explicitPlaywrightArgs = separatorIndex >= 0 ? args.slice(separatorIndex + 1) : [];
|
|
44
|
+
// Collect unrecognized args to pass through to Playwright
|
|
45
|
+
const unrecognizedArgs = [];
|
|
46
|
+
for (const arg of ourArgs) {
|
|
47
|
+
if (arg.startsWith("--shard-index=")) {
|
|
48
|
+
options.shardIndex = parseInt(arg.split("=")[1], 10);
|
|
49
|
+
}
|
|
50
|
+
else if (arg.startsWith("--shard-total=")) {
|
|
51
|
+
options.shardTotal = parseInt(arg.split("=")[1], 10);
|
|
52
|
+
}
|
|
53
|
+
else if (arg.startsWith("--repo=")) {
|
|
54
|
+
options.repo = arg.split("=")[1];
|
|
55
|
+
}
|
|
56
|
+
else if (arg.startsWith("--os=")) {
|
|
57
|
+
options.os = arg.split("=")[1];
|
|
58
|
+
}
|
|
59
|
+
else if (arg.startsWith("--browser=")) {
|
|
60
|
+
options.browser = arg.split("=")[1];
|
|
61
|
+
}
|
|
62
|
+
else if (arg.startsWith("--branch=")) {
|
|
63
|
+
options.branch = arg.split("=")[1];
|
|
64
|
+
}
|
|
65
|
+
else if (arg.startsWith("--fallback=")) {
|
|
66
|
+
const value = arg.split("=")[1];
|
|
67
|
+
if (value === "native" || value === "fail") {
|
|
68
|
+
options.fallback = value;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
// Pass through any unrecognized args to Playwright
|
|
73
|
+
// This includes: --workers, --retries, --project, --grep, --headed, etc.
|
|
74
|
+
unrecognizedArgs.push(arg);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Combine unrecognized args with explicit pass-through args
|
|
78
|
+
// Explicit args (after --) take precedence (come last)
|
|
79
|
+
options.playwrightArgs = [...unrecognizedArgs, ...explicitPlaywrightArgs];
|
|
80
|
+
// Validate required arguments
|
|
81
|
+
if (options.shardIndex === undefined) {
|
|
82
|
+
throw new Error("Missing required argument: --shard-index");
|
|
83
|
+
}
|
|
84
|
+
if (options.shardTotal === undefined) {
|
|
85
|
+
throw new Error("Missing required argument: --shard-total");
|
|
86
|
+
}
|
|
87
|
+
if (!options.repo) {
|
|
88
|
+
throw new Error("Missing required argument: --repo");
|
|
89
|
+
}
|
|
90
|
+
// Validate numeric values are valid (parseInt returns NaN for invalid input)
|
|
91
|
+
if (Number.isNaN(options.shardIndex)) {
|
|
92
|
+
throw new Error("--shard-index must be a valid number");
|
|
93
|
+
}
|
|
94
|
+
if (Number.isNaN(options.shardTotal)) {
|
|
95
|
+
throw new Error("--shard-total must be a valid number");
|
|
96
|
+
}
|
|
97
|
+
// Validate shardTotal is positive
|
|
98
|
+
if (options.shardTotal < 1) {
|
|
99
|
+
throw new Error("--shard-total must be at least 1");
|
|
100
|
+
}
|
|
101
|
+
// Validate shard index range (1-based)
|
|
102
|
+
if (options.shardIndex < 1 || options.shardIndex > options.shardTotal) {
|
|
103
|
+
throw new Error(`shard-index must be between 1 and ${options.shardTotal}, got ${options.shardIndex}`);
|
|
104
|
+
}
|
|
105
|
+
return options;
|
|
106
|
+
}
|
|
107
|
+
// ============================================================================
|
|
108
|
+
// Spec Discovery
|
|
109
|
+
// ============================================================================
|
|
110
|
+
/**
|
|
111
|
+
* Parse the JSON output from `playwright test --list --reporter=json`
|
|
112
|
+
*/
|
|
113
|
+
function parsePlaywrightListOutput(output) {
|
|
114
|
+
try {
|
|
115
|
+
const data = JSON.parse(output);
|
|
116
|
+
const files = (data.suites || []).map((s) => s.file);
|
|
117
|
+
// Dedupe and sort for deterministic output
|
|
118
|
+
return [...new Set(files)].sort();
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return [];
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Discover all spec files by running `playwright test --list`
|
|
126
|
+
*/
|
|
127
|
+
async function discoverSpecs() {
|
|
128
|
+
return new Promise((resolve, reject) => {
|
|
129
|
+
const proc = (0, child_process_1.spawn)("npx", ["playwright", "test", "--list", "--reporter=json"], {
|
|
130
|
+
shell: process.platform === "win32", // Required on Windows for .cmd files
|
|
131
|
+
stdio: ["inherit", "pipe", "pipe"],
|
|
132
|
+
});
|
|
133
|
+
let stdout = "";
|
|
134
|
+
let stderr = "";
|
|
135
|
+
proc.stdout.on("data", (data) => {
|
|
136
|
+
stdout += data.toString();
|
|
137
|
+
});
|
|
138
|
+
proc.stderr.on("data", (data) => {
|
|
139
|
+
stderr += data.toString();
|
|
140
|
+
});
|
|
141
|
+
proc.on("close", (code) => {
|
|
142
|
+
if (code !== 0) {
|
|
143
|
+
reject(new Error(`playwright test --list failed: ${stderr}`));
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const specs = parsePlaywrightListOutput(stdout);
|
|
147
|
+
resolve(specs);
|
|
148
|
+
});
|
|
149
|
+
proc.on("error", (err) => {
|
|
150
|
+
reject(new Error(`Failed to spawn playwright: ${err.message}`));
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
// ============================================================================
|
|
155
|
+
// API Client
|
|
156
|
+
// ============================================================================
|
|
157
|
+
/**
|
|
158
|
+
* Fetch shard assignment from the E2E Insights API
|
|
159
|
+
*/
|
|
160
|
+
async function fetchShardAssignment(apiUrl, params) {
|
|
161
|
+
const url = `${apiUrl}/shards/compute`;
|
|
162
|
+
const body = {
|
|
163
|
+
specs: params.specs,
|
|
164
|
+
shard_index: params.shardIndex,
|
|
165
|
+
num_shards: params.numShards,
|
|
166
|
+
repo: params.repo,
|
|
167
|
+
};
|
|
168
|
+
// Only include optional fields if defined
|
|
169
|
+
if (params.os)
|
|
170
|
+
body.os = params.os;
|
|
171
|
+
if (params.browser)
|
|
172
|
+
body.browser = params.browser;
|
|
173
|
+
if (params.branch)
|
|
174
|
+
body.branch = params.branch;
|
|
175
|
+
// Build headers with optional API key auth (same as reporter)
|
|
176
|
+
const headers = { "Content-Type": "application/json" };
|
|
177
|
+
const apiKey = process.env.CONNECT_API_KEY || process.env.E2E_CONNECT_APIKEY;
|
|
178
|
+
if (apiKey) {
|
|
179
|
+
headers["Authorization"] = `Key ${apiKey}`;
|
|
180
|
+
}
|
|
181
|
+
const response = await fetch(url, {
|
|
182
|
+
method: "POST",
|
|
183
|
+
headers,
|
|
184
|
+
body: JSON.stringify(body),
|
|
185
|
+
});
|
|
186
|
+
if (!response.ok) {
|
|
187
|
+
const text = await response.text();
|
|
188
|
+
// Truncate long error responses (e.g., HTML error pages)
|
|
189
|
+
const truncated = text.length > 200 ? text.slice(0, 200) + "..." : text;
|
|
190
|
+
throw new Error(`API error: ${response.status} ${response.statusText} - ${truncated}`);
|
|
191
|
+
}
|
|
192
|
+
return response.json();
|
|
193
|
+
}
|
|
194
|
+
// ============================================================================
|
|
195
|
+
// Playwright Runner
|
|
196
|
+
// ============================================================================
|
|
197
|
+
/**
|
|
198
|
+
* Build Playwright command arguments for assigned specs
|
|
199
|
+
*/
|
|
200
|
+
function buildPlaywrightArgs(specs, extraArgs) {
|
|
201
|
+
return ["test", ...specs, ...extraArgs];
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Build Playwright command arguments for native sharding fallback
|
|
205
|
+
*/
|
|
206
|
+
function buildNativeShardingArgs(shardIndex, shardTotal, extraArgs) {
|
|
207
|
+
return ["test", `--shard=${shardIndex}/${shardTotal}`, ...extraArgs];
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Run Playwright with the given arguments
|
|
211
|
+
*/
|
|
212
|
+
async function runPlaywright(args) {
|
|
213
|
+
return new Promise((resolve) => {
|
|
214
|
+
const proc = (0, child_process_1.spawn)("npx", ["playwright", ...args], {
|
|
215
|
+
shell: process.platform === "win32", // Required on Windows for .cmd files
|
|
216
|
+
stdio: "inherit",
|
|
217
|
+
});
|
|
218
|
+
proc.on("close", (code) => {
|
|
219
|
+
resolve(code ?? 1);
|
|
220
|
+
});
|
|
221
|
+
proc.on("error", () => {
|
|
222
|
+
resolve(1);
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
// ============================================================================
|
|
227
|
+
// Browser Inference
|
|
228
|
+
// ============================================================================
|
|
229
|
+
/**
|
|
230
|
+
* Extract browser from --project argument in Playwright args
|
|
231
|
+
*
|
|
232
|
+
* Supports both formats:
|
|
233
|
+
* - --project=e2e-chromium
|
|
234
|
+
* - --project e2e-chromium
|
|
235
|
+
*
|
|
236
|
+
* Uses the same inference logic as the reporter (inferBrowserFromProject)
|
|
237
|
+
*/
|
|
238
|
+
function extractBrowserFromArgs(args) {
|
|
239
|
+
// Match --project=value or --project value (but not --project-config, etc.)
|
|
240
|
+
const projectArg = args.find((arg) => arg === "--project" || arg.startsWith("--project="));
|
|
241
|
+
if (!projectArg) {
|
|
242
|
+
return undefined;
|
|
243
|
+
}
|
|
244
|
+
let projectName;
|
|
245
|
+
if (projectArg.includes("=")) {
|
|
246
|
+
projectName = projectArg.split("=")[1];
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
const nextIndex = args.indexOf(projectArg) + 1;
|
|
250
|
+
if (nextIndex < args.length) {
|
|
251
|
+
projectName = args[nextIndex];
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
if (!projectName) {
|
|
255
|
+
return undefined;
|
|
256
|
+
}
|
|
257
|
+
return (0, utils_1.inferBrowserFromProject)(projectName);
|
|
258
|
+
}
|
|
259
|
+
// ============================================================================
|
|
260
|
+
// Main Entry Point
|
|
261
|
+
// ============================================================================
|
|
262
|
+
async function runShard(options) {
|
|
263
|
+
const extraArgs = options.playwrightArgs || [];
|
|
264
|
+
// Infer browser from --project if not explicitly provided (matches reporter logic)
|
|
265
|
+
const browser = options.browser || extractBrowserFromArgs(extraArgs);
|
|
266
|
+
console.log(`\n📋 Discovering spec files...`);
|
|
267
|
+
let specs;
|
|
268
|
+
try {
|
|
269
|
+
specs = await discoverSpecs();
|
|
270
|
+
console.log(` Found ${specs.length} spec files`);
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
console.error(`❌ Failed to discover specs: ${error}`);
|
|
274
|
+
if (options.fallback === "fail") {
|
|
275
|
+
return 1;
|
|
276
|
+
}
|
|
277
|
+
console.log(`\n⚠️ FALLBACK: Using native Playwright sharding (--shard=${options.shardIndex}/${options.shardTotal})`);
|
|
278
|
+
console.log(` Reason: Spec discovery failed`);
|
|
279
|
+
const args = buildNativeShardingArgs(options.shardIndex, options.shardTotal, extraArgs);
|
|
280
|
+
return runPlaywright(args);
|
|
281
|
+
}
|
|
282
|
+
if (specs.length === 0) {
|
|
283
|
+
console.log(`✅ No spec files found - nothing to run`);
|
|
284
|
+
return 0;
|
|
285
|
+
}
|
|
286
|
+
console.log(`🎯 Getting assignment for shard ${options.shardIndex}/${options.shardTotal}...`);
|
|
287
|
+
let assignment;
|
|
288
|
+
try {
|
|
289
|
+
assignment = await fetchShardAssignment(API_URL, {
|
|
290
|
+
specs,
|
|
291
|
+
shardIndex: options.shardIndex - 1, // Convert to 0-based for API
|
|
292
|
+
numShards: options.shardTotal,
|
|
293
|
+
repo: options.repo,
|
|
294
|
+
os: options.os,
|
|
295
|
+
browser,
|
|
296
|
+
branch: options.branch,
|
|
297
|
+
});
|
|
298
|
+
const estSeconds = Math.round(assignment.estimated_duration_ms / 1000);
|
|
299
|
+
console.log(` Assigned ${assignment.specs.length} specs (est. ${estSeconds}s)`);
|
|
300
|
+
console.log(` Data quality: ${assignment.data_quality.specs_with_history}/${specs.length} specs have history`);
|
|
301
|
+
if (assignment.shard_balance) {
|
|
302
|
+
console.log(` Shard balance variance: ${assignment.shard_balance.variance_pct}%`);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
catch (error) {
|
|
306
|
+
console.warn(`⚠️ API unavailable: ${error}`);
|
|
307
|
+
if (options.fallback === "fail") {
|
|
308
|
+
console.error(`❌ Fallback disabled - exiting`);
|
|
309
|
+
return 1;
|
|
310
|
+
}
|
|
311
|
+
console.log(`\n⚠️ FALLBACK: Using native Playwright sharding (--shard=${options.shardIndex}/${options.shardTotal})`);
|
|
312
|
+
console.log(` Reason: API request failed`);
|
|
313
|
+
const args = buildNativeShardingArgs(options.shardIndex, options.shardTotal, extraArgs);
|
|
314
|
+
return runPlaywright(args);
|
|
315
|
+
}
|
|
316
|
+
if (assignment.specs.length === 0) {
|
|
317
|
+
console.log(`✅ No specs assigned to this shard - nothing to run`);
|
|
318
|
+
return 0;
|
|
319
|
+
}
|
|
320
|
+
console.log(`\n🎭 Running Playwright with ${assignment.specs.length} specs...`);
|
|
321
|
+
const args = buildPlaywrightArgs(assignment.specs, extraArgs);
|
|
322
|
+
return runPlaywright(args);
|
|
323
|
+
}
|
|
324
|
+
// CLI entry point (when run directly)
|
|
325
|
+
if (require.main === module) {
|
|
326
|
+
const args = process.argv.slice(2);
|
|
327
|
+
// Handle help
|
|
328
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
329
|
+
console.log(`
|
|
330
|
+
e2e-insights run-shard - Predictive test sharding
|
|
331
|
+
|
|
332
|
+
Usage:
|
|
333
|
+
npx e2e-insights run-shard [options] [-- playwright-options]
|
|
334
|
+
|
|
335
|
+
Required:
|
|
336
|
+
--shard-index=N Shard index (1-based, e.g., 1, 2, 3)
|
|
337
|
+
--shard-total=N Total number of shards
|
|
338
|
+
--repo=OWNER/REPO Repository identifier (e.g., posit-dev/positron)
|
|
339
|
+
|
|
340
|
+
Optional:
|
|
341
|
+
--os=OS Filter by OS (e.g., ubuntu, windows)
|
|
342
|
+
--browser=BROWSER Filter by browser (e.g., chromium, firefox)
|
|
343
|
+
--branch=BRANCH Filter by branch (defaults to current)
|
|
344
|
+
--fallback=MODE What to do if API fails: native (default) or fail
|
|
345
|
+
|
|
346
|
+
Examples:
|
|
347
|
+
npx e2e-insights run-shard --shard-index=1 --shard-total=6 --repo=posit-dev/positron
|
|
348
|
+
npx e2e-insights run-shard --shard-index=2 --shard-total=6 --repo=posit-dev/positron --os=ubuntu -- --workers=4
|
|
349
|
+
`);
|
|
350
|
+
process.exit(0);
|
|
351
|
+
}
|
|
352
|
+
try {
|
|
353
|
+
const options = parseRunShardArgs(args);
|
|
354
|
+
runShard(options).then((code) => {
|
|
355
|
+
process.exit(code);
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
catch (error) {
|
|
359
|
+
console.error(`❌ ${error}`);
|
|
360
|
+
process.exit(1);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=run-shard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-shard.js","sourceRoot":"","sources":["../../src/cli/run-shard.ts"],"names":[],"mappings":"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"}
|
package/dist/schemas.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export declare const SCHEMA_VERSION = "1.0.0";
|
|
|
7
7
|
/**
|
|
8
8
|
* Result status enum
|
|
9
9
|
* Note: 'interrupted' occurs when tests are stopped early (e.g., --max-failures)
|
|
10
|
+
* Keep in sync with: src/api/test_results_api.R (.valid_result_statuses)
|
|
10
11
|
*/
|
|
11
12
|
export declare const ResultStatusSchema: z.ZodEnum<["passed", "failed", "skipped", "flaky", "interrupted"]>;
|
|
12
13
|
export type ResultStatus = z.infer<typeof ResultStatusSchema>;
|
package/dist/schemas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,oEAAkE,CAAC;AAClG,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;EAKvB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAI9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAEnF;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAE/D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAEtE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAEvE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAE3E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAErD;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEzD;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;GAE3D"}
|
package/dist/schemas.js
CHANGED
|
@@ -18,6 +18,7 @@ exports.SCHEMA_VERSION = '1.0.0';
|
|
|
18
18
|
/**
|
|
19
19
|
* Result status enum
|
|
20
20
|
* Note: 'interrupted' occurs when tests are stopped early (e.g., --max-failures)
|
|
21
|
+
* Keep in sync with: src/api/test_results_api.R (.valid_result_statuses)
|
|
21
22
|
*/
|
|
22
23
|
exports.ResultStatusSchema = zod_1.z.enum(['passed', 'failed', 'skipped', 'flaky', 'interrupted']);
|
|
23
24
|
/**
|
package/dist/schemas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@midleman/playwright-reporter",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.41.0",
|
|
4
4
|
"description": "Playwright reporter that writes test results to S3 as Parquet files",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"e2e-insights": "./dist/cli/index.js"
|
|
9
|
+
},
|
|
7
10
|
"scripts": {
|
|
8
11
|
"build": "tsc",
|
|
9
12
|
"watch": "tsc --watch",
|