@molecule/api-ai-tools 1.16.1 → 1.16.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -1
- package/dist/browser-probe.d.ts.map +1 -1
- package/dist/browser-probe.js +1 -211
- package/dist/source-code.d.ts +17 -0
- package/dist/source-code.d.ts.map +1 -0
- package/dist/source-code.js +214 -0
- package/dist/suite-overlap.d.ts +24 -0
- package/dist/suite-overlap.d.ts.map +1 -1
- package/dist/suite-overlap.js +53 -17
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +3 -7
- package/dist/trace-artifacts.d.ts +16 -0
- package/dist/trace-artifacts.d.ts.map +1 -1
- package/dist/trace-artifacts.js +244 -51
- package/dist/utilities.d.ts.map +1 -1
- package/dist/utilities.js +8 -22
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@ AUTO-GENERATED — DO NOT EDIT THIS FILE.
|
|
|
3
3
|
Generated by `mlcl sync-docs` from the package's src/index.ts JSDoc + mlcl/registry.json.
|
|
4
4
|
Edits here are overwritten on the next commit (molecule's pre-commit hook regenerates).
|
|
5
5
|
To change this document, edit the module-level JSDoc in src/index.ts.
|
|
6
|
-
Generated: 2026-11-
|
|
6
|
+
Generated: 2026-11-04T11:19:09.206Z
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
# @molecule/api-ai-tools
|
|
@@ -2719,6 +2719,20 @@ function suiteCommandTarget(command: string): string
|
|
|
2719
2719
|
|
|
2720
2720
|
**Returns:** The target key.
|
|
2721
2721
|
|
|
2722
|
+
#### `playwrightCommandTarget(command, last)`
|
|
2723
|
+
|
|
2724
|
+
The target of the actual Playwright step, including inherited exports. URLs and option names
|
|
2725
|
+
in another program or a quoted title cannot decide whether this step is deployed.
|
|
2726
|
+
|
|
2727
|
+
```typescript
|
|
2728
|
+
function playwrightCommandTarget(command: string, last?: boolean): string
|
|
2729
|
+
```
|
|
2730
|
+
|
|
2731
|
+
- `command` — The shell command.
|
|
2732
|
+
- `last` — Read the last Playwright invocation, for the background launch rewrite.
|
|
2733
|
+
|
|
2734
|
+
**Returns:** The comparable target key, or local when no target setting is present.
|
|
2735
|
+
|
|
2722
2736
|
#### `namesSuiteConfig(command)`
|
|
2723
2737
|
|
|
2724
2738
|
Whether a Playwright statement names its own config — the reading {@link withSuiteConfig} and
|
|
@@ -2822,6 +2836,27 @@ function withRunEnv(command: string, settings?: readonly RunEnvSetting[]): strin
|
|
|
2822
2836
|
|
|
2823
2837
|
**Returns:** The command, or the command unchanged when it already carries every setting.
|
|
2824
2838
|
|
|
2839
|
+
#### `suiteRunDirectory(command, cwd)`
|
|
2840
|
+
|
|
2841
|
+
The absolute directory the Playwright statement in a command runs in, or null when the command
|
|
2842
|
+
does not say.
|
|
2843
|
+
|
|
2844
|
+
The reporter prints a failing test's file relative to the process directory the runner started
|
|
2845
|
+
in (`../fixtures/…` from a run whose suite lives outside its own tree), so the directory has to
|
|
2846
|
+
come from the command itself: `exec_command`'s `cwd` when it was given, then each `cd` before
|
|
2847
|
+
the runner. Only a literal `cd` is followed — a target holding a variable, a glob or `~`
|
|
2848
|
+
resolves nowhere useful, and a guessed absolute path is worse than the relative one the
|
|
2849
|
+
reporter printed.
|
|
2850
|
+
|
|
2851
|
+
```typescript
|
|
2852
|
+
function suiteRunDirectory(command: string, cwd?: string | null): string | null
|
|
2853
|
+
```
|
|
2854
|
+
|
|
2855
|
+
- `command` — The shell command.
|
|
2856
|
+
- `cwd` — The `cwd` the tool was given, when it was.
|
|
2857
|
+
|
|
2858
|
+
**Returns:** The absolute directory, or null.
|
|
2859
|
+
|
|
2825
2860
|
#### `resolvePlaywrightSelectionPaths(command, cwd)`
|
|
2826
2861
|
|
|
2827
2862
|
Resolve literal `./`/`../` Playwright file selections against the runner's own directory.
|
|
@@ -3410,6 +3445,7 @@ function diagnosisTraceCommand(args: {
|
|
|
3410
3445
|
command: string
|
|
3411
3446
|
cwd: string
|
|
3412
3447
|
readFile: (path: string) => Promise<string>
|
|
3448
|
+
readDir?: ReadConfigDirectory
|
|
3413
3449
|
}): Promise<DiagnosisTraceRewrite>
|
|
3414
3450
|
```
|
|
3415
3451
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-probe.d.ts","sourceRoot":"","sources":["../src/browser-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;
|
|
1
|
+
{"version":3,"file":"browser-probe.d.ts","sourceRoot":"","sources":["../src/browser-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAIH,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,iEAAiE;AACjE,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AA8ND;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAyB7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,sBAAsB,EAC7B,aAAa,EAAE,MAAM,EACrB,KAAK,UAAQ,GACZ,MAAM,CAaR;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CASlF"}
|
package/dist/browser-probe.js
CHANGED
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
*
|
|
37
37
|
* @module
|
|
38
38
|
*/
|
|
39
|
+
import { codeWithModuleSpecifiers as codeOnly } from './source-code.js';
|
|
39
40
|
/** A `const|let|var <name> = await [qualifier.]chromium|firefox|webkit.launch(` binding. */
|
|
40
41
|
const LAUNCH = /(?<![\w$.])(?:const|let|var)\s+([A-Za-z_$][\w$]*)\s*(?::[^=\n]+)?=\s*await\s+(?:([A-Za-z_$][\w$]*)\s*\.\s*)?(chromium|firefox|webkit)\s*\.\s*launch\s*\(/g;
|
|
41
42
|
/** A browser method that does not close the browser, so calling it leaves the handle alive. */
|
|
@@ -57,217 +58,6 @@ const ANY_CLEANUP = /\.\s*(?:close|disconnect|dispose)\s*\(|[A-Za-z_$][\w$]*\s*\
|
|
|
57
58
|
const CLEANUP_HINT = /cleanup|teardown|close|dispose|shutdown|quit/i;
|
|
58
59
|
/** The packages whose `chromium`/`firefox`/`webkit` export really launches a browser. */
|
|
59
60
|
const PLAYWRIGHT_PACKAGE = '(?:playwright-core|playwright|@playwright/test)';
|
|
60
|
-
/** The characters after which a `/` starts a regex literal rather than a division. */
|
|
61
|
-
const REGEX_AFTER = new Set([
|
|
62
|
-
'',
|
|
63
|
-
'(',
|
|
64
|
-
'[',
|
|
65
|
-
'{',
|
|
66
|
-
',',
|
|
67
|
-
';',
|
|
68
|
-
':',
|
|
69
|
-
'=',
|
|
70
|
-
'!',
|
|
71
|
-
'&',
|
|
72
|
-
'|',
|
|
73
|
-
'?',
|
|
74
|
-
'+',
|
|
75
|
-
'-',
|
|
76
|
-
'*',
|
|
77
|
-
'%',
|
|
78
|
-
'^',
|
|
79
|
-
'~',
|
|
80
|
-
'<',
|
|
81
|
-
'>',
|
|
82
|
-
'}',
|
|
83
|
-
]);
|
|
84
|
-
/**
|
|
85
|
-
* A source with every comment and every string, template and regex literal blanked to spaces,
|
|
86
|
-
* preserving offsets and newlines so a match's position still indexes the original source.
|
|
87
|
-
*
|
|
88
|
-
* A launch mentioned in prose is not a launch: a review proved scripts that only PRINT
|
|
89
|
-
* `const browser = await chromium.launch()` — in a string, a comment and a template literal — and
|
|
90
|
-
* a raw substring match refused all of them. Template `${…}` substitutions stay code (a `close()`
|
|
91
|
-
* written there is a real cleanup path), nested braces are tracked so the substitution's end is
|
|
92
|
-
* found, and regex literals are recognised by the token before them so a quote inside a character
|
|
93
|
-
* class cannot blank the rest of the file.
|
|
94
|
-
*
|
|
95
|
-
* @param source - The script's source.
|
|
96
|
-
* @returns The same text with literal/comment spans replaced by spaces.
|
|
97
|
-
*/
|
|
98
|
-
function codeOnly(source) {
|
|
99
|
-
const out = source.split('');
|
|
100
|
-
const blank = (from, to) => {
|
|
101
|
-
for (let i = from; i < to; i++)
|
|
102
|
-
if (out[i] !== '\n')
|
|
103
|
-
out[i] = ' ';
|
|
104
|
-
};
|
|
105
|
-
const stack = [{ mode: 'code', braces: 0 }];
|
|
106
|
-
const top = () => stack[stack.length - 1];
|
|
107
|
-
/** The last non-whitespace CODE character: decides whether a `/` opens a regex. */
|
|
108
|
-
let lastCode = '';
|
|
109
|
-
/** The last identifier word and the word being read — a module specifier follows `from`. */
|
|
110
|
-
let lastWord = '';
|
|
111
|
-
let word = '';
|
|
112
|
-
/** A specifier (`from 'playwright'`, `require('playwright')`) stays readable to provenance. */
|
|
113
|
-
const specifierAhead = () => lastWord === 'from' || lastWord === 'require' || lastWord === 'import';
|
|
114
|
-
let i = 0;
|
|
115
|
-
while (i < source.length) {
|
|
116
|
-
const frame = top();
|
|
117
|
-
const char = source[i] ?? '';
|
|
118
|
-
const next = source[i + 1];
|
|
119
|
-
if (frame.mode === 'code') {
|
|
120
|
-
if (char === '/' && next === '/') {
|
|
121
|
-
stack.push({ mode: 'line' });
|
|
122
|
-
blank(i, i + 2);
|
|
123
|
-
i += 2;
|
|
124
|
-
continue;
|
|
125
|
-
}
|
|
126
|
-
if (char === '/' && next === '*') {
|
|
127
|
-
stack.push({ mode: 'block' });
|
|
128
|
-
blank(i, i + 2);
|
|
129
|
-
i += 2;
|
|
130
|
-
continue;
|
|
131
|
-
}
|
|
132
|
-
if (char === "'" || char === '"') {
|
|
133
|
-
stack.push({ mode: 'string', quote: char, keep: specifierAhead() });
|
|
134
|
-
if (!specifierAhead())
|
|
135
|
-
out[i] = ' ';
|
|
136
|
-
i += 1;
|
|
137
|
-
continue;
|
|
138
|
-
}
|
|
139
|
-
if (char === '`') {
|
|
140
|
-
stack.push({ mode: 'template' });
|
|
141
|
-
out[i] = ' ';
|
|
142
|
-
i += 1;
|
|
143
|
-
continue;
|
|
144
|
-
}
|
|
145
|
-
if (char === '/' && REGEX_AFTER.has(lastCode)) {
|
|
146
|
-
stack.push({ mode: 'regex', inClass: false });
|
|
147
|
-
out[i] = ' ';
|
|
148
|
-
i += 1;
|
|
149
|
-
continue;
|
|
150
|
-
}
|
|
151
|
-
if (frame.braces > 0) {
|
|
152
|
-
if (char === '{')
|
|
153
|
-
frame.braces += 1;
|
|
154
|
-
else if (char === '}') {
|
|
155
|
-
frame.braces -= 1;
|
|
156
|
-
if (frame.braces === 0) {
|
|
157
|
-
stack.pop();
|
|
158
|
-
out[i] = ' ';
|
|
159
|
-
i += 1;
|
|
160
|
-
continue;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
if (/[\w$]/.test(char))
|
|
165
|
-
word += char;
|
|
166
|
-
else if (word !== '') {
|
|
167
|
-
lastWord = word;
|
|
168
|
-
word = '';
|
|
169
|
-
}
|
|
170
|
-
if (!/\s/.test(char))
|
|
171
|
-
lastCode = char;
|
|
172
|
-
i += 1;
|
|
173
|
-
continue;
|
|
174
|
-
}
|
|
175
|
-
if (frame.mode === 'line') {
|
|
176
|
-
if (char === '\n') {
|
|
177
|
-
stack.pop();
|
|
178
|
-
i += 1;
|
|
179
|
-
continue;
|
|
180
|
-
}
|
|
181
|
-
out[i] = ' ';
|
|
182
|
-
i += 1;
|
|
183
|
-
continue;
|
|
184
|
-
}
|
|
185
|
-
if (frame.mode === 'block') {
|
|
186
|
-
if (char === '*' && next === '/') {
|
|
187
|
-
blank(i, i + 2);
|
|
188
|
-
stack.pop();
|
|
189
|
-
i += 2;
|
|
190
|
-
continue;
|
|
191
|
-
}
|
|
192
|
-
if (char !== '\n')
|
|
193
|
-
out[i] = ' ';
|
|
194
|
-
i += 1;
|
|
195
|
-
continue;
|
|
196
|
-
}
|
|
197
|
-
if (frame.mode === 'string') {
|
|
198
|
-
if (char === '\\') {
|
|
199
|
-
if (!frame.keep)
|
|
200
|
-
blank(i, i + 2);
|
|
201
|
-
i += 2;
|
|
202
|
-
continue;
|
|
203
|
-
}
|
|
204
|
-
if (char === frame.quote) {
|
|
205
|
-
if (!frame.keep)
|
|
206
|
-
out[i] = ' ';
|
|
207
|
-
stack.pop();
|
|
208
|
-
// A string is an operand: the next `/` is division, not a regex.
|
|
209
|
-
lastCode = 'x';
|
|
210
|
-
i += 1;
|
|
211
|
-
continue;
|
|
212
|
-
}
|
|
213
|
-
if (!frame.keep && char !== '\n')
|
|
214
|
-
out[i] = ' ';
|
|
215
|
-
i += 1;
|
|
216
|
-
continue;
|
|
217
|
-
}
|
|
218
|
-
if (frame.mode === 'template') {
|
|
219
|
-
if (char === '\\') {
|
|
220
|
-
blank(i, i + 2);
|
|
221
|
-
i += 2;
|
|
222
|
-
continue;
|
|
223
|
-
}
|
|
224
|
-
if (char === '`') {
|
|
225
|
-
out[i] = ' ';
|
|
226
|
-
stack.pop();
|
|
227
|
-
lastCode = 'x';
|
|
228
|
-
i += 1;
|
|
229
|
-
continue;
|
|
230
|
-
}
|
|
231
|
-
if (char === '$' && next === '{') {
|
|
232
|
-
// The substitution is code: keep it visible and track its closing brace.
|
|
233
|
-
blank(i, i + 2);
|
|
234
|
-
stack.push({ mode: 'code', braces: 1 });
|
|
235
|
-
lastCode = '{';
|
|
236
|
-
i += 2;
|
|
237
|
-
continue;
|
|
238
|
-
}
|
|
239
|
-
if (char !== '\n')
|
|
240
|
-
out[i] = ' ';
|
|
241
|
-
i += 1;
|
|
242
|
-
continue;
|
|
243
|
-
}
|
|
244
|
-
// Regex literal: blank it, honour escapes and character classes, then its flags.
|
|
245
|
-
if (char === '\\') {
|
|
246
|
-
blank(i, i + 2);
|
|
247
|
-
i += 2;
|
|
248
|
-
continue;
|
|
249
|
-
}
|
|
250
|
-
if (char === '[')
|
|
251
|
-
frame.inClass = true;
|
|
252
|
-
else if (char === ']')
|
|
253
|
-
frame.inClass = false;
|
|
254
|
-
else if (char === '/' && !frame.inClass) {
|
|
255
|
-
out[i] = ' ';
|
|
256
|
-
stack.pop();
|
|
257
|
-
lastCode = 'x';
|
|
258
|
-
i += 1;
|
|
259
|
-
while (i < source.length && /[a-z]/i.test(source[i] ?? '')) {
|
|
260
|
-
out[i] = ' ';
|
|
261
|
-
i += 1;
|
|
262
|
-
}
|
|
263
|
-
continue;
|
|
264
|
-
}
|
|
265
|
-
if (char !== '\n')
|
|
266
|
-
out[i] = ' ';
|
|
267
|
-
i += 1;
|
|
268
|
-
}
|
|
269
|
-
return out.join('');
|
|
270
|
-
}
|
|
271
61
|
/**
|
|
272
62
|
* How many `{ … }` blocks are open at one offset of the code-only text.
|
|
273
63
|
*
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Shared lexical masking for source inspection without executing a module. */
|
|
2
|
+
/**
|
|
3
|
+
* A source with every comment and every string, template and regex literal blanked to spaces,
|
|
4
|
+
* preserving offsets and newlines so a match's position still indexes the original source.
|
|
5
|
+
*
|
|
6
|
+
* A launch mentioned in prose is not a launch: a review proved scripts that only PRINT
|
|
7
|
+
* `const browser = await chromium.launch()` — in a string, a comment and a template literal — and
|
|
8
|
+
* a raw substring match refused all of them. Template `${…}` substitutions stay code (a `close()`
|
|
9
|
+
* written there is a real cleanup path), nested braces are tracked so the substitution's end is
|
|
10
|
+
* found, and regex literals are recognised by the token before them so a quote inside a character
|
|
11
|
+
* class cannot blank the rest of the file.
|
|
12
|
+
*
|
|
13
|
+
* @param source - The script's source.
|
|
14
|
+
* @returns The same text with literal/comment spans replaced by spaces.
|
|
15
|
+
*/
|
|
16
|
+
export declare function codeWithModuleSpecifiers(source: string): string;
|
|
17
|
+
//# sourceMappingURL=source-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-code.d.ts","sourceRoot":"","sources":["../src/source-code.ts"],"names":[],"mappings":"AAAA,+EAA+E;AA2B/E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAwK/D"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/** Shared lexical masking for source inspection without executing a module. */
|
|
2
|
+
/** The characters after which a `/` starts a regex literal rather than a division. */
|
|
3
|
+
const REGEX_AFTER = new Set([
|
|
4
|
+
'',
|
|
5
|
+
'(',
|
|
6
|
+
'[',
|
|
7
|
+
'{',
|
|
8
|
+
',',
|
|
9
|
+
';',
|
|
10
|
+
':',
|
|
11
|
+
'=',
|
|
12
|
+
'!',
|
|
13
|
+
'&',
|
|
14
|
+
'|',
|
|
15
|
+
'?',
|
|
16
|
+
'+',
|
|
17
|
+
'-',
|
|
18
|
+
'*',
|
|
19
|
+
'%',
|
|
20
|
+
'^',
|
|
21
|
+
'~',
|
|
22
|
+
'<',
|
|
23
|
+
'>',
|
|
24
|
+
'}',
|
|
25
|
+
]);
|
|
26
|
+
/**
|
|
27
|
+
* A source with every comment and every string, template and regex literal blanked to spaces,
|
|
28
|
+
* preserving offsets and newlines so a match's position still indexes the original source.
|
|
29
|
+
*
|
|
30
|
+
* A launch mentioned in prose is not a launch: a review proved scripts that only PRINT
|
|
31
|
+
* `const browser = await chromium.launch()` — in a string, a comment and a template literal — and
|
|
32
|
+
* a raw substring match refused all of them. Template `${…}` substitutions stay code (a `close()`
|
|
33
|
+
* written there is a real cleanup path), nested braces are tracked so the substitution's end is
|
|
34
|
+
* found, and regex literals are recognised by the token before them so a quote inside a character
|
|
35
|
+
* class cannot blank the rest of the file.
|
|
36
|
+
*
|
|
37
|
+
* @param source - The script's source.
|
|
38
|
+
* @returns The same text with literal/comment spans replaced by spaces.
|
|
39
|
+
*/
|
|
40
|
+
export function codeWithModuleSpecifiers(source) {
|
|
41
|
+
const out = source.split('');
|
|
42
|
+
const blank = (from, to) => {
|
|
43
|
+
for (let i = from; i < to; i++)
|
|
44
|
+
if (out[i] !== '\n')
|
|
45
|
+
out[i] = ' ';
|
|
46
|
+
};
|
|
47
|
+
const stack = [{ mode: 'code', braces: 0 }];
|
|
48
|
+
const top = () => stack[stack.length - 1];
|
|
49
|
+
/** The last non-whitespace CODE character: decides whether a `/` opens a regex. */
|
|
50
|
+
let lastCode = '';
|
|
51
|
+
/** The last identifier word and the word being read — a module specifier follows `from`. */
|
|
52
|
+
let lastWord = '';
|
|
53
|
+
let word = '';
|
|
54
|
+
/** A specifier (`from 'playwright'`, `require('playwright')`) stays readable to provenance. */
|
|
55
|
+
const specifierAhead = () => (lastWord === 'from' && lastCode === 'm') ||
|
|
56
|
+
(lastWord === 'import' && lastCode === 't') ||
|
|
57
|
+
((lastWord === 'require' || lastWord === 'import') && lastCode === '(');
|
|
58
|
+
let i = 0;
|
|
59
|
+
while (i < source.length) {
|
|
60
|
+
const frame = top();
|
|
61
|
+
const char = source[i] ?? '';
|
|
62
|
+
const next = source[i + 1];
|
|
63
|
+
if (frame.mode === 'code') {
|
|
64
|
+
if (char === '/' && next === '/') {
|
|
65
|
+
stack.push({ mode: 'line' });
|
|
66
|
+
blank(i, i + 2);
|
|
67
|
+
i += 2;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (char === '/' && next === '*') {
|
|
71
|
+
stack.push({ mode: 'block' });
|
|
72
|
+
blank(i, i + 2);
|
|
73
|
+
i += 2;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (char === "'" || char === '"') {
|
|
77
|
+
stack.push({ mode: 'string', quote: char, keep: specifierAhead() });
|
|
78
|
+
if (!specifierAhead())
|
|
79
|
+
out[i] = ' ';
|
|
80
|
+
i += 1;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (char === '`') {
|
|
84
|
+
stack.push({ mode: 'template' });
|
|
85
|
+
out[i] = ' ';
|
|
86
|
+
i += 1;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (char === '/' && REGEX_AFTER.has(lastCode)) {
|
|
90
|
+
stack.push({ mode: 'regex', inClass: false });
|
|
91
|
+
out[i] = ' ';
|
|
92
|
+
i += 1;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (frame.braces > 0) {
|
|
96
|
+
if (char === '{')
|
|
97
|
+
frame.braces += 1;
|
|
98
|
+
else if (char === '}') {
|
|
99
|
+
frame.braces -= 1;
|
|
100
|
+
if (frame.braces === 0) {
|
|
101
|
+
stack.pop();
|
|
102
|
+
out[i] = ' ';
|
|
103
|
+
i += 1;
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (/[\w$]/.test(char))
|
|
109
|
+
word += char;
|
|
110
|
+
else if (word !== '') {
|
|
111
|
+
lastWord = word;
|
|
112
|
+
word = '';
|
|
113
|
+
}
|
|
114
|
+
if (!/\s/.test(char))
|
|
115
|
+
lastCode = char;
|
|
116
|
+
i += 1;
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
if (frame.mode === 'line') {
|
|
120
|
+
if (char === '\n') {
|
|
121
|
+
stack.pop();
|
|
122
|
+
i += 1;
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
out[i] = ' ';
|
|
126
|
+
i += 1;
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (frame.mode === 'block') {
|
|
130
|
+
if (char === '*' && next === '/') {
|
|
131
|
+
blank(i, i + 2);
|
|
132
|
+
stack.pop();
|
|
133
|
+
i += 2;
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (char !== '\n')
|
|
137
|
+
out[i] = ' ';
|
|
138
|
+
i += 1;
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (frame.mode === 'string') {
|
|
142
|
+
if (char === '\\') {
|
|
143
|
+
if (!frame.keep)
|
|
144
|
+
blank(i, i + 2);
|
|
145
|
+
i += 2;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
if (char === frame.quote) {
|
|
149
|
+
if (!frame.keep)
|
|
150
|
+
out[i] = ' ';
|
|
151
|
+
stack.pop();
|
|
152
|
+
// A string is an operand: the next `/` is division, not a regex.
|
|
153
|
+
lastCode = 'x';
|
|
154
|
+
i += 1;
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (!frame.keep && char !== '\n')
|
|
158
|
+
out[i] = ' ';
|
|
159
|
+
i += 1;
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
if (frame.mode === 'template') {
|
|
163
|
+
if (char === '\\') {
|
|
164
|
+
blank(i, i + 2);
|
|
165
|
+
i += 2;
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
if (char === '`') {
|
|
169
|
+
out[i] = ' ';
|
|
170
|
+
stack.pop();
|
|
171
|
+
lastCode = 'x';
|
|
172
|
+
i += 1;
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (char === '$' && next === '{') {
|
|
176
|
+
// The substitution is code: keep it visible and track its closing brace.
|
|
177
|
+
blank(i, i + 2);
|
|
178
|
+
stack.push({ mode: 'code', braces: 1 });
|
|
179
|
+
lastCode = '{';
|
|
180
|
+
i += 2;
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (char !== '\n')
|
|
184
|
+
out[i] = ' ';
|
|
185
|
+
i += 1;
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
// Regex literal: blank it, honour escapes and character classes, then its flags.
|
|
189
|
+
if (char === '\\') {
|
|
190
|
+
blank(i, i + 2);
|
|
191
|
+
i += 2;
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
if (char === '[')
|
|
195
|
+
frame.inClass = true;
|
|
196
|
+
else if (char === ']')
|
|
197
|
+
frame.inClass = false;
|
|
198
|
+
else if (char === '/' && !frame.inClass) {
|
|
199
|
+
out[i] = ' ';
|
|
200
|
+
stack.pop();
|
|
201
|
+
lastCode = 'x';
|
|
202
|
+
i += 1;
|
|
203
|
+
while (i < source.length && /[a-z]/i.test(source[i] ?? '')) {
|
|
204
|
+
out[i] = ' ';
|
|
205
|
+
i += 1;
|
|
206
|
+
}
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
if (char !== '\n')
|
|
210
|
+
out[i] = ' ';
|
|
211
|
+
i += 1;
|
|
212
|
+
}
|
|
213
|
+
return out.join('');
|
|
214
|
+
}
|
package/dist/suite-overlap.d.ts
CHANGED
|
@@ -50,6 +50,14 @@ export declare function withoutHeredocs(command: string): string;
|
|
|
50
50
|
* @returns The target key.
|
|
51
51
|
*/
|
|
52
52
|
export declare function suiteCommandTarget(command: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* The target of the actual Playwright step, including inherited exports. URLs and option names
|
|
55
|
+
* in another program or a quoted title cannot decide whether this step is deployed.
|
|
56
|
+
* @param command - The shell command.
|
|
57
|
+
* @param last - Read the last Playwright invocation, for the background launch rewrite.
|
|
58
|
+
* @returns The comparable target key, or local when no target setting is present.
|
|
59
|
+
*/
|
|
60
|
+
export declare function playwrightCommandTarget(command: string, last?: boolean): string;
|
|
53
61
|
/**
|
|
54
62
|
* Whether a Playwright statement names its own config — the reading {@link withSuiteConfig} and
|
|
55
63
|
* {@link scopedRerunCommand} share, so neither adds a second `--config` to a command that has one.
|
|
@@ -147,6 +155,22 @@ export interface RunEnvSetting {
|
|
|
147
155
|
* @returns The command, or the command unchanged when it already carries every setting.
|
|
148
156
|
*/
|
|
149
157
|
export declare function withRunEnv(command: string, settings?: readonly RunEnvSetting[]): string;
|
|
158
|
+
/**
|
|
159
|
+
* The absolute directory the Playwright statement in a command runs in, or null when the command
|
|
160
|
+
* does not say.
|
|
161
|
+
*
|
|
162
|
+
* The reporter prints a failing test's file relative to the process directory the runner started
|
|
163
|
+
* in (`../fixtures/…` from a run whose suite lives outside its own tree), so the directory has to
|
|
164
|
+
* come from the command itself: `exec_command`'s `cwd` when it was given, then each `cd` before
|
|
165
|
+
* the runner. Only a literal `cd` is followed — a target holding a variable, a glob or `~`
|
|
166
|
+
* resolves nowhere useful, and a guessed absolute path is worse than the relative one the
|
|
167
|
+
* reporter printed.
|
|
168
|
+
*
|
|
169
|
+
* @param command - The shell command.
|
|
170
|
+
* @param cwd - The `cwd` the tool was given, when it was.
|
|
171
|
+
* @returns The absolute directory, or null.
|
|
172
|
+
*/
|
|
173
|
+
export declare function suiteRunDirectory(command: string, cwd?: string | null): string | null;
|
|
150
174
|
/**
|
|
151
175
|
* Resolve literal `./`/`../` Playwright file selections against the runner's own directory.
|
|
152
176
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suite-overlap.d.ts","sourceRoot":"","sources":["../src/suite-overlap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAaH;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoB1D;AAKD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAS1F;AA2VD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,QAAQ,GAAE,SAAS,MAAM,EAAO,EAChC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EACnB,GAAG,GAAE,SAAS,aAAa,EAAO,EAClC,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,MAAM,CA2DR;AAED,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAmCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,SAAS,aAAa,EAAO,GAAG,MAAM,CAe3F;
|
|
1
|
+
{"version":3,"file":"suite-overlap.d.ts","sourceRoot":"","sources":["../src/suite-overlap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAaH;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoB1D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,MAAM,CAwB7E;AAKD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAS1F;AA2VD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,QAAQ,GAAE,SAAS,MAAM,EAAO,EAChC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EACnB,GAAG,GAAE,SAAS,aAAa,EAAO,EAClC,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,MAAM,CA2DR;AAED,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAmCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,SAAS,aAAa,EAAO,GAAG,MAAM,CAe3F;AAQD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAiCrF;AAkND;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAa5F;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,SAAS,EAAE,OAAO,CAAA;IAClB,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,EACzD,SAAS,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAC7B,QAAQ,EAAE,SAAS,CAAC,EAAE,GACrB,CAAC,GAAG,IAAI,CAMV;AAqHD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,MAA4D,CAAA;AAEhG;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAM7D;AAmCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CA2BtF"}
|
package/dist/suite-overlap.js
CHANGED
|
@@ -75,6 +75,31 @@ export function suiteCommandTarget(command) {
|
|
|
75
75
|
}
|
|
76
76
|
return 'local';
|
|
77
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* The target of the actual Playwright step, including inherited exports. URLs and option names
|
|
80
|
+
* in another program or a quoted title cannot decide whether this step is deployed.
|
|
81
|
+
* @param command - The shell command.
|
|
82
|
+
* @param last - Read the last Playwright invocation, for the background launch rewrite.
|
|
83
|
+
* @returns The comparable target key, or local when no target setting is present.
|
|
84
|
+
*/
|
|
85
|
+
export function playwrightCommandTarget(command, last = false) {
|
|
86
|
+
const steps = locatedCommandSegments(command);
|
|
87
|
+
const runners = steps.filter((step) => step.segment?.program === 'playwright' && step.segment.args[0] === 'test');
|
|
88
|
+
const runner = runners.at(last ? -1 : 0);
|
|
89
|
+
if (!runner)
|
|
90
|
+
return suiteCommandTarget(command);
|
|
91
|
+
const inherited = steps
|
|
92
|
+
.slice(0, steps.indexOf(runner))
|
|
93
|
+
.filter((step) => (step.shellScope ?? []).every((scope, i) => scope === runner.shellScope?.[i]) &&
|
|
94
|
+
(step.segment === null || step.segment.program === 'export'));
|
|
95
|
+
const prefix = runner.start !== null && runner.programOffset !== null
|
|
96
|
+
? command.slice(runner.start, runner.programOffset)
|
|
97
|
+
: runner.assignments.join(' ');
|
|
98
|
+
return suiteCommandTarget([
|
|
99
|
+
prefix,
|
|
100
|
+
...inherited.reverse().map((step) => step.segment?.text ?? step.assignments.join(' ')),
|
|
101
|
+
].join('; '));
|
|
102
|
+
}
|
|
78
103
|
/** Whether a Playwright statement already names its own config (`-c`, `--config`, `--config=`). */
|
|
79
104
|
const NAMES_CONFIG = /(?:^|\s)(?:-c|--config)(?:\s+|=)/;
|
|
80
105
|
/**
|
|
@@ -619,29 +644,40 @@ const unquoted = (word) => word.replace(/^['"]|['"]$/g, '');
|
|
|
619
644
|
* @param cwd - The `cwd` the tool was given, when it was.
|
|
620
645
|
* @returns The absolute directory, or null.
|
|
621
646
|
*/
|
|
622
|
-
function suiteRunDirectory(command, cwd) {
|
|
623
|
-
|
|
624
|
-
|
|
647
|
+
export function suiteRunDirectory(command, cwd) {
|
|
648
|
+
const dirs = new Map([
|
|
649
|
+
['', typeof cwd === 'string' && cwd.startsWith('/') ? posix.normalize(cwd) : null],
|
|
650
|
+
]);
|
|
651
|
+
for (const located of locatedCommandSegments(command)) {
|
|
652
|
+
const scope = located.shellScope ?? [];
|
|
653
|
+
const key = scope.join('\0');
|
|
654
|
+
if (!dirs.has(key)) {
|
|
655
|
+
let parent = scope.slice(0, -1);
|
|
656
|
+
while (!dirs.has(parent.join('\0')))
|
|
657
|
+
parent = parent.slice(0, -1);
|
|
658
|
+
dirs.set(key, dirs.get(parent.join('\0')) ?? null);
|
|
659
|
+
}
|
|
660
|
+
const { segment } = located;
|
|
625
661
|
if (segment === null)
|
|
626
662
|
continue;
|
|
627
663
|
if (segment.program === 'cd') {
|
|
628
|
-
const
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
664
|
+
const words = segment.args.map(unquoted);
|
|
665
|
+
while (words[0] === '--' || words[0] === '-L' || words[0] === '-P')
|
|
666
|
+
words.shift();
|
|
667
|
+
const target = words[0] ?? '';
|
|
668
|
+
const dir = dirs.get(key) ?? null;
|
|
669
|
+
dirs.set(key, !target || target.startsWith('-') || target.startsWith('~') || !LITERAL_DIR.test(target)
|
|
670
|
+
? null
|
|
671
|
+
: target.startsWith('/')
|
|
672
|
+
? posix.normalize(target)
|
|
673
|
+
: dir === null
|
|
674
|
+
? null
|
|
675
|
+
: posix.normalize(posix.join(dir, target)));
|
|
640
676
|
}
|
|
641
677
|
if (segment.program === 'playwright' && segment.args[0] === 'test')
|
|
642
|
-
|
|
678
|
+
return dirs.get(key) ?? null;
|
|
643
679
|
}
|
|
644
|
-
return
|
|
680
|
+
return null;
|
|
645
681
|
}
|
|
646
682
|
/** A failure location's path and its `:line[:column]` suffix, split the way Playwright does. */
|
|
647
683
|
const LOCATION_LINE = /^(.*?)(:\d+(?::\d+)?)$/;
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AA2B9C,OAAO,EAIL,KAAK,mBAAmB,EAEzB,MAAM,wBAAwB,CAAA;AAsC/B;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,KAAK,CAAC,EACnD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAmB9B;AAuLD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAahG;AAwdD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAkInE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAEA,CAAA;AAE9B;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,QAI6C,CAAA;AA0DlF;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUhE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGtE;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,qBAAqB;IACpC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAA;AAoBpF;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,CAAC,GACxE,qBAAqB,CAkBvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiCxB;AA2GD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AA2B9C,OAAO,EAIL,KAAK,mBAAmB,EAEzB,MAAM,wBAAwB,CAAA;AAsC/B;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,KAAK,CAAC,EACnD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAmB9B;AAuLD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAahG;AAwdD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAkInE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAEA,CAAA;AAE9B;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,QAI6C,CAAA;AA0DlF;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUhE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGtE;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,qBAAqB;IACpC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAA;AAoBpF;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,CAAC,GACxE,qBAAqB,CAkBvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiCxB;AA2GD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,MAAM,EAAE,CAypGxF"}
|
package/dist/tools.js
CHANGED
|
@@ -2819,17 +2819,13 @@ export function buildTools(backend, config) {
|
|
|
2819
2819
|
};
|
|
2820
2820
|
}
|
|
2821
2821
|
}
|
|
2822
|
-
//
|
|
2823
|
-
//
|
|
2824
|
-
// tells a swallowed request error from a selector, and X1 xr-molecule-flash-m100 spent the
|
|
2825
|
-
// last minutes of its run hand-writing Chromium probes for what the trace it never wrote
|
|
2826
|
-
// down would have said. The whole rule is that function's; the whole-suite proof run gets it
|
|
2827
|
-
// too, since a trace is retained only for a failing test (m163's proof run left none and the
|
|
2828
|
-
// executor hunted one that did not exist).
|
|
2822
|
+
// Diagnostic runs need readable failure traces. A proof-capable deployed run retains its
|
|
2823
|
+
// own settings; diagnosisTraceCommand owns both decisions and uses the backend's readers.
|
|
2829
2824
|
const traced = await diagnosisTraceCommand({
|
|
2830
2825
|
command: rawCommand,
|
|
2831
2826
|
cwd,
|
|
2832
2827
|
readFile: (path) => backend.readFile(path),
|
|
2828
|
+
readDir: (path) => backend.readDir(path),
|
|
2833
2829
|
});
|
|
2834
2830
|
let command = traced.command;
|
|
2835
2831
|
// A leading `sleep N; <read of a background task's log>` is a hand-rolled poll, and the
|
|
@@ -853,6 +853,11 @@ export declare function suiteRecordsTraces(configText: string): boolean;
|
|
|
853
853
|
export declare function namesNoRetries(command: string): boolean;
|
|
854
854
|
/** The `--trace` flag this platform adds, and the only value it adds it with. */
|
|
855
855
|
export declare const DIAGNOSIS_TRACE_FLAG = "--trace=retain-on-failure";
|
|
856
|
+
/** The backend's existing directory capability, when available. */
|
|
857
|
+
type ReadConfigDirectory = (path: string) => Promise<Array<{
|
|
858
|
+
name: string;
|
|
859
|
+
type: 'file' | 'directory';
|
|
860
|
+
}>>;
|
|
856
861
|
/** A command with the trace flag this platform decided to add, and the sentence to report it in. */
|
|
857
862
|
export interface DiagnosisTraceRewrite {
|
|
858
863
|
/** The command to run. */
|
|
@@ -887,6 +892,16 @@ export interface DiagnosisTraceRewrite {
|
|
|
887
892
|
* `--retries=0` (`@molecule/api-ai-tools` `streamingBackgroundCommand`), so its retry trace would
|
|
888
893
|
* never happen. A run that pins `--retries=0` itself is in the same position, whatever its target.
|
|
889
894
|
*
|
|
895
|
+
* A proof-capable run is left alone WHATEVER its config traces. `--trace` is a per-run override of
|
|
896
|
+
* the suite's own `use.trace` (Playwright merges the CLI's `use` into every project's), and a test
|
|
897
|
+
* record carries the project settings it ran under: a run with the flag is not the suite's own
|
|
898
|
+
* measurement, so it can never count as deployed proof. Added to a deployed walk, the flag made the
|
|
899
|
+
* walk unprovable, and the platform's own answer — "run the current selection" — was a command this
|
|
900
|
+
* same rewrite then flagged again: X1 P140–P173 had 22 deployed walks the executor started, and
|
|
901
|
+
* not one moved the native proof counts (xr-molecule-flash-l1255 walked 73/73 green twice, at
|
|
902
|
+
* +18.2 and +22.9, and neither counted). A failure in a suite that keeps no trace at all is still
|
|
903
|
+
* readable: the platform's re-run note carries `--trace=on` for a run that left none.
|
|
904
|
+
*
|
|
890
905
|
* @param args - The command, the directory it starts in, and the backend's file read.
|
|
891
906
|
* @returns The command to run and the sentence to report, or the command unchanged.
|
|
892
907
|
*/
|
|
@@ -894,6 +909,7 @@ export declare function diagnosisTraceCommand(args: {
|
|
|
894
909
|
command: string;
|
|
895
910
|
cwd: string;
|
|
896
911
|
readFile: (path: string) => Promise<string>;
|
|
912
|
+
readDir?: ReadConfigDirectory;
|
|
897
913
|
}): Promise<DiagnosisTraceRewrite>;
|
|
898
914
|
export {};
|
|
899
915
|
//# sourceMappingURL=trace-artifacts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-artifacts.d.ts","sourceRoot":"","sources":["../src/trace-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;
|
|
1
|
+
{"version":3,"file":"trace-artifacts.d.ts","sourceRoot":"","sources":["../src/trace-artifacts.ts"],"names":[],"mappings":"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"}
|
package/dist/trace-artifacts.js
CHANGED
|
@@ -30,7 +30,8 @@
|
|
|
30
30
|
* @module
|
|
31
31
|
*/
|
|
32
32
|
import { locatedCommandSegments, statementArgumentEnd } from './command-position.js';
|
|
33
|
-
import {
|
|
33
|
+
import { codeWithModuleSpecifiers } from './source-code.js';
|
|
34
|
+
import { playwrightCommandTarget, suiteRunDirectory } from './suite-overlap.js';
|
|
34
35
|
import { isPlaywrightRunCommand, redactSecrets } from './utilities.js';
|
|
35
36
|
/** How many traces one read reports, newest first. */
|
|
36
37
|
export const MAX_TRACE_ARTIFACTS = 12;
|
|
@@ -4465,8 +4466,13 @@ const TRACE_SETTING = /trace:\s*(?:\{[^{}]*?mode:\s*)?['"]?(on-first-retry|on-al
|
|
|
4465
4466
|
* @returns True when the config records traces for failures.
|
|
4466
4467
|
*/
|
|
4467
4468
|
export function suiteRecordsTraces(configText) {
|
|
4468
|
-
const
|
|
4469
|
-
return
|
|
4469
|
+
const settings = traceSettings(configText);
|
|
4470
|
+
return settings.length > 0 && settings.every((m) => RECORDING_TRACE_MODES.includes(m[1] ?? ''));
|
|
4471
|
+
}
|
|
4472
|
+
/** Only trace keys in code can establish recording, never examples in comments or strings. */
|
|
4473
|
+
function traceSettings(text) {
|
|
4474
|
+
const code = codeWithModuleSpecifiers(text);
|
|
4475
|
+
return [...text.matchAll(TRACE_SETTING)].filter((m) => code.startsWith('trace:', m.index));
|
|
4470
4476
|
}
|
|
4471
4477
|
/** The trace modes that record only when a test is RETRIED (`on-first-retry`, `on-all-retries`). */
|
|
4472
4478
|
const RETRY_TRACE_MODES = ['on-first-retry', 'on-all-retries'];
|
|
@@ -4482,8 +4488,7 @@ const RETRY_TRACE_MODES = ['on-first-retry', 'on-all-retries'];
|
|
|
4482
4488
|
* @returns The mode as the config spells it, or null when it records no retry trace.
|
|
4483
4489
|
*/
|
|
4484
4490
|
function suiteTracesOnRetry(configText) {
|
|
4485
|
-
const
|
|
4486
|
-
for (const m of text.matchAll(TRACE_SETTING)) {
|
|
4491
|
+
for (const m of traceSettings(configText)) {
|
|
4487
4492
|
const mode = m[1] ?? '';
|
|
4488
4493
|
if (RETRY_TRACE_MODES.includes(mode))
|
|
4489
4494
|
return mode;
|
|
@@ -4499,7 +4504,25 @@ function suiteTracesOnRetry(configText) {
|
|
|
4499
4504
|
* @returns True when the run allows no retry.
|
|
4500
4505
|
*/
|
|
4501
4506
|
export function namesNoRetries(command) {
|
|
4502
|
-
return
|
|
4507
|
+
return playwrightOption(command, '--retries') === '0';
|
|
4508
|
+
}
|
|
4509
|
+
/** The last value a flag has in the runner's own argument list, never in another statement. */
|
|
4510
|
+
function playwrightOption(command, name) {
|
|
4511
|
+
const args = locatedCommandSegments(command).find(({ segment }) => segment?.program === 'playwright' && segment.args[0] === 'test')?.segment?.args ?? [];
|
|
4512
|
+
const unquote = (word) => word.replace(/^(['"])(.*)\1$/, '$2');
|
|
4513
|
+
let value = null;
|
|
4514
|
+
for (let i = 1; i < args.length; i++) {
|
|
4515
|
+
const word = unquote(args[i]);
|
|
4516
|
+
if (word === '--')
|
|
4517
|
+
break;
|
|
4518
|
+
if (word === name)
|
|
4519
|
+
value = unquote(args[++i] ?? '');
|
|
4520
|
+
else if (word.startsWith(name + '='))
|
|
4521
|
+
value = unquote(word.slice(name.length + 1));
|
|
4522
|
+
else if (/^(?:--config|-c|--grep|-g|--grep-invert|-G|--reporter|--project|--output|--timeout|--repeat-each|--browser|--trace|--retries|--workers|--global-timeout|--max-failures|--update-source-method)$/.test(word))
|
|
4523
|
+
i++;
|
|
4524
|
+
}
|
|
4525
|
+
return value;
|
|
4503
4526
|
}
|
|
4504
4527
|
/** The `--trace` flag this platform adds, and the only value it adds it with. */
|
|
4505
4528
|
export const DIAGNOSIS_TRACE_FLAG = '--trace=retain-on-failure';
|
|
@@ -4508,7 +4531,7 @@ export const DIAGNOSIS_TRACE_FLAG = '--trace=retain-on-failure';
|
|
|
4508
4531
|
* A run that names one is left exactly as the executor wrote it.
|
|
4509
4532
|
*/
|
|
4510
4533
|
function namesTraceMode(command) {
|
|
4511
|
-
return
|
|
4534
|
+
return playwrightOption(command, '--trace') !== null;
|
|
4512
4535
|
}
|
|
4513
4536
|
/**
|
|
4514
4537
|
* Where an option of the command's Playwright run belongs, or null when the shell parse cannot
|
|
@@ -4544,62 +4567,223 @@ function playwrightOptionOffset(command) {
|
|
|
4544
4567
|
}
|
|
4545
4568
|
return null;
|
|
4546
4569
|
}
|
|
4547
|
-
/**
|
|
4570
|
+
/** Default names in Playwright's own loader order. */
|
|
4548
4571
|
const CONFIG_NAMES = [
|
|
4549
4572
|
'playwright.config.ts',
|
|
4550
|
-
'playwright.config.mts',
|
|
4551
4573
|
'playwright.config.js',
|
|
4574
|
+
'playwright.config.mts',
|
|
4552
4575
|
'playwright.config.mjs',
|
|
4576
|
+
'playwright.config.cts',
|
|
4553
4577
|
'playwright.config.cjs',
|
|
4554
4578
|
];
|
|
4555
|
-
/**
|
|
4556
|
-
function
|
|
4579
|
+
/** Runtime imports only: comments, prose strings and type-only imports are inert. */
|
|
4580
|
+
function relativeImports(text) {
|
|
4581
|
+
const code = codeWithModuleSpecifiers(text);
|
|
4557
4582
|
const out = [];
|
|
4558
|
-
for (const m of
|
|
4559
|
-
const
|
|
4560
|
-
if (
|
|
4561
|
-
out.push(
|
|
4583
|
+
for (const m of code.matchAll(/\b(?:import|export)\s+(?!type\b)[^;'"`]*?\bfrom\s*['"](\.\.?\/[^'"\n]+)['"]|\b(?:require|import)\s*\(\s*['"](\.\.?\/[^'"\n]+)['"]\s*\)|\bimport\s*['"](\.\.?\/[^'"\n]+)['"]/g)) {
|
|
4584
|
+
const specifier = m[1] ?? m[2] ?? m[3];
|
|
4585
|
+
if (specifier && !out.includes(specifier))
|
|
4586
|
+
out.push(specifier);
|
|
4562
4587
|
}
|
|
4563
4588
|
return out;
|
|
4564
4589
|
}
|
|
4565
|
-
/**
|
|
4590
|
+
/** Only a spread or direct exported pass-through establishes imported settings statically. */
|
|
4591
|
+
function usesImportedSettings(text, specifier) {
|
|
4592
|
+
const code = codeWithModuleSpecifiers(text);
|
|
4593
|
+
const bindings = [];
|
|
4594
|
+
for (const m of code.matchAll(/\b(import|export)\s+(?!type\b)([^;'"`]*?)\s+from\s*(['"])([^'"\n]+)\3/g)) {
|
|
4595
|
+
if (m[4] !== specifier)
|
|
4596
|
+
continue;
|
|
4597
|
+
if (m[1] === 'export')
|
|
4598
|
+
return true;
|
|
4599
|
+
bindings.push(...(m[2].match(/[\w$]+/g) ?? []));
|
|
4600
|
+
}
|
|
4601
|
+
for (const m of code.matchAll(/\b(?:const|let|var)\s+([\w$]+)\s*=\s*\(?\s*(?:await\s+)?(?:require|import)\s*\(\s*(['"])([^'"\n]+)\2/g)) {
|
|
4602
|
+
if (m[3] === specifier)
|
|
4603
|
+
bindings.push(m[1]);
|
|
4604
|
+
}
|
|
4605
|
+
return bindings.some((name) => new RegExp(`(?:\\.\\.\\.\\s*|export\\s+default\\s+(?:defineConfig\\s*\\(\\s*)?|module\\.exports\\s*=\\s*)${name.replace(/[$]/g, '\\$')}\\b`).test(code));
|
|
4606
|
+
}
|
|
4607
|
+
/** Playwright's extension lookups, including NodeNext TypeScript fallbacks. */
|
|
4608
|
+
function moduleNames(target) {
|
|
4609
|
+
const replacements = {
|
|
4610
|
+
'.js': ['.jsx', '.ts', '.tsx'],
|
|
4611
|
+
'.jsx': ['.tsx'],
|
|
4612
|
+
'.cjs': ['.cts'],
|
|
4613
|
+
'.mjs': ['.mts'],
|
|
4614
|
+
'': ['.js', '.ts', '.jsx', '.tsx', '.cjs', '.mjs', '.cts', '.mts'],
|
|
4615
|
+
};
|
|
4616
|
+
const extension = /\.[cm]?[jt]sx?$/.exec(target)?.[0] ?? '';
|
|
4617
|
+
return [
|
|
4618
|
+
target,
|
|
4619
|
+
...(replacements[extension] ?? []).map((suffix) => `${extension ? target.slice(0, -extension.length) : target}${suffix}`),
|
|
4620
|
+
];
|
|
4621
|
+
}
|
|
4622
|
+
/** File-read budgets for config candidates and imported modules, respectively. */
|
|
4623
|
+
const CONFIG_READS = 6;
|
|
4624
|
+
const IMPORT_READS = 6;
|
|
4625
|
+
/** The directory part of an absolute path. */
|
|
4626
|
+
function directoryOf(path) {
|
|
4627
|
+
const at = path.lastIndexOf('/');
|
|
4628
|
+
return at <= 0 ? '/' : path.slice(0, at);
|
|
4629
|
+
}
|
|
4630
|
+
/** Resolve a literal path, clamping parent traversals at the filesystem root. */
|
|
4631
|
+
function normalizedPath(path) {
|
|
4632
|
+
const out = [];
|
|
4633
|
+
for (const part of path.split('/')) {
|
|
4634
|
+
if (!part || part === '.')
|
|
4635
|
+
continue;
|
|
4636
|
+
if (part === '..')
|
|
4637
|
+
out.pop();
|
|
4638
|
+
else
|
|
4639
|
+
out.push(part);
|
|
4640
|
+
}
|
|
4641
|
+
return `/${out.join('/')}`;
|
|
4642
|
+
}
|
|
4643
|
+
/** Join a path against its actual runner or importer directory. */
|
|
4566
4644
|
function under(base, path) {
|
|
4567
|
-
|
|
4568
|
-
return path;
|
|
4569
|
-
return `${base.replace(/\/+$/, '')}/${path.replace(/^\.\//, '')}`;
|
|
4645
|
+
return normalizedPath(path.startsWith('/') ? path : `${base}/${path}`);
|
|
4570
4646
|
}
|
|
4571
4647
|
/**
|
|
4572
|
-
*
|
|
4573
|
-
*
|
|
4574
|
-
*
|
|
4575
|
-
*
|
|
4576
|
-
*
|
|
4577
|
-
* config that records nothing — the caller's `--trace` flag is what makes a missing trace
|
|
4578
|
-
* impossible either way.
|
|
4579
|
-
*
|
|
4580
|
-
* @param command - The shell command.
|
|
4581
|
-
* @param cwd - The directory the command starts in.
|
|
4582
|
-
* @param readFile - The backend's file read.
|
|
4583
|
-
* @returns The config's text, or '' when none could be read.
|
|
4648
|
+
* Read the actual runner's config and its relative imports, two levels deep. Directory metadata
|
|
4649
|
+
* reuses the backend's readDir capability: absent extensions cost no file reads, and directory
|
|
4650
|
+
* imports can resolve their package main or index. Metadata reads are also capped at six.
|
|
4651
|
+
* Without metadata, inspect bounded file candidates.
|
|
4652
|
+
* No supplied source is executed. An unreadable or unresolved setting cannot establish tracing.
|
|
4584
4653
|
*/
|
|
4585
|
-
async function readRunConfig(command, cwd, readFile) {
|
|
4586
|
-
const
|
|
4587
|
-
|
|
4588
|
-
|
|
4589
|
-
const
|
|
4590
|
-
|
|
4591
|
-
|
|
4592
|
-
for (
|
|
4654
|
+
async function readRunConfig(command, cwd, readFile, readDir) {
|
|
4655
|
+
const base = suiteRunDirectory(command, cwd);
|
|
4656
|
+
if (base === null)
|
|
4657
|
+
return '';
|
|
4658
|
+
const args = locatedCommandSegments(command).find(({ segment }) => segment?.program === 'playwright' && segment.args[0] === 'test')?.segment?.args ?? [];
|
|
4659
|
+
const unquote = (s) => s.replace(/^(['"])(.*)\1$/, '$2');
|
|
4660
|
+
let explicit = null;
|
|
4661
|
+
for (let i = 1; i < args.length; i++) {
|
|
4662
|
+
const arg = unquote(args[i]);
|
|
4663
|
+
if (arg === '--')
|
|
4664
|
+
break;
|
|
4665
|
+
if (arg === '--config' || arg === '-c')
|
|
4666
|
+
explicit = unquote(args[++i] ?? '');
|
|
4667
|
+
else if (arg.startsWith('--config='))
|
|
4668
|
+
explicit = unquote(arg.slice('--config='.length));
|
|
4669
|
+
else if (/^-c.+/.test(arg))
|
|
4670
|
+
explicit = unquote(arg.slice(2));
|
|
4671
|
+
}
|
|
4672
|
+
const directories = new Map();
|
|
4673
|
+
const list = async (path) => {
|
|
4674
|
+
if (!directories.has(path)) {
|
|
4675
|
+
if (directories.size >= 6)
|
|
4676
|
+
return null;
|
|
4677
|
+
try {
|
|
4678
|
+
directories.set(path, readDir ? await readDir(path) : null);
|
|
4679
|
+
}
|
|
4680
|
+
catch (_error) {
|
|
4681
|
+
// Unavailable metadata leaves the bounded file-only fallback.
|
|
4682
|
+
directories.set(path, null);
|
|
4683
|
+
}
|
|
4684
|
+
}
|
|
4685
|
+
return directories.get(path) ?? null;
|
|
4686
|
+
};
|
|
4687
|
+
const seen = new Set();
|
|
4688
|
+
let configReads = 0, importReads = 0;
|
|
4689
|
+
const read = async (path, imported) => {
|
|
4690
|
+
path = normalizedPath(path);
|
|
4691
|
+
if (seen.has(path) || (imported ? importReads >= IMPORT_READS : configReads >= CONFIG_READS))
|
|
4692
|
+
return null;
|
|
4693
|
+
seen.add(path);
|
|
4694
|
+
if (imported)
|
|
4695
|
+
importReads++;
|
|
4696
|
+
else
|
|
4697
|
+
configReads++;
|
|
4593
4698
|
try {
|
|
4594
|
-
const text = await readFile(
|
|
4595
|
-
|
|
4596
|
-
return text;
|
|
4699
|
+
const text = await readFile(path);
|
|
4700
|
+
return text ? { path, text } : null;
|
|
4597
4701
|
}
|
|
4598
4702
|
catch (_error) {
|
|
4599
|
-
|
|
4703
|
+
// Best-effort diagnosis: unreadable source is no evidence that a trace will exist.
|
|
4704
|
+
return null;
|
|
4600
4705
|
}
|
|
4706
|
+
};
|
|
4707
|
+
const existing = async (names) => {
|
|
4708
|
+
const entries = await list(directoryOf(names[0]));
|
|
4709
|
+
return entries === null
|
|
4710
|
+
? names
|
|
4711
|
+
: names.filter((name) => entries.some((entry) => entry.type === 'file' && entry.name === name.slice(name.lastIndexOf('/') + 1)));
|
|
4712
|
+
};
|
|
4713
|
+
const configPath = explicit ? under(base, explicit) : base;
|
|
4714
|
+
const isConfigDirectory = !explicit ||
|
|
4715
|
+
configPath === '/' ||
|
|
4716
|
+
(await list(directoryOf(configPath)))?.some((entry) => entry.type === 'directory' &&
|
|
4717
|
+
entry.name === configPath.slice(configPath.lastIndexOf('/') + 1));
|
|
4718
|
+
const candidates = isConfigDirectory
|
|
4719
|
+
? CONFIG_NAMES.map((name) => under(configPath, name))
|
|
4720
|
+
: [configPath];
|
|
4721
|
+
let found = null;
|
|
4722
|
+
for (const candidate of isConfigDirectory ? await existing(candidates) : candidates) {
|
|
4723
|
+
found = await read(candidate, false);
|
|
4724
|
+
if (found)
|
|
4725
|
+
break;
|
|
4601
4726
|
}
|
|
4602
|
-
|
|
4727
|
+
if (!found)
|
|
4728
|
+
return '';
|
|
4729
|
+
const resolve = async (target, depth = 0) => {
|
|
4730
|
+
for (const name of await existing(moduleNames(target))) {
|
|
4731
|
+
const file = await read(name, true);
|
|
4732
|
+
if (file)
|
|
4733
|
+
return file;
|
|
4734
|
+
}
|
|
4735
|
+
const entries = readDir ? await list(target) : null;
|
|
4736
|
+
if (!entries || depth > 1)
|
|
4737
|
+
return null;
|
|
4738
|
+
if (entries.some((entry) => entry.name === 'package.json' && entry.type === 'file')) {
|
|
4739
|
+
const metadata = await read(under(target, 'package.json'), true);
|
|
4740
|
+
let main;
|
|
4741
|
+
try {
|
|
4742
|
+
main = metadata ? JSON.parse(metadata.text).main : null;
|
|
4743
|
+
}
|
|
4744
|
+
catch (_error) {
|
|
4745
|
+
// Invalid package metadata cannot establish inherited tracing.
|
|
4746
|
+
return null;
|
|
4747
|
+
}
|
|
4748
|
+
if (typeof main === 'string' && main && under(target, main) !== target) {
|
|
4749
|
+
const file = await resolve(under(target, main), depth + 1);
|
|
4750
|
+
if (file)
|
|
4751
|
+
return file;
|
|
4752
|
+
}
|
|
4753
|
+
}
|
|
4754
|
+
for (const name of await existing(moduleNames(under(target, 'index')))) {
|
|
4755
|
+
const file = await read(name, true);
|
|
4756
|
+
if (file)
|
|
4757
|
+
return file;
|
|
4758
|
+
}
|
|
4759
|
+
return null;
|
|
4760
|
+
};
|
|
4761
|
+
const imports = new Map();
|
|
4762
|
+
let level = [found];
|
|
4763
|
+
for (let depth = 0; depth < 2 && level.length; depth++) {
|
|
4764
|
+
const next = [];
|
|
4765
|
+
for (const file of level) {
|
|
4766
|
+
for (const specifier of relativeImports(file.text)) {
|
|
4767
|
+
const imported = await resolve(under(directoryOf(file.path), specifier));
|
|
4768
|
+
if (!imported)
|
|
4769
|
+
continue;
|
|
4770
|
+
if (usesImportedSettings(file.text, specifier)) {
|
|
4771
|
+
const children = imports.get(file.path) ?? [];
|
|
4772
|
+
children.push(imported);
|
|
4773
|
+
imports.set(file.path, children);
|
|
4774
|
+
}
|
|
4775
|
+
next.push(imported);
|
|
4776
|
+
}
|
|
4777
|
+
}
|
|
4778
|
+
level = next;
|
|
4779
|
+
}
|
|
4780
|
+
const effective = (file) => {
|
|
4781
|
+
// Each wrapper's explicit trace wins over the base it spreads, at every import level.
|
|
4782
|
+
if (traceSettings(file.text).length)
|
|
4783
|
+
return file.text;
|
|
4784
|
+
return [file.text, ...(imports.get(file.path) ?? []).map(effective)].join('\n');
|
|
4785
|
+
};
|
|
4786
|
+
return effective(found);
|
|
4603
4787
|
}
|
|
4604
4788
|
/**
|
|
4605
4789
|
* The command a Playwright run needs to leave a readable trace behind, when the suite's config
|
|
@@ -4628,6 +4812,16 @@ async function readRunConfig(command, cwd, readFile) {
|
|
|
4628
4812
|
* `--retries=0` (`@molecule/api-ai-tools` `streamingBackgroundCommand`), so its retry trace would
|
|
4629
4813
|
* never happen. A run that pins `--retries=0` itself is in the same position, whatever its target.
|
|
4630
4814
|
*
|
|
4815
|
+
* A proof-capable run is left alone WHATEVER its config traces. `--trace` is a per-run override of
|
|
4816
|
+
* the suite's own `use.trace` (Playwright merges the CLI's `use` into every project's), and a test
|
|
4817
|
+
* record carries the project settings it ran under: a run with the flag is not the suite's own
|
|
4818
|
+
* measurement, so it can never count as deployed proof. Added to a deployed walk, the flag made the
|
|
4819
|
+
* walk unprovable, and the platform's own answer — "run the current selection" — was a command this
|
|
4820
|
+
* same rewrite then flagged again: X1 P140–P173 had 22 deployed walks the executor started, and
|
|
4821
|
+
* not one moved the native proof counts (xr-molecule-flash-l1255 walked 73/73 green twice, at
|
|
4822
|
+
* +18.2 and +22.9, and neither counted). A failure in a suite that keeps no trace at all is still
|
|
4823
|
+
* readable: the platform's re-run note carries `--trace=on` for a run that left none.
|
|
4824
|
+
*
|
|
4631
4825
|
* @param args - The command, the directory it starts in, and the backend's file read.
|
|
4632
4826
|
* @returns The command to run and the sentence to report, or the command unchanged.
|
|
4633
4827
|
*/
|
|
@@ -4638,16 +4832,15 @@ export async function diagnosisTraceCommand(args) {
|
|
|
4638
4832
|
// Only a Playwright run leaves a trace to read.
|
|
4639
4833
|
if (!isPlaywrightRunCommand(args.command))
|
|
4640
4834
|
return unchanged;
|
|
4641
|
-
|
|
4835
|
+
// A proof-capable run keeps the suite's own tracing and retries: the graded measurement is the
|
|
4836
|
+
// suite's own settings, and a flag here would make the run's records unprovable (see above). No
|
|
4837
|
+
// config needs reading to know that.
|
|
4838
|
+
if (playwrightCommandTarget(args.command) !== 'local' && !namesNoRetries(args.command))
|
|
4839
|
+
return unchanged;
|
|
4840
|
+
const config = await readRunConfig(args.command, args.cwd, args.readFile, args.readDir);
|
|
4642
4841
|
if (suiteRecordsTraces(config))
|
|
4643
4842
|
return unchanged;
|
|
4644
|
-
// A proof-capable run keeps the suite's own tracing and retries: its retry trace is the artifact
|
|
4645
|
-
// a failure is read from, and recording every action would change what the measurement says.
|
|
4646
4843
|
const retryTrace = suiteTracesOnRetry(config);
|
|
4647
|
-
if (retryTrace !== null &&
|
|
4648
|
-
suiteCommandTarget(args.command) !== 'local' &&
|
|
4649
|
-
!namesNoRetries(args.command))
|
|
4650
|
-
return unchanged;
|
|
4651
4844
|
// The flag goes into the Playwright step's own argument list, at the end of it — an option of
|
|
4652
4845
|
// the run itself, whatever the command opens with, whatever pipes or redirects its output, and
|
|
4653
4846
|
// before the `)` that may close a subshell around it. Appended at the end of the whole command
|
package/dist/utilities.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"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"}
|
package/dist/utilities.js
CHANGED
|
@@ -9,7 +9,7 @@ import { commandSegments, executedCommands, locatedCommandSegments, statementArg
|
|
|
9
9
|
import { classifyRunFailure } from './failure-kind.js';
|
|
10
10
|
import { commandRunsNoTests } from './no-test-run.js';
|
|
11
11
|
import { PLAYWRIGHT_REPORT_ENV } from './playwright-report.js';
|
|
12
|
-
import { isDiagnosisRun, resolvePlaywrightSelectionPaths, scopedRerunCommand, suiteCommandTarget, suiteRunInTheWay, withoutHeredocs, withSuiteConfig, } from './suite-overlap.js';
|
|
12
|
+
import { isDiagnosisRun, playwrightCommandTarget, resolvePlaywrightSelectionPaths, scopedRerunCommand, suiteCommandTarget, suiteRunInTheWay, withoutHeredocs, withSuiteConfig, } from './suite-overlap.js';
|
|
13
13
|
/**
|
|
14
14
|
* Shell-safe quoting using single quotes. Unlike JSON.stringify (double quotes),
|
|
15
15
|
* single-quoted strings prevent command substitution ($(), backticks) and variable expansion.
|
|
@@ -780,27 +780,13 @@ export function streamingBackgroundCommand(command, context, reportPath) {
|
|
|
780
780
|
out = `${out.slice(0, at)} ${flag}${out.slice(at)}`;
|
|
781
781
|
return true;
|
|
782
782
|
};
|
|
783
|
-
//
|
|
784
|
-
//
|
|
785
|
-
//
|
|
786
|
-
// local — its env names `localhost`/`127.0.0.1`/`0.0.0.0`, or names no URL at all, as the
|
|
787
|
-
// wrapper config's default does — is not the proof run either and walks them once too:
|
|
788
|
-
// xr-molecule-flash-m155 (+11:34) spent 10 minutes on its first local whole run, and the
|
|
789
|
-
// suite's `retries: 1` walked each of its 68 failures a second time (0 flaky) for nothing.
|
|
790
|
-
// The suite's retries are kept only for a run that names a non-local URL — the deployed proof
|
|
791
|
-
// (xr-molecule-flash-m89), where they absorb a network blip. Which runs are diagnoses is
|
|
792
|
-
// {@link isDiagnosisRun}'s answer and nobody else's: the platform's notes ask the same
|
|
793
|
-
// function, so a run cannot be a diagnosis to one of them and the whole suite to the other.
|
|
794
|
-
// Which targets are local is {@link suiteCommandTarget}'s answer.
|
|
795
|
-
//
|
|
796
|
-
// A run the PLATFORM composed and launched as the graded proof keeps the suite's retries for
|
|
797
|
-
// the selection it composed — the failures a redeploy re-runs, named as files and `file:line`
|
|
798
|
-
// ({@link isDiagnosisRun} reads the host mark). It does NOT excuse a cap, a title filter or a
|
|
799
|
-
// last-failed set: those read as a diagnosis on that same reading, so the mark cannot turn a
|
|
800
|
-
// walk of part of the suite into the graded measurement. A LOCAL target is never the graded
|
|
801
|
-
// deployed run either, whatever launched it.
|
|
783
|
+
// Local walks diagnose each failure once. Deployed walks retain the suite's retries even when
|
|
784
|
+
// narrowed or capped: a native test record hashes retries, so changing them would prevent proof
|
|
785
|
+
// credit. Explicit executor flags remain the executor's choice.
|
|
802
786
|
const diagnosis = isDiagnosisRun(lastStep, context);
|
|
803
|
-
|
|
787
|
+
// A narrowed deployed selection can count as native proof too. Its retries must remain the
|
|
788
|
+
// suite's own; only local diagnosis runs receive an automatic retry override.
|
|
789
|
+
const localTarget = playwrightCommandTarget(out, true) === 'local';
|
|
804
790
|
// The last step's reporters: one printer, and it is `list`. Every branch below only ever moves
|
|
805
791
|
// the command TO that shape — a reporter set is never left with two printers in it.
|
|
806
792
|
const reporters = finalPlaywrightRun ? lastReporterFlag(lastStep) : null;
|
|
@@ -906,7 +892,7 @@ export function streamingBackgroundCommand(command, context, reportPath) {
|
|
|
906
892
|
'summary at the end — so a run that is still walking already says what its failures are, ' +
|
|
907
893
|
'and you need not wait for it to end to start on them.');
|
|
908
894
|
}
|
|
909
|
-
if (finalPlaywrightRun &&
|
|
895
|
+
if (finalPlaywrightRun && localTarget && !/--retries\b/.test(lastStep)) {
|
|
910
896
|
// The reason named is the one that fired: a narrowed diagnosis against a DEPLOYED URL is not a
|
|
911
897
|
// local run, and calling it one (xr-molecule-flash-m170's note did) reads as the platform having
|
|
912
898
|
// misread the target.
|