@molecule/api-ai-tools 1.14.2 → 1.14.4
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 +111 -22
- package/dist/suite-overlap.d.ts +59 -4
- package/dist/suite-overlap.d.ts.map +1 -1
- package/dist/suite-overlap.js +99 -12
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +30 -5
- package/dist/trace-artifacts.d.ts +30 -11
- package/dist/trace-artifacts.d.ts.map +1 -1
- package/dist/trace-artifacts.js +69 -15
- package/dist/utilities.d.ts +40 -6
- package/dist/utilities.d.ts.map +1 -1
- package/dist/utilities.js +145 -9
- 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-10-
|
|
6
|
+
Generated: 2026-10-25T03:47:31.740Z
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
# @molecule/api-ai-tools
|
|
@@ -550,6 +550,21 @@ interface DiagnosisRunContext {
|
|
|
550
550
|
* `excludedTestTitles` gives the rest of the platform.
|
|
551
551
|
*/
|
|
552
552
|
approvedExclusions?: readonly string[]
|
|
553
|
+
/**
|
|
554
|
+
* Whether the caller is STARTING this command as the graded proof itself — the run the app is
|
|
555
|
+
* judged by, composed and launched by the platform — rather than the executor's own diagnosis.
|
|
556
|
+
*
|
|
557
|
+
* A redeploy's proof is the targeted set the last walk left: its command names the failures it
|
|
558
|
+
* re-runs (`file:line`, and the specs they live in), so it reads as a narrowed run. That
|
|
559
|
+
* selection is the proof's own scope, so the graded run keeps the suite's retries instead of
|
|
560
|
+
* walking each failure once the way a diagnosis does. Only the selection is excused — a failed
|
|
561
|
+
* cap, a title filter, a last-failed set and a local targeted selection stay diagnoses whatever the caller
|
|
562
|
+
* says here — and only a command the PLATFORM composes and launches is ever the proof.
|
|
563
|
+
*
|
|
564
|
+
* Host code marks the launch input with {@link PLATFORM_PROOF} rather than a JSON key: tool
|
|
565
|
+
* input a model sends is JSON, and JSON has no symbol keys, so no model call can claim this.
|
|
566
|
+
*/
|
|
567
|
+
platformProof?: boolean
|
|
553
568
|
}
|
|
554
569
|
```
|
|
555
570
|
|
|
@@ -2726,13 +2741,15 @@ function withSuiteConfig(command: string, config: string | null | undefined): st
|
|
|
2726
2741
|
|
|
2727
2742
|
**Returns:** The command with the flag, or the command unchanged.
|
|
2728
2743
|
|
|
2729
|
-
#### `scopedRerunCommand(command, locations, excluded, config, cwd, env)`
|
|
2744
|
+
#### `scopedRerunCommand(command, locations, excluded, config, cwd, env, options)`
|
|
2730
2745
|
|
|
2731
2746
|
The whole-suite command made scoped to the tests it should re-run instead: the same
|
|
2732
2747
|
invocation — same launcher, same settings — with the named `file:line`s in place of every
|
|
2733
2748
|
positional selection the run carried (a spec file, a suite directory or a regex filter),
|
|
2734
2749
|
`--last-failed` dropped (it re-runs the tests that never ran too, X1 flash-m60) and
|
|
2735
|
-
`--retries=0` set (a re-run of a known failure does not need to pay for retries)
|
|
2750
|
+
`--retries=0` set (a re-run of a known failure does not need to pay for retries) — except the
|
|
2751
|
+
re-run of a run against a DEPLOYED URL, which keeps the suite's own retries and tracing
|
|
2752
|
+
(`options.suiteSettings`).
|
|
2736
2753
|
|
|
2737
2754
|
The re-run keeps the run's `> <file>` redirect only in the sense of keeping its OUTPUT there:
|
|
2738
2755
|
the target is rewritten to a fresh sibling ({@link redirectRunnerOutputsToFreshFiles}), so a
|
|
@@ -2754,6 +2771,7 @@ function scopedRerunCommand(
|
|
|
2754
2771
|
config?: string | null,
|
|
2755
2772
|
cwd?: string | null,
|
|
2756
2773
|
env?: readonly RunEnvSetting[],
|
|
2774
|
+
options?: { suiteSettings?: boolean },
|
|
2757
2775
|
): string
|
|
2758
2776
|
```
|
|
2759
2777
|
|
|
@@ -2763,6 +2781,7 @@ function scopedRerunCommand(
|
|
|
2763
2781
|
- `config` — The config the run loaded, when the caller knows it; added when the command does not name one.
|
|
2764
2782
|
- `cwd` — The directory `exec_command` was given, when it was; the base a location is resolved against when the command does not `cd` anywhere.
|
|
2765
2783
|
- `env` — The settings the REQUEST requires of the suite and this run left out ({@link withRunEnv}): the re-run carries them, so a re-run of a run measured in the wrong mode is not measured in that mode again (xr-molecule-flash-m182 +12:06).
|
|
2784
|
+
- `options` — `suiteSettings` for the re-run of a run against a DEPLOYED URL: it keeps the suite's own retries and tracing instead of the diagnosis ones. The graded measurement is the suite's own settings, and a retry is what leaves a failing test's trace there; the platform's `--retries=0` and its `--trace=retain-on-failure` are both a stricter measurement than the one that was graded, and on X1 xr-molecule-flash-h15 the recording alone turned three budget-bound deployed tests into timeouts.
|
|
2766
2785
|
|
|
2767
2786
|
**Returns:** The scoped command, or the command unchanged when it runs no Playwright suite.
|
|
2768
2787
|
|
|
@@ -2806,6 +2825,18 @@ function suiteRunInTheWay(candidate: { target: string }, inFlight: readonly T[])
|
|
|
2806
2825
|
|
|
2807
2826
|
**Returns:** The first run in the way, or null.
|
|
2808
2827
|
|
|
2828
|
+
#### `isPlatformProofLaunch(input)`
|
|
2829
|
+
|
|
2830
|
+
Whether an `exec_command` input object carries the host's {@link PLATFORM_PROOF} mark.
|
|
2831
|
+
|
|
2832
|
+
```typescript
|
|
2833
|
+
function isPlatformProofLaunch(input: unknown): boolean
|
|
2834
|
+
```
|
|
2835
|
+
|
|
2836
|
+
- `input` — The tool input as the handler received it.
|
|
2837
|
+
|
|
2838
|
+
**Returns:** True only for a launch host code marked; false for anything a model sent.
|
|
2839
|
+
|
|
2809
2840
|
#### `isDiagnosisRun(command, context)`
|
|
2810
2841
|
|
|
2811
2842
|
Whether a command walks a PART of a suite instead of all of it: a cap that stops it at a failure
|
|
@@ -2839,9 +2870,9 @@ function isDiagnosisRun(command: string, context?: DiagnosisRunContext): boolean
|
|
|
2839
2870
|
```
|
|
2840
2871
|
|
|
2841
2872
|
- `command` — The command as the executor sent it.
|
|
2842
|
-
- `context` — The request's approved exclusions, when the caller knows them.
|
|
2873
|
+
- `context` — The request's approved exclusions and whether this command IS the graded proof, when the caller knows them. A whole local walk still covers the whole suite; the launcher's separate local-target policy disables its retries. This predicate classifies narrowed selections and their proof purpose.
|
|
2843
2874
|
|
|
2844
|
-
**Returns:** True when the run is a diagnosis or a re-run, not the whole suite.
|
|
2875
|
+
**Returns:** True when the run is a diagnosis or a re-run, not the whole suite or a deployed proof selection.
|
|
2845
2876
|
|
|
2846
2877
|
#### `discoverSkills(backend)`
|
|
2847
2878
|
|
|
@@ -3275,23 +3306,42 @@ function suiteRecordsTraces(configText: string): boolean
|
|
|
3275
3306
|
|
|
3276
3307
|
**Returns:** True when the config records traces for failures.
|
|
3277
3308
|
|
|
3309
|
+
#### `namesNoRetries(command)`
|
|
3310
|
+
|
|
3311
|
+
Whether the run itself pins `--retries=0` (either spelling): a run that cannot retry records no
|
|
3312
|
+
retry trace, so it still needs one recorded for it. A running wait reads the same proof to know
|
|
3313
|
+
a first failure's body is already final (`wait_for_task`'s diagnostic yield).
|
|
3314
|
+
|
|
3315
|
+
```typescript
|
|
3316
|
+
function namesNoRetries(command: string): boolean
|
|
3317
|
+
```
|
|
3318
|
+
|
|
3319
|
+
- `command` — The shell command.
|
|
3320
|
+
|
|
3321
|
+
**Returns:** True when the run allows no retry.
|
|
3322
|
+
|
|
3278
3323
|
#### `diagnosisTraceCommand(args)`
|
|
3279
3324
|
|
|
3280
3325
|
The command a Playwright run needs to leave a readable trace behind, when the suite's config
|
|
3281
|
-
would record none.
|
|
3326
|
+
would record none — except a run that can serve as proof, whose own settings are left alone.
|
|
3282
3327
|
|
|
3283
3328
|
The failing tests' requests are only readable if the run wrote them down (see the module doc),
|
|
3284
3329
|
and the config is where the decision about that lives — the platform does not edit the suite's
|
|
3285
|
-
config, so it passes the flag instead, on
|
|
3286
|
-
|
|
3287
|
-
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
|
|
3330
|
+
config, so it passes the flag instead, on a Playwright run that starts tests, does not already
|
|
3331
|
+
decide its own `--trace`, and whose config keeps no trace for its failures.
|
|
3332
|
+
|
|
3333
|
+
A run that can serve as PROOF is the exception: the graded measurement is the suite's own
|
|
3334
|
+
settings, so it keeps its own tracing and retries. That was measured, not assumed — on one
|
|
3335
|
+
sandbox in X1 xr-molecule-flash-h15 (+46:53 → +49:30) the same build ran a three-test deployed
|
|
3336
|
+
subset 3/3 timed out under this flag (17.6–17.9 s against a 15 s per-test budget) and the whole
|
|
3337
|
+
file passed 14/14 without it (10.9–12.1 s). `retain-on-failure` RETAINS only a failing test's
|
|
3338
|
+
trace (Playwright's `_shouldAbandonTrace` unlinks a passing test's), but it RECORDS every
|
|
3339
|
+
action of every test, and for a test near its per-test budget that recording is the difference
|
|
3340
|
+
between passing and timing out. m163 (+24:58) is the failure this flag was added for: its
|
|
3341
|
+
deployed proof run left only an `error-context.md` because the suite traces
|
|
3342
|
+
`on-first-retry` and the run had no retries. That need is met without the flag — the graded
|
|
3343
|
+
|
|
3344
|
+
_(description truncated — read the full text in `node_modules/@molecule/api-ai-tools/dist/trace-artifacts.d.ts`.)_
|
|
3295
3345
|
|
|
3296
3346
|
```typescript
|
|
3297
3347
|
function diagnosisTraceCommand(args: {
|
|
@@ -3548,7 +3598,7 @@ function streamingBackgroundCommand(
|
|
|
3548
3598
|
```
|
|
3549
3599
|
|
|
3550
3600
|
- `command` — The command as the executor sent it.
|
|
3551
|
-
- `context` — What the caller knows beyond the command: the tests the person's request excludes by name ({@link DiagnosisRunContext}). A `--grep-invert` of exactly those is the request's own scope, not a diagnosis, so it keeps the suite's retries on a deployed proof (xr-molecule-flash-m170 +33:16).
|
|
3601
|
+
- `context` — What the caller knows beyond the command: the tests the person's request excludes by name, and whether this command IS the platform's graded proof ({@link DiagnosisRunContext}). A `--grep-invert` of exactly those exclusions is the request's own scope, not a diagnosis, so it keeps the suite's retries on a deployed proof (xr-molecule-flash-m170 +33:16) — and a proof the platform itself composed and launched keeps them whatever its scope, targeted set included (xr-molecule-flash-l48 +26:35).
|
|
3552
3602
|
- `reportPath` — Where this run should write Playwright's standard `json` report, when the caller keeps one ({@link ./playwright-report.js}). The reporter is added to the run's own reporter set, never in place of one, and its output goes to that file through `PLAYWRIGHT_JSON_OUTPUT_FILE` — so the log, the executors' own reporters and every verdict stay exactly as they are. Omitted, or a run whose reporter set is not this function's to place (already names `json`, sets the variable itself, or whose runner cannot be located), leaves the command untouched and the result's `reportPath` unset.
|
|
3553
3603
|
|
|
3554
3604
|
**Returns:** The command to run, one sentence per change made (empty when none), and the report path when one was actually wired — or `error` when the command starts the suite more than once.
|
|
@@ -3959,7 +4009,7 @@ function findPathArgs(pattern: string): string
|
|
|
3959
4009
|
|
|
3960
4010
|
**Returns:** One or more `-path '…'` alternatives, ORed inside parens when there is more than one.
|
|
3961
4011
|
|
|
3962
|
-
#### `literalDirPrefix(pattern)`
|
|
4012
|
+
#### `literalDirPrefix(pattern, root)`
|
|
3963
4013
|
|
|
3964
4014
|
The directory a GLOB pattern spells out, when it spells one out: everything
|
|
3965
4015
|
before the pattern's first glob character, trimmed back to the last `/`.
|
|
@@ -3983,11 +4033,17 @@ pattern is not anchored to one depth). Rooting those at
|
|
|
3983
4033
|
more segments (`@molecule/api-resource-user/dist`), which is the shape that
|
|
3984
4034
|
is a directory rather than a directory name.
|
|
3985
4035
|
|
|
4036
|
+
An npm SCOPE as the first segment, under a `node_modules` root, is the one
|
|
4037
|
+
exception that parameter `root` enables: npm installs a scope only directly
|
|
4038
|
+
|
|
4039
|
+
_(description truncated — read the full text in `node_modules/@molecule/api-ai-tools/dist/utilities.d.ts`.)_
|
|
4040
|
+
|
|
3986
4041
|
```typescript
|
|
3987
|
-
function literalDirPrefix(pattern: string): string | null
|
|
4042
|
+
function literalDirPrefix(pattern: string, root?: string): string | null
|
|
3988
4043
|
```
|
|
3989
4044
|
|
|
3990
4045
|
- `pattern` — A pattern already accepted by {@link isValidGlob}.
|
|
4046
|
+
- `root` — The resolved search root, when one is already known; a scope-first prefix is returned only when this ends in a `node_modules` segment (and the pattern has more path after the scope).
|
|
3991
4047
|
|
|
3992
4048
|
**Returns:** The literal directory prefix, without a trailing slash, or null when the pattern has no glob character, no `/`, or only a bare name before one.
|
|
3993
4049
|
|
|
@@ -4330,7 +4386,7 @@ function repeatingFailure(log: string): RepeatingFailure | null
|
|
|
4330
4386
|
|
|
4331
4387
|
**Returns:** The repeating cause, or null when no signature has {@link REPEATING_FAILURE_MIN} distinct tests behind it.
|
|
4332
4388
|
|
|
4333
|
-
#### `logShowsInlineFailureBodies(log)`
|
|
4389
|
+
#### `logShowsInlineFailureBodies(log, excluded, options)`
|
|
4334
4390
|
|
|
4335
4391
|
Whether the log read so far carries a failure's own body under a `✘` row — the evidence that a
|
|
4336
4392
|
run prints each failure's error as that test fails ({@link PLAYWRIGHT_FAILURES_INLINE_ENV}).
|
|
@@ -4347,13 +4403,27 @@ running wait must not be told "as it fails" about a log whose bodies only appear
|
|
|
4347
4403
|
During a wait the run has not ended (the exit file is read first), so a block beside a `✘` row
|
|
4348
4404
|
is one the reporter printed inline.
|
|
4349
4405
|
|
|
4406
|
+
A body for a test the request EXCLUDES is not that evidence: its failure does not count for
|
|
4407
|
+
this request ({@link matchingExcludedTitles}), so a wait that handed it over as the diagnostic
|
|
4408
|
+
spent a model round trip and 8 k of partial log on a test the same result says to ignore —
|
|
4409
|
+
exactly what xr-molecule-flash-h13 (+19:06) did twice while the platform's proof was still
|
|
4410
|
+
walking.
|
|
4411
|
+
|
|
4412
|
+
With `finalOnly`, only a failure the run has FINISHED with counts; a pending retry waits.
|
|
4413
|
+
|
|
4350
4414
|
```typescript
|
|
4351
|
-
function logShowsInlineFailureBodies(
|
|
4415
|
+
function logShowsInlineFailureBodies(
|
|
4416
|
+
log: string,
|
|
4417
|
+
excluded?: readonly string[],
|
|
4418
|
+
options?: { finalOnly?: boolean; noRetries?: boolean },
|
|
4419
|
+
): boolean
|
|
4352
4420
|
```
|
|
4353
4421
|
|
|
4354
4422
|
- `log` — A log, or the slice of one a wait reads.
|
|
4423
|
+
- `excluded` — The test titles the request carves out, if the caller knows them.
|
|
4424
|
+
- `options` — `finalOnly` reads only a failure the run has finished with; `noRetries` says the command proves the run cannot retry (`--retries=0`), so its first failure is final.
|
|
4355
4425
|
|
|
4356
|
-
**Returns:** True when a `✘` row's own test has a failure body under it.
|
|
4426
|
+
**Returns:** True when a `✘` row's own test, outside the request's exclusions, has a failure body under it — and, with `finalOnly`, that failure is final in the log read so far.
|
|
4357
4427
|
|
|
4358
4428
|
#### `specFilesSelected(command)`
|
|
4359
4429
|
|
|
@@ -4602,6 +4672,10 @@ The command that re-runs the tests at `locations` the way the run IN FLIGHT ran
|
|
|
4602
4672
|
invocation, in the same directory, narrowed to those tests — or null when the running command
|
|
4603
4673
|
is not a Playwright run this can narrow.
|
|
4604
4674
|
|
|
4675
|
+
A run against a DEPLOYED URL keeps the suite's own retries and tracing in its re-run
|
|
4676
|
+
({@link scopedRerunCommand} `suiteSettings`): the deployed measurement is the one the deploy is
|
|
4677
|
+
graded on, and neither the platform's `--retries=0` nor its recording `--trace` belongs on it.
|
|
4678
|
+
|
|
4605
4679
|
The `locations` are the paths the run's own log printed, which are relative to the directory
|
|
4606
4680
|
that run started in, so the composer resolves them there ({@link scopedRerunCommand}): the
|
|
4607
4681
|
command names that directory unless it already changes into one of its own, because the
|
|
@@ -4870,6 +4944,21 @@ short settle (`sleep 2; curl …`) is a legitimate thing to run.
|
|
|
4870
4944
|
const MIN_PEEK_SLEEP_SECONDS: 5
|
|
4871
4945
|
```
|
|
4872
4946
|
|
|
4947
|
+
#### `PLATFORM_PROOF`
|
|
4948
|
+
|
|
4949
|
+
The key host code sets on an `exec_command` input object to mark the launch as the platform's
|
|
4950
|
+
own graded proof ({@link DiagnosisRunContext} `platformProof`).
|
|
4951
|
+
|
|
4952
|
+
A SYMBOL, deliberately: a model's tool input is JSON, and JSON cannot carry a symbol key, so a
|
|
4953
|
+
model can never forge this mark — a `platform_proof` key it writes into its own JSON is just an
|
|
4954
|
+
unknown input key, and the handler ignores it. Object spreads through a consumer's wrappers, and
|
|
4955
|
+
this package's own input normalization, keep symbol-keyed properties, so the host's intent
|
|
4956
|
+
survives the real launch path.
|
|
4957
|
+
|
|
4958
|
+
```typescript
|
|
4959
|
+
const PLATFORM_PROOF: typeof PLATFORM_PROOF
|
|
4960
|
+
```
|
|
4961
|
+
|
|
4873
4962
|
#### `SPLIT_WORK_ADVICE`
|
|
4874
4963
|
|
|
4875
4964
|
The closing advice on an over-budget message for a command that is not a test
|
package/dist/suite-overlap.d.ts
CHANGED
|
@@ -82,7 +82,9 @@ export declare function withSuiteConfig(command: string, config: string | null |
|
|
|
82
82
|
* invocation — same launcher, same settings — with the named `file:line`s in place of every
|
|
83
83
|
* positional selection the run carried (a spec file, a suite directory or a regex filter),
|
|
84
84
|
* `--last-failed` dropped (it re-runs the tests that never ran too, X1 flash-m60) and
|
|
85
|
-
* `--retries=0` set (a re-run of a known failure does not need to pay for retries)
|
|
85
|
+
* `--retries=0` set (a re-run of a known failure does not need to pay for retries) — except the
|
|
86
|
+
* re-run of a run against a DEPLOYED URL, which keeps the suite's own retries and tracing
|
|
87
|
+
* (`options.suiteSettings`).
|
|
86
88
|
*
|
|
87
89
|
* The re-run keeps the run's `> <file>` redirect only in the sense of keeping its OUTPUT there:
|
|
88
90
|
* the target is rewritten to a fresh sibling ({@link redirectRunnerOutputsToFreshFiles}), so a
|
|
@@ -112,9 +114,17 @@ export declare function withSuiteConfig(command: string, config: string | null |
|
|
|
112
114
|
* @param env - The settings the REQUEST requires of the suite and this run left out
|
|
113
115
|
* ({@link withRunEnv}): the re-run carries them, so a re-run of a run measured in the wrong
|
|
114
116
|
* mode is not measured in that mode again (xr-molecule-flash-m182 +12:06).
|
|
117
|
+
* @param options - `suiteSettings` for the re-run of a run against a DEPLOYED URL: it keeps the
|
|
118
|
+
* suite's own retries and tracing instead of the diagnosis ones. The graded measurement is the
|
|
119
|
+
* suite's own settings, and a retry is what leaves a failing test's trace there; the platform's
|
|
120
|
+
* `--retries=0` and its `--trace=retain-on-failure` are both a stricter measurement than the
|
|
121
|
+
* one that was graded, and on X1 xr-molecule-flash-h15 the recording alone turned three
|
|
122
|
+
* budget-bound deployed tests into timeouts.
|
|
115
123
|
* @returns The scoped command, or the command unchanged when it runs no Playwright suite.
|
|
116
124
|
*/
|
|
117
|
-
export declare function scopedRerunCommand(command: string, locations: readonly string[], excluded?: readonly string[], config?: string | null, cwd?: string | null, env?: readonly RunEnvSetting[]
|
|
125
|
+
export declare function scopedRerunCommand(command: string, locations: readonly string[], excluded?: readonly string[], config?: string | null, cwd?: string | null, env?: readonly RunEnvSetting[], options?: {
|
|
126
|
+
suiteSettings?: boolean;
|
|
127
|
+
}): string;
|
|
118
128
|
/** One `NAME=value` the request requires of a suite run. */
|
|
119
129
|
export interface RunEnvSetting {
|
|
120
130
|
name: string;
|
|
@@ -181,7 +191,40 @@ export interface DiagnosisRunContext {
|
|
|
181
191
|
* `excludedTestTitles` gives the rest of the platform.
|
|
182
192
|
*/
|
|
183
193
|
approvedExclusions?: readonly string[];
|
|
194
|
+
/**
|
|
195
|
+
* Whether the caller is STARTING this command as the graded proof itself — the run the app is
|
|
196
|
+
* judged by, composed and launched by the platform — rather than the executor's own diagnosis.
|
|
197
|
+
*
|
|
198
|
+
* A redeploy's proof is the targeted set the last walk left: its command names the failures it
|
|
199
|
+
* re-runs (`file:line`, and the specs they live in), so it reads as a narrowed run. That
|
|
200
|
+
* selection is the proof's own scope, so the graded run keeps the suite's retries instead of
|
|
201
|
+
* walking each failure once the way a diagnosis does. Only the selection is excused — a failed
|
|
202
|
+
* cap, a title filter, a last-failed set and a local targeted selection stay diagnoses whatever the caller
|
|
203
|
+
* says here — and only a command the PLATFORM composes and launches is ever the proof.
|
|
204
|
+
*
|
|
205
|
+
* Host code marks the launch input with {@link PLATFORM_PROOF} rather than a JSON key: tool
|
|
206
|
+
* input a model sends is JSON, and JSON has no symbol keys, so no model call can claim this.
|
|
207
|
+
*/
|
|
208
|
+
platformProof?: boolean;
|
|
184
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* The key host code sets on an `exec_command` input object to mark the launch as the platform's
|
|
212
|
+
* own graded proof ({@link DiagnosisRunContext} `platformProof`).
|
|
213
|
+
*
|
|
214
|
+
* A SYMBOL, deliberately: a model's tool input is JSON, and JSON cannot carry a symbol key, so a
|
|
215
|
+
* model can never forge this mark — a `platform_proof` key it writes into its own JSON is just an
|
|
216
|
+
* unknown input key, and the handler ignores it. Object spreads through a consumer's wrappers, and
|
|
217
|
+
* this package's own input normalization, keep symbol-keyed properties, so the host's intent
|
|
218
|
+
* survives the real launch path.
|
|
219
|
+
*/
|
|
220
|
+
export declare const PLATFORM_PROOF: unique symbol;
|
|
221
|
+
/**
|
|
222
|
+
* Whether an `exec_command` input object carries the host's {@link PLATFORM_PROOF} mark.
|
|
223
|
+
*
|
|
224
|
+
* @param input - The tool input as the handler received it.
|
|
225
|
+
* @returns True only for a launch host code marked; false for anything a model sent.
|
|
226
|
+
*/
|
|
227
|
+
export declare function isPlatformProofLaunch(input: unknown): boolean;
|
|
185
228
|
/**
|
|
186
229
|
* Whether a command walks a PART of a suite instead of all of it: a cap that stops it at a failure
|
|
187
230
|
* count, the failures the last run printed (`--last-failed`, `--only-changed`), a title filter, or
|
|
@@ -217,9 +260,21 @@ export interface DiagnosisRunContext {
|
|
|
217
260
|
* that exclusion, the rewriter added `--retries=0` to it, and the run lost the suite's retries on
|
|
218
261
|
* the one walk where a network blip is likeliest.
|
|
219
262
|
*
|
|
263
|
+
* A command the PLATFORM composed and launched AS the graded proof keeps the suite's retries for
|
|
264
|
+
* the SELECTION it composed — the failures a redeploy re-runs, named as files and `file:line`
|
|
265
|
+
* ({@link DiagnosisRunContext} `platformProof`). Only that selection is excused: a cap, a title
|
|
266
|
+
* filter, a last-failed set and a local targeted selection stay diagnoses, so the mark cannot turn a walk of
|
|
267
|
+
* part of the suite into the graded measurement. Which targets are local is
|
|
268
|
+
* {@link suiteCommandTarget}'s answer, and the launch rewrite asks it on the same reading
|
|
269
|
+
* ({@link ./utilities.js} `streamingBackgroundCommand`).
|
|
270
|
+
*
|
|
220
271
|
* @param command - The command as the executor sent it.
|
|
221
|
-
* @param context - The request's approved exclusions
|
|
222
|
-
*
|
|
272
|
+
* @param context - The request's approved exclusions and whether this command IS the graded
|
|
273
|
+
* proof, when the caller knows them.
|
|
274
|
+
* A whole local walk still covers the whole suite; the launcher's separate local-target policy
|
|
275
|
+
* disables its retries. This predicate classifies narrowed selections and their proof purpose.
|
|
276
|
+
*
|
|
277
|
+
* @returns True when the run is a diagnosis or a re-run, not the whole suite or a deployed proof selection.
|
|
223
278
|
*/
|
|
224
279
|
export declare function isDiagnosisRun(command: string, context?: DiagnosisRunContext): boolean;
|
|
225
280
|
//# sourceMappingURL=suite-overlap.d.ts.map
|
|
@@ -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;AA4VD
|
|
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;AA4VD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AAwOD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,SAAS,EAAE,OAAO,CAAA;IAClB,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;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
|
@@ -445,7 +445,9 @@ function redirectRunnerOutputsToFreshFiles(command) {
|
|
|
445
445
|
* invocation — same launcher, same settings — with the named `file:line`s in place of every
|
|
446
446
|
* positional selection the run carried (a spec file, a suite directory or a regex filter),
|
|
447
447
|
* `--last-failed` dropped (it re-runs the tests that never ran too, X1 flash-m60) and
|
|
448
|
-
* `--retries=0` set (a re-run of a known failure does not need to pay for retries)
|
|
448
|
+
* `--retries=0` set (a re-run of a known failure does not need to pay for retries) — except the
|
|
449
|
+
* re-run of a run against a DEPLOYED URL, which keeps the suite's own retries and tracing
|
|
450
|
+
* (`options.suiteSettings`).
|
|
449
451
|
*
|
|
450
452
|
* The re-run keeps the run's `> <file>` redirect only in the sense of keeping its OUTPUT there:
|
|
451
453
|
* the target is rewritten to a fresh sibling ({@link redirectRunnerOutputsToFreshFiles}), so a
|
|
@@ -475,9 +477,15 @@ function redirectRunnerOutputsToFreshFiles(command) {
|
|
|
475
477
|
* @param env - The settings the REQUEST requires of the suite and this run left out
|
|
476
478
|
* ({@link withRunEnv}): the re-run carries them, so a re-run of a run measured in the wrong
|
|
477
479
|
* mode is not measured in that mode again (xr-molecule-flash-m182 +12:06).
|
|
480
|
+
* @param options - `suiteSettings` for the re-run of a run against a DEPLOYED URL: it keeps the
|
|
481
|
+
* suite's own retries and tracing instead of the diagnosis ones. The graded measurement is the
|
|
482
|
+
* suite's own settings, and a retry is what leaves a failing test's trace there; the platform's
|
|
483
|
+
* `--retries=0` and its `--trace=retain-on-failure` are both a stricter measurement than the
|
|
484
|
+
* one that was graded, and on X1 xr-molecule-flash-h15 the recording alone turned three
|
|
485
|
+
* budget-bound deployed tests into timeouts.
|
|
478
486
|
* @returns The scoped command, or the command unchanged when it runs no Playwright suite.
|
|
479
487
|
*/
|
|
480
|
-
export function scopedRerunCommand(command, locations, excluded = [], config, cwd, env = []) {
|
|
488
|
+
export function scopedRerunCommand(command, locations, excluded = [], config, cwd, env = [], options = {}) {
|
|
481
489
|
const run = playwrightStatement(command);
|
|
482
490
|
if (run === null)
|
|
483
491
|
return command;
|
|
@@ -508,13 +516,22 @@ export function scopedRerunCommand(command, locations, excluded = [], config, cw
|
|
|
508
516
|
// nothing — "No tests found" — so every location is rendered in a form Playwright can match
|
|
509
517
|
// ({@link playwrightLocations}).
|
|
510
518
|
const narrowed = playwrightLocations(locations, command, cwd);
|
|
511
|
-
|
|
519
|
+
// The recording flag the platform adds to a run whose config keeps no trace
|
|
520
|
+
// (`trace-artifacts.ts` `DIAGNOSIS_TRACE_FLAG`). It costs every test its recording, so a re-run
|
|
521
|
+
// measured with the suite's settings does not carry it.
|
|
522
|
+
const platformRecordingTrace = /\s*--trace=retain-on-failure(?![\w-])/g;
|
|
523
|
+
const keptSettings = options.suiteSettings === true;
|
|
524
|
+
const dropped = (keptSettings
|
|
525
|
+
? dropSupersededSelections(args, narrowed).replace(platformRecordingTrace, '')
|
|
526
|
+
: dropSupersededSelections(args, narrowed))
|
|
512
527
|
// `--last-failed` re-runs the tests that never ran too (flash-m60); its `--last-failed-file`
|
|
513
528
|
// sibling only moves the file it reads and is a real option of the re-run.
|
|
514
529
|
.replace(/\s*--last-failed(?!-)/g, '')
|
|
515
530
|
.replace(/\s*--retries(?:[= ]\d+)?/g, '');
|
|
531
|
+
// A re-run of a deployed run measures what the suite measures: its own retries (which is what
|
|
532
|
+
// leaves a failing test's retry trace), never the diagnosis `--retries=0`.
|
|
516
533
|
const scoped = command.slice(0, run.afterRunner) +
|
|
517
|
-
` ${narrowed.join(' ')} --retries=0${carry}${invert}` +
|
|
534
|
+
` ${narrowed.join(' ')}${keptSettings ? '' : ' --retries=0'}${carry}${invert}` +
|
|
518
535
|
dropped;
|
|
519
536
|
// A command that starts the suite AGAIN after this statement is a chain of walks, not a re-run:
|
|
520
537
|
// everything from the next suite runner on is dropped, so the composed command carries ONE walk.
|
|
@@ -865,10 +882,34 @@ function playwrightStatement(command) {
|
|
|
865
882
|
return null;
|
|
866
883
|
}
|
|
867
884
|
/**
|
|
868
|
-
* What narrows a Playwright run to a part of the suite
|
|
869
|
-
*
|
|
885
|
+
* What narrows a Playwright run to a part of the suite by naming the failures themselves: spec
|
|
886
|
+
* files and `file:line` locations. These are the selections a redeploy's targeted proof is
|
|
887
|
+
* composed from.
|
|
870
888
|
*/
|
|
871
|
-
const
|
|
889
|
+
const NAMED_SELECTION = /\.(?:spec|test)\.[cm]?[jt]sx?\b|\.[cm]?[jt]sx?:\d+/;
|
|
890
|
+
/**
|
|
891
|
+
* What narrows a Playwright run by a title filter, or by the failures the run before it printed.
|
|
892
|
+
* These are diagnoses however the run was launched. A cap is a diagnosis too, but
|
|
893
|
+
* {@link boundsFailures} reads it before this point because its own "no cap" spelling
|
|
894
|
+
* (`--max-failures=0`) has to be told apart.
|
|
895
|
+
*/
|
|
896
|
+
const FILTERED_SELECTION = /(?:^|\s)(?:-g|--grep|--grep-invert|-G|--last-failed|--only-changed)\b/;
|
|
897
|
+
/**
|
|
898
|
+
* What narrows a Playwright run to a part of the suite: either of the two above. Built from their
|
|
899
|
+
* own sources so the two readings cannot drift apart.
|
|
900
|
+
*/
|
|
901
|
+
const NARROWED_RUN = new RegExp(`(?:${NAMED_SELECTION.source})|(?:${FILTERED_SELECTION.source})`);
|
|
902
|
+
/**
|
|
903
|
+
* Whether a narrowed invocation is narrowed ONLY by the failures it names — the selection the
|
|
904
|
+
* platform composes a redeploy's proof from ({@link NAMED_SELECTION}) — rather than by a title
|
|
905
|
+
* filter or a last-failed set ({@link FILTERED_SELECTION}).
|
|
906
|
+
*
|
|
907
|
+
* @param run - The Playwright invocation's command-position text, without a `--grep-invert`.
|
|
908
|
+
* @returns True when files/lines are the only narrowing.
|
|
909
|
+
*/
|
|
910
|
+
function namesOnlySelection(run) {
|
|
911
|
+
return NAMED_SELECTION.test(run) && !FILTERED_SELECTION.test(run);
|
|
912
|
+
}
|
|
872
913
|
/**
|
|
873
914
|
* A `--grep-invert` (or its `-G` alias) with the pattern Playwright takes: quoted or bare, `=` or
|
|
874
915
|
* whitespace between flag and value, the last occurrence winning as it does on the runner's own
|
|
@@ -899,6 +940,28 @@ function grepInvertPattern(run) {
|
|
|
899
940
|
function withoutGrepInvert(run) {
|
|
900
941
|
return run.replace(GREP_INVERT_VALUE, ' ');
|
|
901
942
|
}
|
|
943
|
+
/**
|
|
944
|
+
* The key host code sets on an `exec_command` input object to mark the launch as the platform's
|
|
945
|
+
* own graded proof ({@link DiagnosisRunContext} `platformProof`).
|
|
946
|
+
*
|
|
947
|
+
* A SYMBOL, deliberately: a model's tool input is JSON, and JSON cannot carry a symbol key, so a
|
|
948
|
+
* model can never forge this mark — a `platform_proof` key it writes into its own JSON is just an
|
|
949
|
+
* unknown input key, and the handler ignores it. Object spreads through a consumer's wrappers, and
|
|
950
|
+
* this package's own input normalization, keep symbol-keyed properties, so the host's intent
|
|
951
|
+
* survives the real launch path.
|
|
952
|
+
*/
|
|
953
|
+
export const PLATFORM_PROOF = Symbol.for('@molecule/api-ai-tools/platform-proof');
|
|
954
|
+
/**
|
|
955
|
+
* Whether an `exec_command` input object carries the host's {@link PLATFORM_PROOF} mark.
|
|
956
|
+
*
|
|
957
|
+
* @param input - The tool input as the handler received it.
|
|
958
|
+
* @returns True only for a launch host code marked; false for anything a model sent.
|
|
959
|
+
*/
|
|
960
|
+
export function isPlatformProofLaunch(input) {
|
|
961
|
+
return (typeof input === 'object' &&
|
|
962
|
+
input !== null &&
|
|
963
|
+
input[PLATFORM_PROOF] === true);
|
|
964
|
+
}
|
|
902
965
|
/**
|
|
903
966
|
* The Playwright invocation's text when the command starts one, or null.
|
|
904
967
|
*
|
|
@@ -965,11 +1028,25 @@ function boundsFailures(command) {
|
|
|
965
1028
|
* that exclusion, the rewriter added `--retries=0` to it, and the run lost the suite's retries on
|
|
966
1029
|
* the one walk where a network blip is likeliest.
|
|
967
1030
|
*
|
|
1031
|
+
* A command the PLATFORM composed and launched AS the graded proof keeps the suite's retries for
|
|
1032
|
+
* the SELECTION it composed — the failures a redeploy re-runs, named as files and `file:line`
|
|
1033
|
+
* ({@link DiagnosisRunContext} `platformProof`). Only that selection is excused: a cap, a title
|
|
1034
|
+
* filter, a last-failed set and a local targeted selection stay diagnoses, so the mark cannot turn a walk of
|
|
1035
|
+
* part of the suite into the graded measurement. Which targets are local is
|
|
1036
|
+
* {@link suiteCommandTarget}'s answer, and the launch rewrite asks it on the same reading
|
|
1037
|
+
* ({@link ./utilities.js} `streamingBackgroundCommand`).
|
|
1038
|
+
*
|
|
968
1039
|
* @param command - The command as the executor sent it.
|
|
969
|
-
* @param context - The request's approved exclusions
|
|
970
|
-
*
|
|
1040
|
+
* @param context - The request's approved exclusions and whether this command IS the graded
|
|
1041
|
+
* proof, when the caller knows them.
|
|
1042
|
+
* A whole local walk still covers the whole suite; the launcher's separate local-target policy
|
|
1043
|
+
* disables its retries. This predicate classifies narrowed selections and their proof purpose.
|
|
1044
|
+
*
|
|
1045
|
+
* @returns True when the run is a diagnosis or a re-run, not the whole suite or a deployed proof selection.
|
|
971
1046
|
*/
|
|
972
1047
|
export function isDiagnosisRun(command, context) {
|
|
1048
|
+
// A cap bounds the walk whatever launched it. `--max-failures=0` is Playwright's own "no cap"
|
|
1049
|
+
// ({@link boundsFailures}), so the uncapped spelling is not read as a diagnosis here.
|
|
973
1050
|
if (boundsFailures(command))
|
|
974
1051
|
return true;
|
|
975
1052
|
const run = playwrightRun(command);
|
|
@@ -980,10 +1057,20 @@ export function isDiagnosisRun(command, context) {
|
|
|
980
1057
|
if (commandRunsNoTests(run))
|
|
981
1058
|
return true;
|
|
982
1059
|
const inverted = grepInvertPattern(run);
|
|
983
|
-
if (inverted === null)
|
|
984
|
-
return NARROWED_RUN.test(run);
|
|
985
1060
|
// A file, a line, a `-g`, `--last-failed` … narrows the run whatever the inversion also drops.
|
|
986
|
-
|
|
1061
|
+
const selection = inverted === null ? run : withoutGrepInvert(run);
|
|
1062
|
+
if (NARROWED_RUN.test(selection)) {
|
|
1063
|
+
// The platform's own proof keeps the suite's retries for the failures it re-runs — the one
|
|
1064
|
+
// selection a redeploy composes. Every other narrower is still a diagnosis: a filter or a
|
|
1065
|
+
// last-failed set measures a part of the suite, capped or not.
|
|
1066
|
+
if (context?.platformProof === true &&
|
|
1067
|
+
namesOnlySelection(selection) &&
|
|
1068
|
+
suiteCommandTarget(command) !== 'local')
|
|
1069
|
+
return false;
|
|
987
1070
|
return true;
|
|
1071
|
+
}
|
|
1072
|
+
if (inverted === null)
|
|
1073
|
+
return false;
|
|
1074
|
+
// No selector or filter narrows the run: only the inversion's own scope can make it a diagnosis.
|
|
988
1075
|
return matchingExcludedTitles(inverted, context?.approvedExclusions ?? []).length === 0;
|
|
989
1076
|
}
|
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;AAgS9C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAahG;AAudD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAiInE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAEA,CAAA;AAE9B;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,QAI6C,CAAA;AA2DlF;;;;;;;;;;;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;AAgS9C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAahG;AAudD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAiInE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAEA,CAAA;AAE9B;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,QAI6C,CAAA;AA2DlF;;;;;;;;;;;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,CAqkGxF"}
|
package/dist/tools.js
CHANGED
|
@@ -701,8 +701,8 @@ async function backgroundTaskState(backend, command, seconds, ceilingMs) {
|
|
|
701
701
|
slice,
|
|
702
702
|
};
|
|
703
703
|
}
|
|
704
|
-
import { suiteCommandTarget } from './suite-overlap.js';
|
|
705
|
-
import { diagnosisTraceCommand } from './trace-artifacts.js';
|
|
704
|
+
import { isPlatformProofLaunch, suiteCommandTarget } from './suite-overlap.js';
|
|
705
|
+
import { diagnosisTraceCommand, namesNoRetries } from './trace-artifacts.js';
|
|
706
706
|
import { addedRedactionMask, BRACE_GLOB_HINT, checkBlockedCommand, declaredBudgetSeconds, DEFAULT_SEARCH_EXCLUDED_DIRS, directoryReadHint, earlyReturnCause, emptyCallError, expandBraceGlob, failureCausesNote, findPathArgs, findPatternArgs, fusedLine, htmlOutline, isCommandTimeout, isEnvFilePath, isOutsideRoot, isPlaywrightRunCommand, isReadOnlyInspection, isSuiteRunCommand, linesWithinSerialized, literalDirPrefix, logShowsInlineFailureBodies, MAX_BATCH_READ_FILES, MAX_FIND_RESULTS, MAX_HTML_INLINE_CHARS, MAX_OUTPUT_SIZE, MAX_READ_CALL_CHARS, MAX_READ_RETURN_CHARS, MAX_READ_SIZE, MAX_SEARCH_CONTEXT_LINES, MAX_SEARCH_RESULTS, MAX_WRITE_SIZE, outputIsWithheldUntilExit, outputRedirectTarget, parseCheckCommand, parseCheckProblem, pathArgError, READ_RESULT_ENVELOPE_CHARS, redactSecrets, redactSecretsInCode, repeatedSuiteRunError, repeatingFailure, repeatingFailureNote, resolvePath, RUNNING_FAILURE_LINES, runningCauseCommand, runningLogReadCommand, runningOutputSliceCommand, searchTimeoutError, serializedChars, shellQuote, sliceLines, SMALL_FILE_WHOLE_CHARS, streamingBackgroundCommand, stripControlChars, suiteRunBudgetCommand, suiteRunConfigCommand, suiteRunPipelinePlacement, suiteRunPriorityLaunch, TOOL_RESULT_CHARS, truncateMiddle, universalCause, whitespaceTolerantReplace, withoutSuiteTimeout, withPlaywrightRunReport, } from './utilities.js';
|
|
707
707
|
/**
|
|
708
708
|
* How long exec_command waits for a command it backgrounded only because the
|
|
@@ -2576,9 +2576,13 @@ export function buildTools(backend, config) {
|
|
|
2576
2576
|
// the model meant answered a `list_files` instantly (xr-molecule-flash-m94).
|
|
2577
2577
|
// A bare first segment (`helpers/*`) is left alone on purpose: it means "any
|
|
2578
2578
|
// `helpers/` below the root" (xr-molecule-flash-m77, see literalDirPrefix).
|
|
2579
|
+
// An npm scope under a `node_modules` root is the exception the root enables:
|
|
2580
|
+
// `@molecule/app-markdown*/package.json` names `<root>/@molecule` and nothing
|
|
2581
|
+
// else, and un-narrowed it walked the whole dependency tree into the deadline
|
|
2582
|
+
// (xr-molecule-flash-l65).
|
|
2579
2583
|
// Brace alternatives may each name a directory (`{src/a,src/b}/*.ts`),
|
|
2580
2584
|
// so a narrowing prefix is used only when every expansion agrees on it.
|
|
2581
|
-
const prefixes = patterns.map((p) => literalDirPrefix(p));
|
|
2585
|
+
const prefixes = patterns.map((p) => literalDirPrefix(p, path));
|
|
2582
2586
|
const prefixDir = prefixes.every((p) => p === prefixes[0]) ? prefixes[0] : null;
|
|
2583
2587
|
let findRoot = path;
|
|
2584
2588
|
let findArgs = findArgsForPatterns(patterns);
|
|
@@ -2912,7 +2916,16 @@ export function buildTools(backend, config) {
|
|
|
2912
2916
|
// restart (see reportByTask). A run whose reporter set is not this tool's to place — or
|
|
2913
2917
|
// one that already writes a report of its own — comes back with no report path and is
|
|
2914
2918
|
// launched exactly as before.
|
|
2915
|
-
|
|
2919
|
+
//
|
|
2920
|
+
// Whether this launch IS the platform's graded proof is a HOST fact, read off the symbol
|
|
2921
|
+
// `PLATFORM_PROOF` that only host code can set on the input object — not from a JSON key
|
|
2922
|
+
// in the model's arguments, which the model would control (a `platform_proof` key it
|
|
2923
|
+
// writes is an unknown input key and is ignored). A launch without the mark is read
|
|
2924
|
+
// exactly as before.
|
|
2925
|
+
const streaming = streamingBackgroundCommand(command, {
|
|
2926
|
+
approvedExclusions: excludedTestTitles?.() ?? [],
|
|
2927
|
+
platformProof: isPlatformProofLaunch(input),
|
|
2928
|
+
}, playwrightReportPathFor(id));
|
|
2916
2929
|
// A command that starts the suite more than once is refused here, before anything is
|
|
2917
2930
|
// written or launched: each walk measures the same code, and only the last is rewritten
|
|
2918
2931
|
// (X1 xr-molecule-flash-m157 +14:02 — two whole walks chained with `;`).
|
|
@@ -3591,7 +3604,19 @@ export function buildTools(backend, config) {
|
|
|
3591
3604
|
if (yieldDiagnostic &&
|
|
3592
3605
|
taskRecord &&
|
|
3593
3606
|
!taskRecord.diagnosticYielded &&
|
|
3594
|
-
|
|
3607
|
+
// A failure the request excludes by name is not a diagnostic to hand back — the same
|
|
3608
|
+
// matcher the finished run's causes note drops it with, so the wait keeps running and
|
|
3609
|
+
// the one yield stays available for a failure that counts (xr-molecule-flash-h13).
|
|
3610
|
+
// Only a failure the run has FINISHED with is a diagnostic: a first attempt whose retry
|
|
3611
|
+
// has not printed yet may still pass, and handing it back sent the builder to fix a test
|
|
3612
|
+
// the retry absorbed while the deployed proof went green — the edit voided that proof
|
|
3613
|
+
// and cost a redeploy plus a whole walk (xr-molecule-flash-l69). The yield itself stays:
|
|
3614
|
+
// the retry-failure shape it was written for keeps firing. A command pinned to
|
|
3615
|
+
// `--retries=0` has no retry to wait for, so its first failure is already final.
|
|
3616
|
+
logShowsInlineFailureBodies(causeLog, excludedTestTitles?.() ?? [], {
|
|
3617
|
+
finalOnly: true,
|
|
3618
|
+
noRetries: namesNoRetries(taskRecord.command),
|
|
3619
|
+
})) {
|
|
3595
3620
|
// Completion during the log read still wins over a progress return.
|
|
3596
3621
|
exitCode = await readExit();
|
|
3597
3622
|
if (exitCode !== null)
|
|
@@ -843,6 +843,15 @@ export declare function failureTraceNote(items: readonly TraceArtifact[], target
|
|
|
843
843
|
* @returns True when the config records traces for failures.
|
|
844
844
|
*/
|
|
845
845
|
export declare function suiteRecordsTraces(configText: string): boolean;
|
|
846
|
+
/**
|
|
847
|
+
* Whether the run itself pins `--retries=0` (either spelling): a run that cannot retry records no
|
|
848
|
+
* retry trace, so it still needs one recorded for it. A running wait reads the same proof to know
|
|
849
|
+
* a first failure's body is already final (`wait_for_task`'s diagnostic yield).
|
|
850
|
+
*
|
|
851
|
+
* @param command - The shell command.
|
|
852
|
+
* @returns True when the run allows no retry.
|
|
853
|
+
*/
|
|
854
|
+
export declare function namesNoRetries(command: string): boolean;
|
|
846
855
|
/** The `--trace` flag this platform adds, and the only value it adds it with. */
|
|
847
856
|
export declare const DIAGNOSIS_TRACE_FLAG = "--trace=retain-on-failure";
|
|
848
857
|
/** A command with the trace flag this platform decided to add, and the sentence to report it in. */
|
|
@@ -854,20 +863,30 @@ export interface DiagnosisTraceRewrite {
|
|
|
854
863
|
}
|
|
855
864
|
/**
|
|
856
865
|
* The command a Playwright run needs to leave a readable trace behind, when the suite's config
|
|
857
|
-
* would record none.
|
|
866
|
+
* would record none — except a run that can serve as proof, whose own settings are left alone.
|
|
858
867
|
*
|
|
859
868
|
* The failing tests' requests are only readable if the run wrote them down (see the module doc),
|
|
860
869
|
* and the config is where the decision about that lives — the platform does not edit the suite's
|
|
861
|
-
* config, so it passes the flag instead, on
|
|
862
|
-
*
|
|
863
|
-
*
|
|
864
|
-
*
|
|
865
|
-
*
|
|
866
|
-
*
|
|
867
|
-
*
|
|
868
|
-
*
|
|
869
|
-
*
|
|
870
|
-
*
|
|
870
|
+
* config, so it passes the flag instead, on a Playwright run that starts tests, does not already
|
|
871
|
+
* decide its own `--trace`, and whose config keeps no trace for its failures.
|
|
872
|
+
*
|
|
873
|
+
* A run that can serve as PROOF is the exception: the graded measurement is the suite's own
|
|
874
|
+
* settings, so it keeps its own tracing and retries. That was measured, not assumed — on one
|
|
875
|
+
* sandbox in X1 xr-molecule-flash-h15 (+46:53 → +49:30) the same build ran a three-test deployed
|
|
876
|
+
* subset 3/3 timed out under this flag (17.6–17.9 s against a 15 s per-test budget) and the whole
|
|
877
|
+
* file passed 14/14 without it (10.9–12.1 s). `retain-on-failure` RETAINS only a failing test's
|
|
878
|
+
* trace (Playwright's `_shouldAbandonTrace` unlinks a passing test's), but it RECORDS every
|
|
879
|
+
* action of every test, and for a test near its per-test budget that recording is the difference
|
|
880
|
+
* between passing and timing out. m163 (+24:58) is the failure this flag was added for: its
|
|
881
|
+
* deployed proof run left only an `error-context.md` because the suite traces
|
|
882
|
+
* `on-first-retry` and the run had no retries. That need is met without the flag — the graded
|
|
883
|
+
* deployed run keeps the suite's own retries, so a failing test leaves its retry's trace — and
|
|
884
|
+
* the platform's re-run note carries `--trace=on` for a run that did leave none.
|
|
885
|
+
*
|
|
886
|
+
* Which runs are proof-capable is {@link suiteCommandTarget}'s answer: a run against a deployed
|
|
887
|
+
* URL. A LOCAL run is never left to its config, because the launcher gives every local run
|
|
888
|
+
* `--retries=0` (`@molecule/api-ai-tools` `streamingBackgroundCommand`), so its retry trace would
|
|
889
|
+
* never happen. A run that pins `--retries=0` itself is in the same position, whatever its target.
|
|
871
890
|
*
|
|
872
891
|
* @param args - The command, the directory it starts in, and the backend's file read.
|
|
873
892
|
* @returns The command to run and the sentence to report, or the command unchanged.
|
|
@@ -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,6 +30,7 @@
|
|
|
30
30
|
* @module
|
|
31
31
|
*/
|
|
32
32
|
import { locatedCommandSegments, statementArgumentEnd } from './command-position.js';
|
|
33
|
+
import { suiteCommandTarget } from './suite-overlap.js';
|
|
33
34
|
import { isPlaywrightRunCommand, redactSecrets } from './utilities.js';
|
|
34
35
|
/** How many traces one read reports, newest first. */
|
|
35
36
|
export const MAX_TRACE_ARTIFACTS = 12;
|
|
@@ -4469,6 +4470,39 @@ export function suiteRecordsTraces(configText) {
|
|
|
4469
4470
|
const text = configText.replace(/\/\*[\s\S]*?\*\//g, '').replace(/(^|[^:])\/\/[^\n]*/g, '$1');
|
|
4470
4471
|
return [...text.matchAll(TRACE_SETTING)].some((m) => RECORDING_TRACE_MODES.includes(m[1] ?? ''));
|
|
4471
4472
|
}
|
|
4473
|
+
/** The trace modes that record only when a test is RETRIED (`on-first-retry`, `on-all-retries`). */
|
|
4474
|
+
const RETRY_TRACE_MODES = ['on-first-retry', 'on-all-retries'];
|
|
4475
|
+
/**
|
|
4476
|
+
* The trace mode a config records a RETRY with (`on-first-retry`, `on-all-retries`), or null.
|
|
4477
|
+
*
|
|
4478
|
+
* These modes are not "no trace": a test that fails and is retried leaves the trace of its retry
|
|
4479
|
+
* (`…-chromium-retry1/trace.zip`), which is exactly the artifact a failure's cause is read from.
|
|
4480
|
+
* They record nothing only when the run allows no retry at all — and that is the run this platform
|
|
4481
|
+
* completes with a flag, never the run whose settings are the graded measurement.
|
|
4482
|
+
*
|
|
4483
|
+
* @param configText - The config's source, or '' when none could be read.
|
|
4484
|
+
* @returns The mode as the config spells it, or null when it records no retry trace.
|
|
4485
|
+
*/
|
|
4486
|
+
function suiteTracesOnRetry(configText) {
|
|
4487
|
+
const text = configText.replace(/\/\*[\s\S]*?\*\//g, '').replace(/(^|[^:])\/\/[^\n]*/g, '$1');
|
|
4488
|
+
for (const m of text.matchAll(TRACE_SETTING)) {
|
|
4489
|
+
const mode = m[1] ?? '';
|
|
4490
|
+
if (RETRY_TRACE_MODES.includes(mode))
|
|
4491
|
+
return mode;
|
|
4492
|
+
}
|
|
4493
|
+
return null;
|
|
4494
|
+
}
|
|
4495
|
+
/**
|
|
4496
|
+
* Whether the run itself pins `--retries=0` (either spelling): a run that cannot retry records no
|
|
4497
|
+
* retry trace, so it still needs one recorded for it. A running wait reads the same proof to know
|
|
4498
|
+
* a first failure's body is already final (`wait_for_task`'s diagnostic yield).
|
|
4499
|
+
*
|
|
4500
|
+
* @param command - The shell command.
|
|
4501
|
+
* @returns True when the run allows no retry.
|
|
4502
|
+
*/
|
|
4503
|
+
export function namesNoRetries(command) {
|
|
4504
|
+
return /(?:^|[\s;&|(])--retries(?:=|\s+)['"]?0(?![\d.])/.test(command);
|
|
4505
|
+
}
|
|
4472
4506
|
/** The `--trace` flag this platform adds, and the only value it adds it with. */
|
|
4473
4507
|
export const DIAGNOSIS_TRACE_FLAG = '--trace=retain-on-failure';
|
|
4474
4508
|
/**
|
|
@@ -4571,20 +4605,30 @@ async function readRunConfig(command, cwd, readFile) {
|
|
|
4571
4605
|
}
|
|
4572
4606
|
/**
|
|
4573
4607
|
* The command a Playwright run needs to leave a readable trace behind, when the suite's config
|
|
4574
|
-
* would record none.
|
|
4608
|
+
* would record none — except a run that can serve as proof, whose own settings are left alone.
|
|
4575
4609
|
*
|
|
4576
4610
|
* The failing tests' requests are only readable if the run wrote them down (see the module doc),
|
|
4577
4611
|
* and the config is where the decision about that lives — the platform does not edit the suite's
|
|
4578
|
-
* config, so it passes the flag instead, on
|
|
4579
|
-
*
|
|
4580
|
-
*
|
|
4581
|
-
*
|
|
4582
|
-
*
|
|
4583
|
-
*
|
|
4584
|
-
*
|
|
4585
|
-
*
|
|
4586
|
-
*
|
|
4587
|
-
*
|
|
4612
|
+
* config, so it passes the flag instead, on a Playwright run that starts tests, does not already
|
|
4613
|
+
* decide its own `--trace`, and whose config keeps no trace for its failures.
|
|
4614
|
+
*
|
|
4615
|
+
* A run that can serve as PROOF is the exception: the graded measurement is the suite's own
|
|
4616
|
+
* settings, so it keeps its own tracing and retries. That was measured, not assumed — on one
|
|
4617
|
+
* sandbox in X1 xr-molecule-flash-h15 (+46:53 → +49:30) the same build ran a three-test deployed
|
|
4618
|
+
* subset 3/3 timed out under this flag (17.6–17.9 s against a 15 s per-test budget) and the whole
|
|
4619
|
+
* file passed 14/14 without it (10.9–12.1 s). `retain-on-failure` RETAINS only a failing test's
|
|
4620
|
+
* trace (Playwright's `_shouldAbandonTrace` unlinks a passing test's), but it RECORDS every
|
|
4621
|
+
* action of every test, and for a test near its per-test budget that recording is the difference
|
|
4622
|
+
* between passing and timing out. m163 (+24:58) is the failure this flag was added for: its
|
|
4623
|
+
* deployed proof run left only an `error-context.md` because the suite traces
|
|
4624
|
+
* `on-first-retry` and the run had no retries. That need is met without the flag — the graded
|
|
4625
|
+
* deployed run keeps the suite's own retries, so a failing test leaves its retry's trace — and
|
|
4626
|
+
* the platform's re-run note carries `--trace=on` for a run that did leave none.
|
|
4627
|
+
*
|
|
4628
|
+
* Which runs are proof-capable is {@link suiteCommandTarget}'s answer: a run against a deployed
|
|
4629
|
+
* URL. A LOCAL run is never left to its config, because the launcher gives every local run
|
|
4630
|
+
* `--retries=0` (`@molecule/api-ai-tools` `streamingBackgroundCommand`), so its retry trace would
|
|
4631
|
+
* never happen. A run that pins `--retries=0` itself is in the same position, whatever its target.
|
|
4588
4632
|
*
|
|
4589
4633
|
* @param args - The command, the directory it starts in, and the backend's file read.
|
|
4590
4634
|
* @returns The command to run and the sentence to report, or the command unchanged.
|
|
@@ -4599,6 +4643,13 @@ export async function diagnosisTraceCommand(args) {
|
|
|
4599
4643
|
const config = await readRunConfig(args.command, args.cwd, args.readFile);
|
|
4600
4644
|
if (suiteRecordsTraces(config))
|
|
4601
4645
|
return unchanged;
|
|
4646
|
+
// A proof-capable run keeps the suite's own tracing and retries: its retry trace is the artifact
|
|
4647
|
+
// a failure is read from, and recording every action would change what the measurement says.
|
|
4648
|
+
const retryTrace = suiteTracesOnRetry(config);
|
|
4649
|
+
if (retryTrace !== null &&
|
|
4650
|
+
suiteCommandTarget(args.command) !== 'local' &&
|
|
4651
|
+
!namesNoRetries(args.command))
|
|
4652
|
+
return unchanged;
|
|
4602
4653
|
// The flag goes into the Playwright step's own argument list, at the end of it — an option of
|
|
4603
4654
|
// the run itself, whatever the command opens with, whatever pipes or redirects its output, and
|
|
4604
4655
|
// before the `)` that may close a subshell around it. Appended at the end of the whole command
|
|
@@ -4613,9 +4664,12 @@ export async function diagnosisTraceCommand(args) {
|
|
|
4613
4664
|
return unchanged;
|
|
4614
4665
|
return {
|
|
4615
4666
|
command: `${args.command.slice(0, at)} ${DIAGNOSIS_TRACE_FLAG}${args.command.slice(at)}`,
|
|
4616
|
-
change: `Added \`${DIAGNOSIS_TRACE_FLAG}\`:
|
|
4617
|
-
|
|
4618
|
-
|
|
4619
|
-
|
|
4667
|
+
change: `Added \`${DIAGNOSIS_TRACE_FLAG}\`: ` +
|
|
4668
|
+
(retryTrace === null
|
|
4669
|
+
? `the suite's config records no trace for a failure${/trace:/.test(config) ? '' : ' (it sets none)'}`
|
|
4670
|
+
: `the suite records traces only on a retry (\`${retryTrace}\`), and this run allows none`) +
|
|
4671
|
+
", and a failing test's own network log is what the platform reads the cause from. It keeps " +
|
|
4672
|
+
'a trace only for a test that fails; the recording still runs for every action of every test ' +
|
|
4673
|
+
'and slows each one, so measure a timing budget once with `--trace=off` before changing the app.',
|
|
4620
4674
|
};
|
|
4621
4675
|
}
|
package/dist/utilities.d.ts
CHANGED
|
@@ -232,9 +232,11 @@ export declare const PLAYWRIGHT_FAILURES_INLINE_ENV = "PLAYWRIGHT_LIST_PRINT_FAI
|
|
|
232
232
|
*
|
|
233
233
|
* @param command - The command as the executor sent it.
|
|
234
234
|
* @param context - What the caller knows beyond the command: the tests the person's request
|
|
235
|
-
* excludes by name
|
|
235
|
+
* excludes by name, and whether this command IS the platform's graded proof
|
|
236
|
+
* ({@link DiagnosisRunContext}). A `--grep-invert` of exactly those exclusions is the
|
|
236
237
|
* request's own scope, not a diagnosis, so it keeps the suite's retries on a deployed proof
|
|
237
|
-
* (xr-molecule-flash-m170 +33:16)
|
|
238
|
+
* (xr-molecule-flash-m170 +33:16) — and a proof the platform itself composed and launched
|
|
239
|
+
* keeps them whatever its scope, targeted set included (xr-molecule-flash-l48 +26:35).
|
|
238
240
|
* @param reportPath - Where this run should write Playwright's standard `json` report, when the
|
|
239
241
|
* caller keeps one ({@link ./playwright-report.js}). The reporter is added to the run's own
|
|
240
242
|
* reporter set, never in place of one, and its output goes to that file through
|
|
@@ -633,11 +635,24 @@ export declare function findPathArgs(pattern: string): string;
|
|
|
633
635
|
* more segments (`@molecule/api-resource-user/dist`), which is the shape that
|
|
634
636
|
* is a directory rather than a directory name.
|
|
635
637
|
*
|
|
638
|
+
* An npm SCOPE as the first segment, under a `node_modules` root, is the one
|
|
639
|
+
* exception that parameter `root` enables: npm installs a scope only directly
|
|
640
|
+
* inside a `node_modules` directory, and the walk already prunes every nested
|
|
641
|
+
* `node_modules` (see `findPruneArgs`), so the whole-tree form can only ever
|
|
642
|
+
* match `<root>/@molecule/…` — the scope directory IS the directory the pattern
|
|
643
|
+
* names. Left un-narrowed, a scoped-package pattern walked the sandbox's entire
|
|
644
|
+
* dependency tree and hit the 10 s deadline with no result at all
|
|
645
|
+
* (xr-molecule-flash-l65). A bare NAME stays a directory name at any depth:
|
|
646
|
+
* `helpers/*` is unchanged even under a `node_modules` root.
|
|
647
|
+
*
|
|
636
648
|
* @param pattern - A pattern already accepted by {@link isValidGlob}.
|
|
649
|
+
* @param root - The resolved search root, when one is already known; a
|
|
650
|
+
* scope-first prefix is returned only when this ends in a `node_modules`
|
|
651
|
+
* segment (and the pattern has more path after the scope).
|
|
637
652
|
* @returns The literal directory prefix, without a trailing slash, or null when
|
|
638
653
|
* the pattern has no glob character, no `/`, or only a bare name before one.
|
|
639
654
|
*/
|
|
640
|
-
export declare function literalDirPrefix(pattern: string): string | null;
|
|
655
|
+
export declare function literalDirPrefix(pattern: string, root?: string): string | null;
|
|
641
656
|
/**
|
|
642
657
|
* Whether a backend error is the sandbox's own command deadline.
|
|
643
658
|
*
|
|
@@ -1058,10 +1073,25 @@ export declare function repeatingFailure(log: string): RepeatingFailure | null;
|
|
|
1058
1073
|
* During a wait the run has not ended (the exit file is read first), so a block beside a `✘` row
|
|
1059
1074
|
* is one the reporter printed inline.
|
|
1060
1075
|
*
|
|
1076
|
+
* A body for a test the request EXCLUDES is not that evidence: its failure does not count for
|
|
1077
|
+
* this request ({@link matchingExcludedTitles}), so a wait that handed it over as the diagnostic
|
|
1078
|
+
* spent a model round trip and 8 k of partial log on a test the same result says to ignore —
|
|
1079
|
+
* exactly what xr-molecule-flash-h13 (+19:06) did twice while the platform's proof was still
|
|
1080
|
+
* walking.
|
|
1081
|
+
*
|
|
1082
|
+
* With `finalOnly`, only a failure the run has FINISHED with counts; a pending retry waits.
|
|
1083
|
+
*
|
|
1061
1084
|
* @param log - A log, or the slice of one a wait reads.
|
|
1062
|
-
* @
|
|
1063
|
-
|
|
1064
|
-
|
|
1085
|
+
* @param excluded - The test titles the request carves out, if the caller knows them.
|
|
1086
|
+
* @param options - `finalOnly` reads only a failure the run has finished with; `noRetries` says
|
|
1087
|
+
* the command proves the run cannot retry (`--retries=0`), so its first failure is final.
|
|
1088
|
+
* @returns True when a `✘` row's own test, outside the request's exclusions, has a failure body
|
|
1089
|
+
* under it — and, with `finalOnly`, that failure is final in the log read so far.
|
|
1090
|
+
*/
|
|
1091
|
+
export declare function logShowsInlineFailureBodies(log: string, excluded?: readonly string[], options?: {
|
|
1092
|
+
finalOnly?: boolean;
|
|
1093
|
+
noRetries?: boolean;
|
|
1094
|
+
}): boolean;
|
|
1065
1095
|
/** How many of a repeating cause's failures the note lists before it says "and N more". */
|
|
1066
1096
|
export declare const REPEATING_FAILURE_LISTED = 5;
|
|
1067
1097
|
/**
|
|
@@ -1416,6 +1446,10 @@ regressedSpecs?: readonly string[]): string | null;
|
|
|
1416
1446
|
* invocation, in the same directory, narrowed to those tests — or null when the running command
|
|
1417
1447
|
* is not a Playwright run this can narrow.
|
|
1418
1448
|
*
|
|
1449
|
+
* A run against a DEPLOYED URL keeps the suite's own retries and tracing in its re-run
|
|
1450
|
+
* ({@link scopedRerunCommand} `suiteSettings`): the deployed measurement is the one the deploy is
|
|
1451
|
+
* graded on, and neither the platform's `--retries=0` nor its recording `--trace` belongs on it.
|
|
1452
|
+
*
|
|
1419
1453
|
* The `locations` are the paths the run's own log printed, which are relative to the directory
|
|
1420
1454
|
* that run started in, so the composer resolves them there ({@link scopedRerunCommand}): the
|
|
1421
1455
|
* command names that directory unless it already changes into one of its own, because the
|
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
|
@@ -649,9 +649,11 @@ function isStatusOnlyStep(step) {
|
|
|
649
649
|
*
|
|
650
650
|
* @param command - The command as the executor sent it.
|
|
651
651
|
* @param context - What the caller knows beyond the command: the tests the person's request
|
|
652
|
-
* excludes by name
|
|
652
|
+
* excludes by name, and whether this command IS the platform's graded proof
|
|
653
|
+
* ({@link DiagnosisRunContext}). A `--grep-invert` of exactly those exclusions is the
|
|
653
654
|
* request's own scope, not a diagnosis, so it keeps the suite's retries on a deployed proof
|
|
654
|
-
* (xr-molecule-flash-m170 +33:16)
|
|
655
|
+
* (xr-molecule-flash-m170 +33:16) — and a proof the platform itself composed and launched
|
|
656
|
+
* keeps them whatever its scope, targeted set included (xr-molecule-flash-l48 +26:35).
|
|
655
657
|
* @param reportPath - Where this run should write Playwright's standard `json` report, when the
|
|
656
658
|
* caller keeps one ({@link ./playwright-report.js}). The reporter is added to the run's own
|
|
657
659
|
* reporter set, never in place of one, and its output goes to that file through
|
|
@@ -787,6 +789,13 @@ export function streamingBackgroundCommand(command, context, reportPath) {
|
|
|
787
789
|
// {@link isDiagnosisRun}'s answer and nobody else's: the platform's notes ask the same
|
|
788
790
|
// function, so a run cannot be a diagnosis to one of them and the whole suite to the other.
|
|
789
791
|
// Which targets are local is {@link suiteCommandTarget}'s answer.
|
|
792
|
+
//
|
|
793
|
+
// A run the PLATFORM composed and launched as the graded proof keeps the suite's retries for
|
|
794
|
+
// the selection it composed — the failures a redeploy re-runs, named as files and `file:line`
|
|
795
|
+
// ({@link isDiagnosisRun} reads the host mark). It does NOT excuse a cap, a title filter or a
|
|
796
|
+
// last-failed set: those read as a diagnosis on that same reading, so the mark cannot turn a
|
|
797
|
+
// walk of part of the suite into the graded measurement. A LOCAL target is never the graded
|
|
798
|
+
// deployed run either, whatever launched it.
|
|
790
799
|
const diagnosis = isDiagnosisRun(lastStep, context);
|
|
791
800
|
const localTarget = suiteCommandTarget(lastStep) === 'local';
|
|
792
801
|
// The last step's reporters: one printer, and it is `list`. Every branch below only ever moves
|
|
@@ -2041,11 +2050,24 @@ export function findPathArgs(pattern) {
|
|
|
2041
2050
|
* more segments (`@molecule/api-resource-user/dist`), which is the shape that
|
|
2042
2051
|
* is a directory rather than a directory name.
|
|
2043
2052
|
*
|
|
2053
|
+
* An npm SCOPE as the first segment, under a `node_modules` root, is the one
|
|
2054
|
+
* exception that parameter `root` enables: npm installs a scope only directly
|
|
2055
|
+
* inside a `node_modules` directory, and the walk already prunes every nested
|
|
2056
|
+
* `node_modules` (see `findPruneArgs`), so the whole-tree form can only ever
|
|
2057
|
+
* match `<root>/@molecule/…` — the scope directory IS the directory the pattern
|
|
2058
|
+
* names. Left un-narrowed, a scoped-package pattern walked the sandbox's entire
|
|
2059
|
+
* dependency tree and hit the 10 s deadline with no result at all
|
|
2060
|
+
* (xr-molecule-flash-l65). A bare NAME stays a directory name at any depth:
|
|
2061
|
+
* `helpers/*` is unchanged even under a `node_modules` root.
|
|
2062
|
+
*
|
|
2044
2063
|
* @param pattern - A pattern already accepted by {@link isValidGlob}.
|
|
2064
|
+
* @param root - The resolved search root, when one is already known; a
|
|
2065
|
+
* scope-first prefix is returned only when this ends in a `node_modules`
|
|
2066
|
+
* segment (and the pattern has more path after the scope).
|
|
2045
2067
|
* @returns The literal directory prefix, without a trailing slash, or null when
|
|
2046
2068
|
* the pattern has no glob character, no `/`, or only a bare name before one.
|
|
2047
2069
|
*/
|
|
2048
|
-
export function literalDirPrefix(pattern) {
|
|
2070
|
+
export function literalDirPrefix(pattern, root) {
|
|
2049
2071
|
const stripped = pattern.replace(/^(?:\.?\/)+/, '');
|
|
2050
2072
|
const firstGlob = stripped.search(/[?*[]/);
|
|
2051
2073
|
// No glob at all: the pattern IS a path, and the whole-tree form already
|
|
@@ -2056,7 +2078,14 @@ export function literalDirPrefix(pattern) {
|
|
|
2056
2078
|
if (at <= 0)
|
|
2057
2079
|
return null;
|
|
2058
2080
|
const prefix = stripped.slice(0, at);
|
|
2059
|
-
|
|
2081
|
+
if (prefix.includes('/'))
|
|
2082
|
+
return prefix;
|
|
2083
|
+
// One segment: a bare directory NAME ("any depth", flash-m77) — except an npm
|
|
2084
|
+
// scope directly inside the node_modules root, which is one directory (above).
|
|
2085
|
+
if (root === undefined || !/^@[^/*?[]+$/.test(prefix))
|
|
2086
|
+
return null;
|
|
2087
|
+
const rootName = root.replace(/\/+$/, '').split('/').pop();
|
|
2088
|
+
return rootName === 'node_modules' ? prefix : null;
|
|
2060
2089
|
}
|
|
2061
2090
|
/**
|
|
2062
2091
|
* Whether a backend error is the sandbox's own command deadline.
|
|
@@ -3071,24 +3100,122 @@ export function repeatingFailure(log) {
|
|
|
3071
3100
|
* During a wait the run has not ended (the exit file is read first), so a block beside a `✘` row
|
|
3072
3101
|
* is one the reporter printed inline.
|
|
3073
3102
|
*
|
|
3103
|
+
* A body for a test the request EXCLUDES is not that evidence: its failure does not count for
|
|
3104
|
+
* this request ({@link matchingExcludedTitles}), so a wait that handed it over as the diagnostic
|
|
3105
|
+
* spent a model round trip and 8 k of partial log on a test the same result says to ignore —
|
|
3106
|
+
* exactly what xr-molecule-flash-h13 (+19:06) did twice while the platform's proof was still
|
|
3107
|
+
* walking.
|
|
3108
|
+
*
|
|
3109
|
+
* With `finalOnly`, only a failure the run has FINISHED with counts; a pending retry waits.
|
|
3110
|
+
*
|
|
3074
3111
|
* @param log - A log, or the slice of one a wait reads.
|
|
3075
|
-
* @
|
|
3112
|
+
* @param excluded - The test titles the request carves out, if the caller knows them.
|
|
3113
|
+
* @param options - `finalOnly` reads only a failure the run has finished with; `noRetries` says
|
|
3114
|
+
* the command proves the run cannot retry (`--retries=0`), so its first failure is final.
|
|
3115
|
+
* @returns True when a `✘` row's own test, outside the request's exclusions, has a failure body
|
|
3116
|
+
* under it — and, with `finalOnly`, that failure is final in the log read so far.
|
|
3076
3117
|
*/
|
|
3077
|
-
export function logShowsInlineFailureBodies(log) {
|
|
3118
|
+
export function logShowsInlineFailureBodies(log, excluded = [], options = {}) {
|
|
3078
3119
|
const text = log.replace(ANSI_SGR, '');
|
|
3079
3120
|
const failed = new Set(distinctTests(failedTests(text)).map(retrylessTestKey));
|
|
3080
3121
|
if (failed.size === 0)
|
|
3081
3122
|
return false;
|
|
3082
|
-
|
|
3123
|
+
const blocks = failureBlocks(text);
|
|
3124
|
+
const rows = options.finalOnly ? resultRows(text) : [];
|
|
3125
|
+
for (const block of blocks) {
|
|
3083
3126
|
const m = FAILURE_BLOCK_HEADER.exec(block.split('\n')[0] ?? '');
|
|
3084
3127
|
if (m === null)
|
|
3085
3128
|
continue;
|
|
3086
3129
|
const { where, title } = splitTitlePath(m[1] ?? '');
|
|
3087
|
-
|
|
3130
|
+
const heading = where === '' ? title : `${where} › ${title}`;
|
|
3131
|
+
if (matchingExcludedTitles(heading, excluded).length > 0)
|
|
3132
|
+
continue;
|
|
3133
|
+
const key = retrylessTestKey({ where, title, seconds: null });
|
|
3134
|
+
if (!failed.has(key))
|
|
3135
|
+
continue;
|
|
3136
|
+
if (!options.finalOnly)
|
|
3137
|
+
return true;
|
|
3138
|
+
if (failureIsFinal({ rows, blocks, key, noRetries: options.noRetries === true }))
|
|
3088
3139
|
return true;
|
|
3089
3140
|
}
|
|
3090
3141
|
return false;
|
|
3091
3142
|
}
|
|
3143
|
+
/** The runner's retry marker on a `list`-reporter row (` (retry #1)`, `_retrySuffix`). */
|
|
3144
|
+
const RETRY_ROW_SUFFIX = /\s*\(retry #\d+\)$/;
|
|
3145
|
+
/** The separator a retried failure's body opens its own attempt with (`formatFailure`). */
|
|
3146
|
+
const RETRY_BODY_SEPARATOR = /^\s*Retry #\d+\b/m;
|
|
3147
|
+
/**
|
|
3148
|
+
* Every result row a log carries, in the order the runner printed them.
|
|
3149
|
+
*
|
|
3150
|
+
* @param log - The log (ANSI already stripped).
|
|
3151
|
+
* @returns The rows, each with where it sits, what it is called, and which attempt it is.
|
|
3152
|
+
*/
|
|
3153
|
+
function resultRows(log) {
|
|
3154
|
+
const rows = [];
|
|
3155
|
+
for (const line of log.split('\n')) {
|
|
3156
|
+
const m = LIST_RESULT_LINE.exec(line);
|
|
3157
|
+
if (!m)
|
|
3158
|
+
continue;
|
|
3159
|
+
const { where, title } = splitTitlePath(m[2]);
|
|
3160
|
+
rows.push({
|
|
3161
|
+
mark: m[1],
|
|
3162
|
+
where,
|
|
3163
|
+
title,
|
|
3164
|
+
seconds: durationSeconds(m[3], m[4]),
|
|
3165
|
+
retry: RETRY_ROW_SUFFIX.test(title),
|
|
3166
|
+
});
|
|
3167
|
+
}
|
|
3168
|
+
return rows;
|
|
3169
|
+
}
|
|
3170
|
+
/**
|
|
3171
|
+
* A failure block's test identity, keyed the way a result row is.
|
|
3172
|
+
*
|
|
3173
|
+
* @param block - One block from {@link failureBlocks}.
|
|
3174
|
+
* @returns The test key, or null when the block's header names no test.
|
|
3175
|
+
*/
|
|
3176
|
+
function failureBlockKey(block) {
|
|
3177
|
+
const m = FAILURE_BLOCK_HEADER.exec(block.split('\n')[0] ?? '');
|
|
3178
|
+
if (m === null)
|
|
3179
|
+
return null;
|
|
3180
|
+
const { where, title } = splitTitlePath(m[1] ?? '');
|
|
3181
|
+
return retrylessTestKey({ where, title, seconds: null });
|
|
3182
|
+
}
|
|
3183
|
+
/**
|
|
3184
|
+
* Whether a test's failure is FINAL in the log read so far — one the run is done with, not a
|
|
3185
|
+
* first attempt whose retry is still to come.
|
|
3186
|
+
*
|
|
3187
|
+
* A `list` run retries a failed test immediately, so the test's own next row says which attempt
|
|
3188
|
+
* the log has printed last: the same test's ` (retry #N)` row (final when that retry failed; a
|
|
3189
|
+
* flake the run absorbed when it passed), or a different test's row (no retry ran, so the failure
|
|
3190
|
+
* was final). A `Retry #N` separator in the test's body is the runner's own record that a retry
|
|
3191
|
+
* attempt ran and failed. A first attempt followed by nothing is only the last row READ — its
|
|
3192
|
+
* retry may not have printed yet — so it waits; a command that pins `--retries=0` proves there is
|
|
3193
|
+
* no retry to wait for.
|
|
3194
|
+
*
|
|
3195
|
+
* X1 xr-molecule-flash-l69 (+28:26): the deployed proof's yield handed back a first attempt
|
|
3196
|
+
* (no `Retry #` separator) that then passed on its retry, and the edit it prompted cost a
|
|
3197
|
+
* redeploy plus a whole walk. The fix is not to stop yielding — the retry-failed shape (l69's
|
|
3198
|
+
* first walk, null-fields:71) paid off — but to yield only on this one.
|
|
3199
|
+
*
|
|
3200
|
+
* @param args - The log's rows and blocks, the failing test's key, and whether the command
|
|
3201
|
+
* proves the run cannot retry.
|
|
3202
|
+
* @returns True when that test's failure is final in the log read so far.
|
|
3203
|
+
*/
|
|
3204
|
+
function failureIsFinal(args) {
|
|
3205
|
+
if (args.noRetries)
|
|
3206
|
+
return true;
|
|
3207
|
+
// The runner's own record that an attempt after the first ran and failed.
|
|
3208
|
+
if (args.blocks.some((block) => failureBlockKey(block) === args.key && RETRY_BODY_SEPARATOR.test(block)))
|
|
3209
|
+
return true;
|
|
3210
|
+
const own = args.rows.filter((row) => retrylessTestKey(row) === args.key);
|
|
3211
|
+
const last = own.at(-1);
|
|
3212
|
+
if (last === undefined)
|
|
3213
|
+
return false;
|
|
3214
|
+
if (last.retry)
|
|
3215
|
+
return last.mark === '✘';
|
|
3216
|
+
const at = args.rows.indexOf(last);
|
|
3217
|
+
return args.rows.slice(at + 1).some((row) => retrylessTestKey(row) !== args.key);
|
|
3218
|
+
}
|
|
3092
3219
|
/** How many of a repeating cause's failures the note lists before it says "and N more". */
|
|
3093
3220
|
export const REPEATING_FAILURE_LISTED = 5;
|
|
3094
3221
|
/**
|
|
@@ -4264,6 +4391,10 @@ function omittedCausesRecap(omitted, run, excluded) {
|
|
|
4264
4391
|
* invocation, in the same directory, narrowed to those tests — or null when the running command
|
|
4265
4392
|
* is not a Playwright run this can narrow.
|
|
4266
4393
|
*
|
|
4394
|
+
* A run against a DEPLOYED URL keeps the suite's own retries and tracing in its re-run
|
|
4395
|
+
* ({@link scopedRerunCommand} `suiteSettings`): the deployed measurement is the one the deploy is
|
|
4396
|
+
* graded on, and neither the platform's `--retries=0` nor its recording `--trace` belongs on it.
|
|
4397
|
+
*
|
|
4267
4398
|
* The `locations` are the paths the run's own log printed, which are relative to the directory
|
|
4268
4399
|
* that run started in, so the composer resolves them there ({@link scopedRerunCommand}): the
|
|
4269
4400
|
* command names that directory unless it already changes into one of its own, because the
|
|
@@ -4286,7 +4417,12 @@ export function rerunOfRunningSuite(run, locations, excluded = []) {
|
|
|
4286
4417
|
// The run's own directory is the base a relative failure location resolves against: the
|
|
4287
4418
|
// reporter prints it from where the runner started, and Playwright matches file arguments
|
|
4288
4419
|
// against absolute paths (xr-molecule-flash-m118 +16:34, m124 +18:38).
|
|
4289
|
-
const scoped = scopedRerunCommand(run.command, locations, excluded, run.config, run.cwd, run.env ?? []
|
|
4420
|
+
const scoped = scopedRerunCommand(run.command, locations, excluded, run.config, run.cwd, run.env ?? [],
|
|
4421
|
+
// A run against a DEPLOYED URL is re-run with the suite's own retries and tracing: that is
|
|
4422
|
+
// the measurement the deploy is graded on, and the platform's `--retries=0` plus its
|
|
4423
|
+
// `--trace=retain-on-failure` made it a stricter one — on X1 xr-molecule-flash-h15 the
|
|
4424
|
+
// recording alone turned three budget-bound deployed tests into timeouts.
|
|
4425
|
+
{ suiteSettings: suiteCommandTarget(run.command) !== 'local' });
|
|
4290
4426
|
if (scoped === run.command)
|
|
4291
4427
|
return null;
|
|
4292
4428
|
if (!run.cwd || commandSegments(withoutHeredocs(run.command)).some((s) => s.program === 'cd'))
|