@molecule/api-ai-tools 1.9.15 → 1.9.18
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 +340 -23
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/output-filter.d.ts +5 -1
- package/dist/output-filter.d.ts.map +1 -1
- package/dist/output-filter.js +12 -3
- package/dist/server-command.d.ts +73 -0
- package/dist/server-command.d.ts.map +1 -0
- package/dist/server-command.js +180 -0
- package/dist/suite-overlap.d.ts +20 -1
- package/dist/suite-overlap.d.ts.map +1 -1
- package/dist/suite-overlap.js +48 -3
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +88 -7
- package/dist/trace-artifacts.d.ts +135 -10
- package/dist/trace-artifacts.d.ts.map +1 -1
- package/dist/trace-artifacts.js +797 -125
- package/dist/types.d.ts +39 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utilities.d.ts +52 -1
- package/dist/utilities.d.ts.map +1 -1
- package/dist/utilities.js +143 -23
- package/package.json +1 -1
|
@@ -89,6 +89,14 @@ export interface TraceRequest {
|
|
|
89
89
|
* credential-less request from one whose credential is a cookie.
|
|
90
90
|
*/
|
|
91
91
|
sentCookie?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* The trace member this request came from — the browser context Playwright numbered (`1`, `3`).
|
|
94
|
+
* A test that opens a second browser context writes one trace member per context, and a test's
|
|
95
|
+
* request is only evidence about the page it was made on (xr-molecule-flash-m160).
|
|
96
|
+
*/
|
|
97
|
+
context?: string;
|
|
98
|
+
/** The page the request was made on, as the HAR entry's `pageref` records it. */
|
|
99
|
+
pageId?: string;
|
|
92
100
|
}
|
|
93
101
|
/**
|
|
94
102
|
* The test's LAST user action before the failing assertion, and the requests it caused.
|
|
@@ -125,6 +133,51 @@ export interface TraceAction {
|
|
|
125
133
|
start: number;
|
|
126
134
|
/** When it finished, or null when the run ended before it did. */
|
|
127
135
|
end: number | null;
|
|
136
|
+
/** The browser context the action was recorded in (`1`, `3`), when the trace names one. */
|
|
137
|
+
context?: string;
|
|
138
|
+
/** The page the action ran on, from the frame snapshot the trace paired with it. */
|
|
139
|
+
pageId?: string;
|
|
140
|
+
/** The frame the action ran in, from the same snapshot. */
|
|
141
|
+
frameId?: string;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* What a browser context OTHER than the failing page's recorded — the second context a
|
|
145
|
+
* two-context test opens for its own setup.
|
|
146
|
+
*
|
|
147
|
+
* Its actions and requests belong to a different page: a request it sent is not the failing
|
|
148
|
+
* action's effect, and the URL it left the page on is not where the assertion's page went
|
|
149
|
+
* (xr-molecule-flash-m160: the helper context created an article in an editor page while the
|
|
150
|
+
* primary page moved to the profile the assertion then failed on, and the note called the
|
|
151
|
+
* editor page the failing page).
|
|
152
|
+
*/
|
|
153
|
+
export interface TraceContextEvidence {
|
|
154
|
+
/** The trace member's context id (`3`). */
|
|
155
|
+
context: string;
|
|
156
|
+
/**
|
|
157
|
+
* The app requests that context made, bounded — failures first, then the answered ones — each
|
|
158
|
+
* labelled by the note as set-up work rather than the failing page's.
|
|
159
|
+
*/
|
|
160
|
+
requests: TraceRequest[];
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* The text a failing assertion waited for that a same-page API response carried and the page never
|
|
164
|
+
* rendered.
|
|
165
|
+
*
|
|
166
|
+
* The assertion's own error names the text (a `has-text(…)` / `getByText(…)` / `toContainText(…)`
|
|
167
|
+
* argument), and the trace's network log holds the response that contained it. That pair is the
|
|
168
|
+
* whole diagnosis: the API returned the value and the page dropped it before rendering, so the cut
|
|
169
|
+
* is in the component that maps the response onto the list — not in the API, the route or the
|
|
170
|
+
* selector. xr-molecule-flash-m169 (+13:09) spent its fix rounds on the wrong component and on a
|
|
171
|
+
* markup detail while `GET /api/tags` was returning the missing "trending" and `PopularTags`
|
|
172
|
+
* sliced the response to its first 20 entries (the m99 top-N class, in the frontend).
|
|
173
|
+
*/
|
|
174
|
+
export interface TraceMissingText {
|
|
175
|
+
/** The text the assertion waited for (`trending`). */
|
|
176
|
+
text: string;
|
|
177
|
+
/** The method of the response that carried it (`GET`). */
|
|
178
|
+
method: string;
|
|
179
|
+
/** The path of the response that carried it (`/api/tags`). */
|
|
180
|
+
path: string;
|
|
128
181
|
}
|
|
129
182
|
/** What one trace says: the test it belongs to, the requests it made, and its console lines. */
|
|
130
183
|
export interface TraceArtifact {
|
|
@@ -153,19 +206,55 @@ export interface TraceArtifact {
|
|
|
153
206
|
*/
|
|
154
207
|
console: string[];
|
|
155
208
|
/**
|
|
156
|
-
* The test's LAST user action before the failing assertion
|
|
157
|
-
* row leads with, when the trace carries the action times
|
|
209
|
+
* The test's LAST user action before the failing assertion ON THE PAGE THE ASSERTION RAN ON, and
|
|
210
|
+
* the requests it caused — what the row leads with, when the trace carries the action times
|
|
211
|
+
* ({@link TraceLastAction}).
|
|
212
|
+
*
|
|
213
|
+
* A test that opens a second browser context writes one trace member per context, and the
|
|
214
|
+
* archive does not order them by time: the last action of the concatenation may belong to the
|
|
215
|
+
* helper's page while the assertion failed on another (xr-molecule-flash-m160). The action is
|
|
216
|
+
* therefore the failing page's own, and its `pageAfter` is that page's last frame snapshot.
|
|
158
217
|
*
|
|
159
|
-
* Absent on traces read before this field existed,
|
|
160
|
-
*
|
|
218
|
+
* Absent on traces read before this field existed, on traces whose network entries recorded no
|
|
219
|
+
* clock, and on a trace with more than one used context whose failing page cannot be identified
|
|
220
|
+
* ({@link TraceArtifact.unattributed}) — the row then falls back to {@link lead}, or to no
|
|
221
|
+
* causal claim at all.
|
|
161
222
|
*/
|
|
162
223
|
lastAction?: TraceLastAction;
|
|
163
224
|
/**
|
|
164
225
|
* The page's own actions in the order the trace recorded them, bounded — what a test that ran
|
|
165
226
|
* out of a per-test budget spends its time on. A test that repeats one action prints it once per
|
|
166
|
-
* repeat, so the gap between two starts is one repeat's measured cost.
|
|
227
|
+
* repeat, so the gap between two starts is one repeat's measured cost. Scoped to the page the
|
|
228
|
+
* failing assertion ran on; a second browser context's actions are not this test's page.
|
|
167
229
|
*/
|
|
168
230
|
actions: TraceAction[];
|
|
231
|
+
/**
|
|
232
|
+
* True when the trace held more than one browser context and none of them could be tied to the
|
|
233
|
+
* failing assertion's page. The note then makes no causal claim — no "the test's last action",
|
|
234
|
+
* no "the page stayed at …" — rather than attributing one context's click and URL to another
|
|
235
|
+
* context's assertion (xr-molecule-flash-m160).
|
|
236
|
+
*/
|
|
237
|
+
unattributed?: true;
|
|
238
|
+
/**
|
|
239
|
+
* The browser contexts the test opened BESIDES the failing assertion's page, with the app
|
|
240
|
+
* requests each made. Kept apart so the note can name them as set-up work instead of printing
|
|
241
|
+
* their requests as the failing action's effects (xr-molecule-flash-m160).
|
|
242
|
+
*
|
|
243
|
+
* Absent when the trace recorded one context only, when every other context made no request,
|
|
244
|
+
* and on traces read before this field existed.
|
|
245
|
+
*/
|
|
246
|
+
otherContexts?: TraceContextEvidence[];
|
|
247
|
+
/**
|
|
248
|
+
* The text the failing assertion waited for and a same-page API response carried, when the trace
|
|
249
|
+
* recorded both. The note leads with it: the value reached the browser and the page did not
|
|
250
|
+
* render it, so the next read is where that response is mapped — never the API or the selector
|
|
251
|
+
* (xr-molecule-flash-m169).
|
|
252
|
+
*
|
|
253
|
+
* Absent when the assertion waited for no text (a text-free selector, a strict-mode violation),
|
|
254
|
+
* when no page-scoped `fetch`/`xhr` answered 2xx/3xx with the text in its body, and on traces
|
|
255
|
+
* read before this field existed.
|
|
256
|
+
*/
|
|
257
|
+
missingText?: TraceMissingText;
|
|
169
258
|
}
|
|
170
259
|
/** How many traces one read reports, newest first. */
|
|
171
260
|
export declare const MAX_TRACE_ARTIFACTS = 12;
|
|
@@ -213,6 +302,13 @@ export declare const TRACE_NOTE_LEAD_GOT_CHARS = 200;
|
|
|
213
302
|
* test's trace holds the whole page load. A request with no response and NO error text was aborted
|
|
214
303
|
* or still in flight when the test ended; it is kept too, but as what it is, not as a failure.
|
|
215
304
|
*
|
|
305
|
+
* A trace.zip holds ONE trace member per browser context the test used (beside the runner's own
|
|
306
|
+
* `test.trace`), and the archive's member order is not the test's chronology. Each member is read
|
|
307
|
+
* as its own context: actions and requests keep their context id, requests and frame snapshots
|
|
308
|
+
* keep the pageId Playwright records, and the failing assertion's page — the page its own step id
|
|
309
|
+
* ran on — decides which actions, snapshots and requests become the test's row. What the test's
|
|
310
|
+
* other browser contexts recorded is reported apart, as `otherContexts` (xr-molecule-flash-m160).
|
|
311
|
+
*
|
|
216
312
|
* A request answered 4xx by the app's OWN API also keeps what the page SENT and the first of what
|
|
217
313
|
* came back: Playwright stores either inline (`text`) or in a resource entry (`_file`), and both
|
|
218
314
|
* are read. That is where a wrapped body shows: xr-molecule-flash-m111's helper passed
|
|
@@ -314,6 +410,14 @@ export interface TraceRunReport {
|
|
|
314
410
|
* contradicts it.
|
|
315
411
|
*/
|
|
316
412
|
productionBuildAdvised?: boolean;
|
|
413
|
+
/**
|
|
414
|
+
* The endpoints the app's own auth config names for a credential exchange — a login, a
|
|
415
|
+
* registration, a token endpoint (`loginEndpoint: '/users/login'`, resolved from the app's
|
|
416
|
+
* source). A 401/403 there answers credentials the app was ASKED to check, never a token the
|
|
417
|
+
* client failed to attach, so the note says so even when the path is mounted somewhere unusual.
|
|
418
|
+
* Empty when the caller could not read the app's config.
|
|
419
|
+
*/
|
|
420
|
+
authEndpoints?: readonly string[];
|
|
317
421
|
}
|
|
318
422
|
/**
|
|
319
423
|
* The note a failed suite run's result carries: what each failing test's page actually sent, and
|
|
@@ -346,6 +450,14 @@ export interface TraceRunReport {
|
|
|
346
450
|
* (answered 201, the page still rendering signed-out) never appeared. With no action clock, the
|
|
347
451
|
* row falls back to {@link TraceArtifact.lead}: the page's last answered fetch/xhr.
|
|
348
452
|
*
|
|
453
|
+
* The action, the URL and the requests are the FAILING ASSERTION'S PAGE's ({@link
|
|
454
|
+
* TraceArtifact.lastAction}), never the archive's last context: a test that creates its data in a
|
|
455
|
+
* second browser context writes that context's click and `/editor` snapshot into the same zip, and
|
|
456
|
+
* reading the concatenation made them the failing page (xr-molecule-flash-m160). The other
|
|
457
|
+
* contexts' requests are named separately as set-up work. When the trace holds more than one used
|
|
458
|
+
* context and the assertion's page cannot be identified, the note lists the requests and makes NO
|
|
459
|
+
* causal claim — no "the test's last action", no "the page stayed at …" — instead of merging them.
|
|
460
|
+
*
|
|
349
461
|
* WHICH rows it spends is evidence, not artifact order (xr-molecule-flash-m112 +53:46): a row
|
|
350
462
|
* needs a recorded response, a real failure or a console line ({@link traceRowEvidence}), rows are
|
|
351
463
|
* deduplicated by the test's location, and they are ordered real failure → repeated from an
|
|
@@ -384,6 +496,13 @@ export interface TraceRunReport {
|
|
|
384
496
|
* xr-molecule-flash-m148 (+29:18) hit this exactly: six local walks read
|
|
385
497
|
* `POST …/favorite → 401 {"errors":{"token":["is missing"]}}` as a handler bug.
|
|
386
498
|
*
|
|
499
|
+
* A credential EXCHANGE (a login/registration/token endpoint, read from the app's auth config, the
|
|
500
|
+
* path or the body) is never that shape: the request's purpose is to obtain a token, so an absent
|
|
501
|
+
* header is not a client omission ({@link isCredentialExchange}). xr-molecule-flash-m165's login
|
|
502
|
+
* 401 was answered as one for 40 minutes; the trace also showed the suite's SET-UP traffic going
|
|
503
|
+
* to `https://api.realworld.show/api` instead of this app, which is what the note leads with
|
|
504
|
+
* ({@link foreignOriginApiRequests}).
|
|
505
|
+
*
|
|
387
506
|
* @param items - The traces {@link parseTraceArtifacts} read.
|
|
388
507
|
* @param target - Where the run went — the deployed host, as the note names it.
|
|
389
508
|
* @param earlierFailures - The failing `file:line`s earlier walks of this suite left, so a repeat
|
|
@@ -424,15 +543,21 @@ export interface DiagnosisTraceRewrite {
|
|
|
424
543
|
change: string | null;
|
|
425
544
|
}
|
|
426
545
|
/**
|
|
427
|
-
* The command a
|
|
546
|
+
* The command a Playwright run needs to leave a readable trace behind, when the suite's config
|
|
428
547
|
* would record none.
|
|
429
548
|
*
|
|
430
549
|
* The failing tests' requests are only readable if the run wrote them down (see the module doc),
|
|
431
550
|
* and the config is where the decision about that lives — the platform does not edit the suite's
|
|
432
|
-
* config, so it passes the flag instead,
|
|
433
|
-
*
|
|
434
|
-
*
|
|
435
|
-
*
|
|
551
|
+
* config, so it passes the flag instead, on every Playwright run that starts tests and does not
|
|
552
|
+
* already decide its own `--trace`. That includes the whole-suite proof run, which an earlier
|
|
553
|
+
* version of this function skipped on the reasoning that its flags are graded: the flag changes
|
|
554
|
+
* what is RETAINED, not what passes. `retain-on-failure` keeps the trace only of a test that
|
|
555
|
+
* fails — Playwright records it and deletes it when the test passes (playwright's
|
|
556
|
+
* `_shouldAbandonTrace` unlinks the temporary trace files of a passing test) — so a green proof
|
|
557
|
+
* run keeps nothing extra. A failing one keeps the network log its failures need.
|
|
558
|
+
* xr-molecule-flash-m163 (+24:58) is why the proof run is no longer skipped: its one deployed
|
|
559
|
+
* failure left only an `error-context.md`, the executor spent the next calls hunting a `trace.zip`
|
|
560
|
+
* that could not exist, and then shipped a guessed fix.
|
|
436
561
|
*
|
|
437
562
|
* @param args - The command, the directory it starts in, and the backend's file read.
|
|
438
563
|
* @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;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;
|
|
1
|
+
{"version":3,"file":"trace-artifacts.d.ts","sourceRoot":"","sources":["../src/trace-artifacts.ts"],"names":[],"mappings":"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"}
|