@nsxbet/playwright-orchestrator 0.8.0 → 0.8.1
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.
|
@@ -9,7 +9,8 @@ export default class ExtractTiming extends Command {
|
|
|
9
9
|
project: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
10
|
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
11
|
};
|
|
12
|
-
private
|
|
12
|
+
private testDir;
|
|
13
|
+
private rootDir;
|
|
13
14
|
run(): Promise<void>;
|
|
14
15
|
/**
|
|
15
16
|
* Extract test-level durations from Playwright report
|
|
@@ -19,19 +20,31 @@ export default class ExtractTiming extends Command {
|
|
|
19
20
|
private extractTestDurations;
|
|
20
21
|
/**
|
|
21
22
|
* Recursively extract test durations from a suite
|
|
23
|
+
*
|
|
24
|
+
* @param suite - Playwright suite from JSON report
|
|
25
|
+
* @param parentTitles - Title path from parent suites (describe blocks)
|
|
26
|
+
* @param testDurations - Map to collect test durations
|
|
27
|
+
* @param isRootSuite - Whether this is a root file suite (title is filename, should be skipped)
|
|
22
28
|
*/
|
|
23
29
|
private extractTestsFromSuite;
|
|
24
30
|
/**
|
|
25
|
-
* Normalize file path to be relative
|
|
26
|
-
*
|
|
31
|
+
* Normalize file path to be relative to testDir.
|
|
32
|
+
*
|
|
33
|
+
* DETERMINISTIC APPROACH:
|
|
34
|
+
* 1. suite.file in Playwright report is always relative to rootDir
|
|
35
|
+
* 2. testDir is either absolute or relative to rootDir
|
|
36
|
+
* 3. We resolve both to get absolute paths, then compute relative path
|
|
37
|
+
*
|
|
38
|
+
* This ensures consistent test IDs regardless of container path differences.
|
|
27
39
|
*/
|
|
28
40
|
private normalizeFilePath;
|
|
29
41
|
/**
|
|
30
|
-
* Extract
|
|
42
|
+
* Extract rootDir and testDir from Playwright report config.
|
|
31
43
|
*
|
|
32
|
-
* CRITICAL:
|
|
33
|
-
*
|
|
44
|
+
* CRITICAL: We need both paths to correctly resolve file locations:
|
|
45
|
+
* - rootDir: where playwright.config.ts is located (absolute)
|
|
46
|
+
* - testDir: where tests are located (can be relative to rootDir)
|
|
34
47
|
*/
|
|
35
|
-
private
|
|
48
|
+
private getPathsFromReport;
|
|
36
49
|
}
|
|
37
50
|
//# sourceMappingURL=extract-timing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract-timing.d.ts","sourceRoot":"","sources":["../../src/commands/extract-timing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAI7C,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAChD,OAAgB,WAAW,SACyB;IAEpD,OAAgB,QAAQ,WAGtB;IAEF,OAAgB,KAAK;;;;;;MAyBnB;IAGF,OAAO,CAAC,OAAO,CAAc;IAEvB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"extract-timing.d.ts","sourceRoot":"","sources":["../../src/commands/extract-timing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAI7C,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAChD,OAAgB,WAAW,SACyB;IAEpD,OAAgB,QAAQ,WAGtB;IAEF,OAAgB,KAAK;;;;;;MAyBnB;IAGF,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,CAAC,OAAO,CAAc;IAEvB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD1B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IAmD7B;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IAiCzB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;CAoD3B"}
|
|
@@ -34,8 +34,10 @@ export default class ExtractTiming extends Command {
|
|
|
34
34
|
default: false,
|
|
35
35
|
}),
|
|
36
36
|
};
|
|
37
|
-
// Base directory for path resolution (
|
|
38
|
-
|
|
37
|
+
// Base directory for path resolution (resolved testDir)
|
|
38
|
+
testDir = '';
|
|
39
|
+
// Root directory from Playwright config (where config file is)
|
|
40
|
+
rootDir = '';
|
|
39
41
|
async run() {
|
|
40
42
|
const { flags } = await this.parse(ExtractTiming);
|
|
41
43
|
// Read Playwright report
|
|
@@ -48,11 +50,13 @@ export default class ExtractTiming extends Command {
|
|
|
48
50
|
catch {
|
|
49
51
|
this.error(`Failed to read Playwright report: ${reportPath}`);
|
|
50
52
|
}
|
|
51
|
-
//
|
|
52
|
-
|
|
53
|
-
this.
|
|
53
|
+
// Extract rootDir and testDir from report config
|
|
54
|
+
const { rootDir, testDir } = this.getPathsFromReport(report, flags.project);
|
|
55
|
+
this.rootDir = rootDir;
|
|
56
|
+
this.testDir = testDir;
|
|
54
57
|
if (flags.verbose) {
|
|
55
|
-
this.log(`Using
|
|
58
|
+
this.log(`Using rootDir: ${this.rootDir}`);
|
|
59
|
+
this.log(`Using testDir: ${this.testDir}`);
|
|
56
60
|
}
|
|
57
61
|
// Extract test-level durations
|
|
58
62
|
const testDurations = this.extractTestDurations(report);
|
|
@@ -85,16 +89,27 @@ export default class ExtractTiming extends Command {
|
|
|
85
89
|
extractTestDurations(report) {
|
|
86
90
|
const testDurations = {};
|
|
87
91
|
for (const suite of report.suites) {
|
|
88
|
-
|
|
92
|
+
// Root suites represent files - their title is the filename
|
|
93
|
+
// We skip this title from titlePath since it's redundant with file
|
|
94
|
+
// This matches test-discovery.ts behavior
|
|
95
|
+
this.extractTestsFromSuite(suite, [], testDurations, true);
|
|
89
96
|
}
|
|
90
97
|
return testDurations;
|
|
91
98
|
}
|
|
92
99
|
/**
|
|
93
100
|
* Recursively extract test durations from a suite
|
|
101
|
+
*
|
|
102
|
+
* @param suite - Playwright suite from JSON report
|
|
103
|
+
* @param parentTitles - Title path from parent suites (describe blocks)
|
|
104
|
+
* @param testDurations - Map to collect test durations
|
|
105
|
+
* @param isRootSuite - Whether this is a root file suite (title is filename, should be skipped)
|
|
94
106
|
*/
|
|
95
|
-
extractTestsFromSuite(suite, parentTitles, testDurations) {
|
|
107
|
+
extractTestsFromSuite(suite, parentTitles, testDurations, isRootSuite = false) {
|
|
96
108
|
const file = this.normalizeFilePath(suite.file);
|
|
97
|
-
|
|
109
|
+
// Root suites have the filename as title - skip it from titlePath
|
|
110
|
+
// Nested suites (describe blocks) have meaningful titles to include
|
|
111
|
+
// This matches test-discovery.ts behavior exactly
|
|
112
|
+
const currentTitles = !isRootSuite && suite.title && suite.title !== ''
|
|
98
113
|
? [...parentTitles, suite.title]
|
|
99
114
|
: parentTitles;
|
|
100
115
|
// Process specs (actual tests)
|
|
@@ -112,7 +127,7 @@ export default class ExtractTiming extends Command {
|
|
|
112
127
|
testDurations[testId] = totalDuration;
|
|
113
128
|
}
|
|
114
129
|
}
|
|
115
|
-
// Process nested suites
|
|
130
|
+
// Process nested suites (describe blocks - never root suites)
|
|
116
131
|
if (suite.suites) {
|
|
117
132
|
for (const nestedSuite of suite.suites) {
|
|
118
133
|
// Pass the file from parent if nested suite doesn't have one
|
|
@@ -120,29 +135,65 @@ export default class ExtractTiming extends Command {
|
|
|
120
135
|
...nestedSuite,
|
|
121
136
|
file: nestedSuite.file || suite.file,
|
|
122
137
|
};
|
|
123
|
-
this.extractTestsFromSuite(nestedWithFile, currentTitles, testDurations);
|
|
138
|
+
this.extractTestsFromSuite(nestedWithFile, currentTitles, testDurations, false);
|
|
124
139
|
}
|
|
125
140
|
}
|
|
126
141
|
}
|
|
127
142
|
/**
|
|
128
|
-
* Normalize file path to be relative
|
|
129
|
-
*
|
|
143
|
+
* Normalize file path to be relative to testDir.
|
|
144
|
+
*
|
|
145
|
+
* DETERMINISTIC APPROACH:
|
|
146
|
+
* 1. suite.file in Playwright report is always relative to rootDir
|
|
147
|
+
* 2. testDir is either absolute or relative to rootDir
|
|
148
|
+
* 3. We resolve both to get absolute paths, then compute relative path
|
|
149
|
+
*
|
|
150
|
+
* This ensures consistent test IDs regardless of container path differences.
|
|
130
151
|
*/
|
|
131
152
|
normalizeFilePath(filePath) {
|
|
132
|
-
|
|
153
|
+
const normalizedFile = filePath.replace(/\\/g, '/');
|
|
154
|
+
const normalizedTestDir = this.testDir.replace(/\\/g, '/');
|
|
155
|
+
const normalizedRootDir = this.rootDir.replace(/\\/g, '/');
|
|
156
|
+
// suite.file in Playwright JSON report is relative to rootDir
|
|
157
|
+
// Resolve it to get the "logical" absolute path
|
|
158
|
+
const absoluteFile = path.isAbsolute(normalizedFile)
|
|
159
|
+
? normalizedFile
|
|
160
|
+
: path.join(normalizedRootDir, normalizedFile).replace(/\\/g, '/');
|
|
161
|
+
// testDir might be relative to rootDir, resolve it
|
|
162
|
+
const absoluteTestDir = path.isAbsolute(normalizedTestDir)
|
|
163
|
+
? normalizedTestDir
|
|
164
|
+
: path.join(normalizedRootDir, normalizedTestDir).replace(/\\/g, '/');
|
|
165
|
+
// Now compute relative path from testDir to file
|
|
166
|
+
// Both are now in the same "logical" path space
|
|
167
|
+
const relativePath = path
|
|
168
|
+
.relative(absoluteTestDir, absoluteFile)
|
|
169
|
+
.replace(/\\/g, '/');
|
|
170
|
+
// Sanity check: result should not start with ../
|
|
171
|
+
// If it does, the file is outside testDir which shouldn't happen
|
|
172
|
+
if (relativePath.startsWith('../')) {
|
|
173
|
+
// Log warning but continue - use basename as fallback
|
|
174
|
+
// This handles edge cases where paths are truly mismatched
|
|
175
|
+
return path.basename(filePath);
|
|
176
|
+
}
|
|
177
|
+
return relativePath;
|
|
133
178
|
}
|
|
134
179
|
/**
|
|
135
|
-
* Extract
|
|
180
|
+
* Extract rootDir and testDir from Playwright report config.
|
|
136
181
|
*
|
|
137
|
-
* CRITICAL:
|
|
138
|
-
*
|
|
182
|
+
* CRITICAL: We need both paths to correctly resolve file locations:
|
|
183
|
+
* - rootDir: where playwright.config.ts is located (absolute)
|
|
184
|
+
* - testDir: where tests are located (can be relative to rootDir)
|
|
139
185
|
*/
|
|
140
|
-
|
|
186
|
+
getPathsFromReport(report, projectName) {
|
|
141
187
|
const config = report.config;
|
|
142
188
|
if (!config) {
|
|
143
189
|
this.error('[Orchestrator] Report has no config section. ' +
|
|
144
190
|
'Ensure you are using Playwright JSON reporter with config output enabled.');
|
|
145
191
|
}
|
|
192
|
+
// rootDir is where playwright.config.ts is located
|
|
193
|
+
if (!config.rootDir) {
|
|
194
|
+
this.error('[Orchestrator] Report has no rootDir in config. ' +
|
|
195
|
+
'This is required to resolve test file paths correctly.');
|
|
196
|
+
}
|
|
146
197
|
if (!config.projects || config.projects.length === 0) {
|
|
147
198
|
this.error('[Orchestrator] Report has no projects in config. ' +
|
|
148
199
|
'Ensure your playwright.config.ts has at least one project configured.');
|
|
@@ -156,10 +207,12 @@ export default class ExtractTiming extends Command {
|
|
|
156
207
|
}
|
|
157
208
|
if (!project.testDir) {
|
|
158
209
|
this.error(`[Orchestrator] Project "${project.name}" has no testDir in report config. ` +
|
|
159
|
-
'Ensure your playwright.config.ts project has testDir set.
|
|
160
|
-
'Do NOT use rootDir as fallback - it causes path mismatch bugs.');
|
|
210
|
+
'Ensure your playwright.config.ts project has testDir set.');
|
|
161
211
|
}
|
|
162
|
-
return
|
|
212
|
+
return {
|
|
213
|
+
rootDir: config.rootDir,
|
|
214
|
+
testDir: project.testDir,
|
|
215
|
+
};
|
|
163
216
|
}
|
|
164
217
|
}
|
|
165
218
|
//# sourceMappingURL=extract-timing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract-timing.js","sourceRoot":"","sources":["../../src/commands/extract-timing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAChD,MAAM,CAAU,WAAW,GACzB,iDAAiD,CAAC;IAEpD,MAAM,CAAU,QAAQ,GAAG;QACzB,6GAA6G;QAC7G,mGAAmG;KACpG,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1B,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,qCAAqC;YAClD,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1B,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,kCAAkC;SAChD,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,8BAA8B;YAC3C,OAAO,EAAE,CAAC;SACX,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,yBAAyB;YACtC,OAAO,EAAE,SAAS;SACnB,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,qBAAqB;YAClC,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,
|
|
1
|
+
{"version":3,"file":"extract-timing.js","sourceRoot":"","sources":["../../src/commands/extract-timing.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED