@molecule/api-ai-tools 1.14.3 → 1.14.5
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 +243 -189
- package/dist/browser-probe.d.ts +4 -4
- package/dist/browser-probe.d.ts.map +1 -1
- package/dist/browser-probe.js +5 -5
- package/dist/command-position.d.ts +15 -16
- package/dist/command-position.d.ts.map +1 -1
- package/dist/command-position.js +21 -23
- package/dist/cut-run.d.ts +9 -9
- package/dist/cut-run.js +6 -6
- package/dist/failure-kind.d.ts +6 -6
- package/dist/failure-kind.js +6 -6
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/inline-script.d.ts +5 -5
- package/dist/inline-script.js +6 -6
- package/dist/line-diff.d.ts +2 -3
- package/dist/line-diff.d.ts.map +1 -1
- package/dist/line-diff.js +2 -3
- package/dist/no-test-run.d.ts +5 -5
- package/dist/no-test-run.d.ts.map +1 -1
- package/dist/no-test-run.js +9 -8
- package/dist/output-filter.d.ts +2 -2
- package/dist/output-filter.js +2 -2
- package/dist/pipeline-exit-note.d.ts +1 -1
- package/dist/pipeline-exit-note.js +1 -1
- package/dist/playwright-report.d.ts +1 -1
- package/dist/playwright-report.js +1 -1
- package/dist/server-command.d.ts +2 -2
- package/dist/server-command.js +2 -2
- package/dist/sleep-peek.d.ts +1 -1
- package/dist/sleep-peek.js +1 -1
- package/dist/suite-overlap.d.ts +24 -25
- package/dist/suite-overlap.d.ts.map +1 -1
- package/dist/suite-overlap.js +41 -43
- package/dist/tools.d.ts +26 -28
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +114 -72
- package/dist/trace-artifacts.d.ts +73 -65
- package/dist/trace-artifacts.d.ts.map +1 -1
- package/dist/trace-artifacts.js +76 -77
- package/dist/types.d.ts +5 -5
- package/dist/utilities.d.ts +128 -92
- package/dist/utilities.d.ts.map +1 -1
- package/dist/utilities.js +298 -143
- package/package.json +2 -2
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* What a failed Playwright run's own trace files say about the requests its page made — read
|
|
3
3
|
* headlessly, in the sandbox, from the `trace.zip` files the run left behind.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* A run ended with three failures against the
|
|
6
6
|
* deployed URL — `social.spec.ts:22` and `:153` waited for a "Unfollow" button that never appeared
|
|
7
7
|
* after the click, and `url-navigation.spec.ts:234` was bounced to `/login` mid-test — and nothing
|
|
8
8
|
* in the run's result said why. The app's own `toggleFollow` swallowed the error of its request
|
|
@@ -52,7 +52,7 @@ export interface TraceRequest {
|
|
|
52
52
|
* What the page SENT, for a 4xx answered by the app's own API — bounded (see
|
|
53
53
|
* {@link MAX_TRACED_BODY_CHARS}). A body wrapped as `{"data":{…}}` is visible here in one line:
|
|
54
54
|
* app-http's verbs take the body as their second argument, so a helper that passes
|
|
55
|
-
* `{ data: body }` there ships the wrapper
|
|
55
|
+
* `{ data: body }` there ships the wrapper.
|
|
56
56
|
*/
|
|
57
57
|
sent?: string;
|
|
58
58
|
/** What came back for that 4xx, bounded the same way — the API's own error body. */
|
|
@@ -76,7 +76,7 @@ export interface TraceRequest {
|
|
|
76
76
|
* A 401 cannot be read without this: the API's own body said
|
|
77
77
|
* `{"errors":{"token":["is missing"]}}` while the note told the run to read the API handler,
|
|
78
78
|
* when the header's absence proved the CLIENT never attached the token
|
|
79
|
-
*
|
|
79
|
+
* A header present moves the answer to the server: the API
|
|
80
80
|
* refused a token it was sent.
|
|
81
81
|
*/
|
|
82
82
|
sentAuthorization?: boolean;
|
|
@@ -95,7 +95,7 @@ export interface TraceRequest {
|
|
|
95
95
|
/**
|
|
96
96
|
* The trace member this request came from — the browser context Playwright numbered (`1`, `3`).
|
|
97
97
|
* A test that opens a second browser context writes one trace member per context, and a test's
|
|
98
|
-
* request is only evidence about the page it was made on
|
|
98
|
+
* request is only evidence about the page it was made on.
|
|
99
99
|
*/
|
|
100
100
|
context?: string;
|
|
101
101
|
/** The page the request was made on, as the HAR entry's `pageref` records it. */
|
|
@@ -106,7 +106,7 @@ export interface TraceRequest {
|
|
|
106
106
|
*
|
|
107
107
|
* An assertion after a navigation is not explained by the page's last call (`GET /api/tags` on
|
|
108
108
|
* whatever page the app redirected to); it is explained by what the action the test took sent and
|
|
109
|
-
* what came back (
|
|
109
|
+
* what came back (13 then 12 failing tests, every trace row leading with
|
|
110
110
|
* `GET /api/tags → 200`, while the register `POST /api/users` and its answer — the fact that
|
|
111
111
|
* explains the signed-out page — was never shown).
|
|
112
112
|
*/
|
|
@@ -145,7 +145,7 @@ export interface TraceAction {
|
|
|
145
145
|
/**
|
|
146
146
|
* The selector a `fill`/`type`/`selectOption` acted on (`textarea[name="bio"]`), from the
|
|
147
147
|
* trace's own params. Kept so the note can compare what the test typed with what the page
|
|
148
|
-
* submitted (
|
|
148
|
+
* submitted (a field typed into and sent empty).
|
|
149
149
|
*/
|
|
150
150
|
selector?: string;
|
|
151
151
|
/**
|
|
@@ -160,7 +160,7 @@ export interface TraceAction {
|
|
|
160
160
|
*
|
|
161
161
|
* Its actions and requests belong to a different page: a request it sent is not the failing
|
|
162
162
|
* action's effect, and the URL it left the page on is not where the assertion's page went
|
|
163
|
-
* (
|
|
163
|
+
* (the helper context created an article in an editor page while the
|
|
164
164
|
* primary page moved to the profile the assertion then failed on, and the note called the
|
|
165
165
|
* editor page the failing page).
|
|
166
166
|
*/
|
|
@@ -181,13 +181,13 @@ export interface TraceContextEvidence {
|
|
|
181
181
|
* argument), and the trace's network log holds the response that contained it. That pair is the
|
|
182
182
|
* whole diagnosis: the API returned the value and the page dropped it before rendering, so the cut
|
|
183
183
|
* is in the component that maps the response onto the list — not in the API, the route or the
|
|
184
|
-
* selector.
|
|
184
|
+
* selector. One run spent its fix rounds on the wrong component and on a
|
|
185
185
|
* markup detail while `GET /api/tags` was returning the missing "trending" and `PopularTags`
|
|
186
|
-
* sliced the response to its first 20 entries (
|
|
186
|
+
* sliced the response to its first 20 entries (a top-N cut, in the frontend).
|
|
187
187
|
*
|
|
188
188
|
* The text must be a value the response held, never a substring of one: a whole JSON string or
|
|
189
189
|
* number value, or a word bounded by non-alphanumerics. A text of 2 characters or fewer, or one
|
|
190
|
-
* made of digits only, must be a whole JSON value.
|
|
190
|
+
* made of digits only, must be a whole JSON value. A pagination assertion
|
|
191
191
|
* waited for "2" and the raw substring hit `pag1792394785820` in a tags response, so the note led
|
|
192
192
|
* with a response that had nothing to do with the failure; when no response holds the text that
|
|
193
193
|
* way, the field is absent and the note leads with its next finding.
|
|
@@ -204,7 +204,7 @@ export interface TraceMissingText {
|
|
|
204
204
|
* of the collection that started after the last navigation, and the text is absent from the
|
|
205
205
|
* page's own failure snapshot ({@link traceArtifactsScript}).
|
|
206
206
|
*
|
|
207
|
-
* Absent when the evidence is weaker — a creation POST carried the text (
|
|
207
|
+
* Absent when the evidence is weaker — a creation POST carried the text (a button failure
|
|
208
208
|
* was not a missing article), the snapshot still showed it, or the trace recorded no clock —
|
|
209
209
|
* and the note then says only that a response contained the text.
|
|
210
210
|
*/
|
|
@@ -214,7 +214,7 @@ export interface TraceMissingText {
|
|
|
214
214
|
* A write the trace recorded answering a boolean field, and a LATER GET of the same resource
|
|
215
215
|
* answering the opposite for that field.
|
|
216
216
|
*
|
|
217
|
-
* This is the pair that reads as a frontend race and is not one:
|
|
217
|
+
* This is the pair that reads as a frontend race and is not one: a follow
|
|
218
218
|
* test sent `POST /api/profiles/:username/follow` and the API answered
|
|
219
219
|
* `{"profile":{…,"following":true}}`, then a `GET /api/profiles/:username` answered
|
|
220
220
|
* `{"profile":{…,"following":false}}` — the READ route never saw the viewer, so it hydrated
|
|
@@ -284,7 +284,7 @@ export interface TraceCountMatch {
|
|
|
284
284
|
text?: string;
|
|
285
285
|
/** Its ancestors, outermost first (`body > div.comment-form > div.card`), bounded. */
|
|
286
286
|
path?: string;
|
|
287
|
-
/** True when a `<form>` is one of its ancestors — the
|
|
287
|
+
/** True when a `<form>` is one of its ancestors — the shape of an extra form-internal match. */
|
|
288
288
|
inForm?: true;
|
|
289
289
|
}
|
|
290
290
|
/**
|
|
@@ -292,7 +292,7 @@ export interface TraceCountMatch {
|
|
|
292
292
|
* `expect(locator).toHaveCount(n)`), with the locator the trace recorded and, when the failure
|
|
293
293
|
* snapshot can supply them, the elements it matched.
|
|
294
294
|
*
|
|
295
|
-
*
|
|
295
|
+
* A `comments.spec.ts:86` assertion sat on `Expected: 3 / Received: 4` for ~30
|
|
296
296
|
* minutes and three whole suite walks: the helper counted `.card:not(.comment-form) .card-block`,
|
|
297
297
|
* the app's comment form was a `.comment-form` wrapper around a plain `.card`, and the form's own
|
|
298
298
|
* `.card-block` made the fourth. The trace had the selector (its `Frame.queryCount` entry) and the
|
|
@@ -337,7 +337,7 @@ export interface TraceCountMismatch {
|
|
|
337
337
|
* One method+path a test's page sent many times — the trace of a render loop.
|
|
338
338
|
*
|
|
339
339
|
* Counted over EVERY network entry the failing page recorded, before the trace reader's per-trace
|
|
340
|
-
* cap and its method+path+status dedupe, because those two bounds are exactly what hid
|
|
340
|
+
* cap and its method+path+status dedupe, because those two bounds are exactly what hid a
|
|
341
341
|
* 2,106-request loop: the note could only ever see four of them.
|
|
342
342
|
*/
|
|
343
343
|
interface TraceRequestRepeat {
|
|
@@ -367,7 +367,7 @@ export interface TraceArtifact {
|
|
|
367
367
|
* action caused ({@link TraceArtifact.lastAction}), else — on a trace with no action clock — the
|
|
368
368
|
* trace's LAST `fetch`/`xhr` in recording order, else its document. It leads the note's row when
|
|
369
369
|
* {@link lastAction} is absent, because a click that changed nothing is explained by the request
|
|
370
|
-
* the click sent and what came back —
|
|
370
|
+
* the click sent and what came back — a Follow click sent
|
|
371
371
|
* `DELETE /api/profiles/x/follow → 200` (its `following` state was stale) and the note listed only
|
|
372
372
|
* the test's earlier, answered requests.
|
|
373
373
|
*
|
|
@@ -387,7 +387,7 @@ export interface TraceArtifact {
|
|
|
387
387
|
*
|
|
388
388
|
* A test that opens a second browser context writes one trace member per context, and the
|
|
389
389
|
* archive does not order them by time: the last action of the concatenation may belong to the
|
|
390
|
-
* helper's page while the assertion failed on another
|
|
390
|
+
* helper's page while the assertion failed on another. The action is
|
|
391
391
|
* therefore the failing page's own, and its `pageAfter` is that page's last frame snapshot.
|
|
392
392
|
*
|
|
393
393
|
* Absent on traces read before this field existed, on traces whose network entries recorded no
|
|
@@ -407,13 +407,13 @@ export interface TraceArtifact {
|
|
|
407
407
|
* True when the trace held more than one browser context and none of them could be tied to the
|
|
408
408
|
* failing assertion's page. The note then makes no causal claim — no "the test's last action",
|
|
409
409
|
* no "the page stayed at …" — rather than attributing one context's click and URL to another
|
|
410
|
-
* context's assertion
|
|
410
|
+
* context's assertion.
|
|
411
411
|
*/
|
|
412
412
|
unattributed?: true;
|
|
413
413
|
/**
|
|
414
414
|
* The browser contexts the test opened BESIDES the failing assertion's page, with the app
|
|
415
415
|
* requests each made. Kept apart so the note can name them as set-up work instead of printing
|
|
416
|
-
* their requests as the failing action's effects
|
|
416
|
+
* their requests as the failing action's effects.
|
|
417
417
|
*
|
|
418
418
|
* Absent when the trace recorded one context only, when every other context made no request,
|
|
419
419
|
* and on traces read before this field existed.
|
|
@@ -422,8 +422,7 @@ export interface TraceArtifact {
|
|
|
422
422
|
/**
|
|
423
423
|
* The text the failing assertion waited for and a same-page API response carried, when the trace
|
|
424
424
|
* recorded both. The note leads with it: the value reached the browser and the page did not
|
|
425
|
-
* render it, so the next read is where that response is mapped — never the API or the selector
|
|
426
|
-
* (xr-molecule-flash-m169).
|
|
425
|
+
* render it, so the next read is where that response is mapped — never the API or the selector.
|
|
427
426
|
*
|
|
428
427
|
* Absent when the assertion waited for no text (a text-free selector, a strict-mode violation),
|
|
429
428
|
* when no page-scoped `fetch`/`xhr` answered 2xx/3xx with the text in its body, and on traces
|
|
@@ -432,7 +431,8 @@ export interface TraceArtifact {
|
|
|
432
431
|
missingText?: TraceMissingText;
|
|
433
432
|
/**
|
|
434
433
|
* A write's answer a later GET of the same resource contradicted — the read route does not see
|
|
435
|
-
* the viewer (
|
|
434
|
+
* the viewer (a `following` flag that reads as `false`). The note leads with it and sends the
|
|
435
|
+
* run at
|
|
436
436
|
* the route's middleware, not the page's state handling.
|
|
437
437
|
*
|
|
438
438
|
* Absent when no write and later read in the trace answered the same boolean field differently,
|
|
@@ -443,19 +443,19 @@ export interface TraceArtifact {
|
|
|
443
443
|
* A visibility failure whose locator RESOLVED into an empty box — Playwright's "hidden" — with
|
|
444
444
|
* the element's children read from the failure snapshot ({@link TraceHiddenBox}). The note uses
|
|
445
445
|
* it to name why the box is empty (an `<img>` with no CSS size, a textless element) instead of
|
|
446
|
-
* leaving the run to probe computed styles
|
|
446
|
+
* leaving the run to probe computed styles.
|
|
447
447
|
*/
|
|
448
448
|
hiddenBox?: TraceHiddenBox;
|
|
449
449
|
/**
|
|
450
450
|
* A failing assertion that compared a locator count, with the locator the trace recorded and the
|
|
451
451
|
* elements its failure snapshot matched ({@link TraceCountMismatch}). The row prints them, so a
|
|
452
452
|
* count that is off by one names the extra element instead of leaving the run to probe for it
|
|
453
|
-
* (
|
|
453
|
+
* (a 30-minute `Expected: 3 / Received: 4` hunt).
|
|
454
454
|
*/
|
|
455
455
|
countMismatch?: TraceCountMismatch;
|
|
456
456
|
/**
|
|
457
457
|
* The method+path groups this test's page sent {@link TRACE_NOTE_LOOP_REPEATS} times or more,
|
|
458
|
-
* most-repeated first — a render loop the note leads with (
|
|
458
|
+
* most-repeated first — a render loop the note leads with (2,106
|
|
459
459
|
* `GET /api/articles/<slug>` in one test, printed as four identical `→ 200` lines). Counted over
|
|
460
460
|
* every network entry of the failing page, not the capped {@link TraceArtifact.requests} list.
|
|
461
461
|
*
|
|
@@ -495,7 +495,7 @@ export declare const MAX_TRACE_NOTE_REQUESTS = 4;
|
|
|
495
495
|
/**
|
|
496
496
|
* How many times ONE test may send the same method+path before the note calls it a render loop.
|
|
497
497
|
*
|
|
498
|
-
*
|
|
498
|
+
* An Editor effect with `[seeded, slug, t]` in its
|
|
499
499
|
* dependency list re-fetched `GET /api/articles/<slug>` 2,106 times in one test. The trace reader
|
|
500
500
|
* caps and de-duplicates its request list, so the note printed four identical `→ 200` lines and
|
|
501
501
|
* the run patched the component's seeding, rebuilt and re-ran before unzipping the trace by hand.
|
|
@@ -537,11 +537,11 @@ export declare const TRACE_NOTE_LEAD_GOT_CHARS = 200;
|
|
|
537
537
|
* as its own context: actions and requests keep their context id, requests and frame snapshots
|
|
538
538
|
* keep the pageId Playwright records, and the failing assertion's page — the page its own step id
|
|
539
539
|
* ran on — decides which actions, snapshots and requests become the test's row. What the test's
|
|
540
|
-
* other browser contexts recorded is reported apart, as `otherContexts
|
|
540
|
+
* other browser contexts recorded is reported apart, as `otherContexts`.
|
|
541
541
|
*
|
|
542
542
|
* A request answered 4xx by the app's OWN API also keeps what the page SENT and the first of what
|
|
543
543
|
* came back: Playwright stores either inline (`text`) or in a resource entry (`_file`), and both
|
|
544
|
-
* are read. That is where a wrapped body shows:
|
|
544
|
+
* are read. That is where a wrapped body shows: a helper passed
|
|
545
545
|
* `{ data: body }` as app-http's second argument, so every POST/PUT was `{"data":{…}}` and the API
|
|
546
546
|
* validated `{}`. Status alone said only "422".
|
|
547
547
|
*
|
|
@@ -572,7 +572,7 @@ export declare function isStaticAssetRequest(request: TraceRequest): boolean;
|
|
|
572
572
|
* Whether a trace recorded a failed response or a request error other than cancellation.
|
|
573
573
|
*
|
|
574
574
|
* A 404 on a static asset is excepted: `/sw.js` and `/fonts/*` 404 on an app that never shipped
|
|
575
|
-
* them, and naming one as a failure sent
|
|
575
|
+
* them, and naming one as a failure sent a run into writing the caching worker it had asked about.
|
|
576
576
|
* A 5xx on an asset, or a network error, still counts. A request error alone does not locate
|
|
577
577
|
* the cause in the server: the browser or network may have rejected the request.
|
|
578
578
|
*
|
|
@@ -583,7 +583,7 @@ export declare function failedRequest(request: TraceRequest): boolean;
|
|
|
583
583
|
/**
|
|
584
584
|
* Whether a trace recorded no response and no error other than cancellation. The request may
|
|
585
585
|
* have been pending or cancelled when recording ended; the trace does not establish whether
|
|
586
|
-
* the endpoint stalled. A shell request is not evidence about the step
|
|
586
|
+
* the endpoint stalled. A shell request is not evidence about the step.
|
|
587
587
|
*
|
|
588
588
|
* @param request - One request a trace recorded.
|
|
589
589
|
* @returns True when the request's missing response is inconclusive and worth naming.
|
|
@@ -595,12 +595,12 @@ export declare function unansweredRequest(request: TraceRequest): boolean;
|
|
|
595
595
|
* the navigation timed out.
|
|
596
596
|
*
|
|
597
597
|
* The page shell's own incidental requests (`/sw.js`, the manifest, a favicon, a font) are
|
|
598
|
-
* excepted for the reason {@link isStaticAssetRequest} documents:
|
|
599
|
-
*
|
|
600
|
-
*
|
|
601
|
-
*
|
|
602
|
-
*
|
|
603
|
-
*
|
|
598
|
+
* excepted for the reason {@link isStaticAssetRequest} documents: an aborted `/sw.js` once sent a
|
|
599
|
+
* run to write a caching service worker. A pending `/assets/*.css` is different — the navigation
|
|
600
|
+
* blocks on it, so it is the reason `page.goto` ran out of time rather than one of the app's API
|
|
601
|
+
* calls (three deployed `page.goto` timeouts on tests that pass locally, one 88 KB stylesheet
|
|
602
|
+
* fetch measured at 27 s, and the failing tests' traces each holding the never-answered CSS while
|
|
603
|
+
* the note said "the cause is in the page").
|
|
604
604
|
*
|
|
605
605
|
* @param request - One request a trace recorded.
|
|
606
606
|
* @returns True when the request is a document subresource that never finished.
|
|
@@ -610,8 +610,8 @@ export declare function stalledDocumentSubresource(request: TraceRequest): boole
|
|
|
610
610
|
* What the runner's own report says about ONE failing test: where the test is declared, which
|
|
611
611
|
* Playwright call its failure names, and the per-test deadline the failure measured against.
|
|
612
612
|
*
|
|
613
|
-
* A trace cannot tell a navigation that ran out of budget from a selector wait that did.
|
|
614
|
-
*
|
|
613
|
+
* A trace cannot tell a navigation that ran out of budget from a selector wait that did. A 15 s
|
|
614
|
+
* `page.waitForSelector` timeout can leave a trace whose `Frame.goto`
|
|
615
615
|
* never finished (the test was cut off mid-navigation) with a `/src/components/*.tsx` module still
|
|
616
616
|
* pending when the context closed — and the note read that as an asset hang, then sent the run to
|
|
617
617
|
* re-run the same tests unchanged against the same dev server while the same result's
|
|
@@ -652,7 +652,7 @@ export interface TraceRunReport {
|
|
|
652
652
|
/**
|
|
653
653
|
* The app source files whose code sends a repeated request, read by the caller from the
|
|
654
654
|
* project (`app/src/**`) before this note is written. A loop's sentence names the component to
|
|
655
|
-
* read instead of leaving the run to search for it (
|
|
655
|
+
* read instead of leaving the run to search for it (the component's own file).
|
|
656
656
|
* Empty when the caller could not read the app or no file states the path.
|
|
657
657
|
*/
|
|
658
658
|
callSites?: readonly {
|
|
@@ -668,7 +668,7 @@ export interface TraceRunReport {
|
|
|
668
668
|
* This is the path half of {@link isCredentialExchange}, exported so a caller holding only a
|
|
669
669
|
* `METHOD path` reads the same classification: a Hurl failing entry says
|
|
670
670
|
* `POST /api/users/login` and nothing about the body, and the whole-suite note must not explain
|
|
671
|
-
* a wrong-password login that answered 200 as a cookie-jar effect
|
|
671
|
+
* a wrong-password login that answered 200 as a cookie-jar effect.
|
|
672
672
|
*
|
|
673
673
|
* @param path - The request path (`/api/users/login`); a query or fragment is ignored.
|
|
674
674
|
* @param authEndpoints - The endpoints the app's auth config names (`/users/login`).
|
|
@@ -679,7 +679,7 @@ export declare function isCredentialExchangePath(path: string, authEndpoints?: r
|
|
|
679
679
|
* The sentence a "hidden" visibility failure earns when the trace proved WHY the box is empty.
|
|
680
680
|
*
|
|
681
681
|
* Playwright calls an element with a zero-size box hidden even when it is painted, so the answer
|
|
682
|
-
* is in the element's children. `a.navbar-brand`
|
|
682
|
+
* is in the element's children. An `a.navbar-brand` was 0×4 px because its
|
|
683
683
|
* only child was `<img src="/conduit-logo.svg" height="26">`: an SVG with a `viewBox` and no
|
|
684
684
|
* width/height has no intrinsic size, and the `height` attribute loses to Tailwind's preflight
|
|
685
685
|
* (`img { max-width: 100%; height: auto }`), which the scaffold's own `index.css` imports. The
|
|
@@ -694,7 +694,7 @@ export declare function hiddenBoxNote(items: readonly TraceArtifact[]): string |
|
|
|
694
694
|
* The row's sentence for a failing count assertion: the locator, both numbers, and the elements
|
|
695
695
|
* the failure snapshot held.
|
|
696
696
|
*
|
|
697
|
-
*
|
|
697
|
+
* A `comments.spec.ts:86` row printed only `Expected: 3 / Received: 4`. The
|
|
698
698
|
* helper counted `.card:not(.comment-form) .card-block`, and the app's comment form was a
|
|
699
699
|
* `.comment-form` wrapper around a plain `.card`, so the form's own `.card-block` was the fourth
|
|
700
700
|
* match. The trace held the selector and the four elements; the note held neither.
|
|
@@ -725,18 +725,18 @@ export declare function countMismatchNote(items: readonly TraceArtifact[]): stri
|
|
|
725
725
|
* a network error with Playwright's own text) is a cause. A request with NO RESPONSE RECORDED —
|
|
726
726
|
* Playwright's `-1`, no error text — was still in flight when the test ended (the page closed under
|
|
727
727
|
* it); listing it as a failure sent a run hunting an API that never answered anything wrong
|
|
728
|
-
*
|
|
728
|
+
* The rest are the page's last answered requests.
|
|
729
729
|
*
|
|
730
730
|
* A 4xx request carries what the page SENT beside its status, so a wrapped body is visible in one
|
|
731
731
|
* line rather than inferred from the status; when one of those bodies is an object whose only key
|
|
732
|
-
* is `data`, the note names the call shape that produces it
|
|
732
|
+
* is `data`, the note names the call shape that produces it.
|
|
733
733
|
*
|
|
734
734
|
* Every row opens with the test's LAST user action before the failing assertion and the requests
|
|
735
735
|
* that action caused ({@link TraceArtifact.lastAction}) — started after it, before the assertion,
|
|
736
736
|
* the app's own API calls first, each with its status and the first 200 characters of its response,
|
|
737
737
|
* then where the page went next. The trace's action clock and each request's `_monotonicTime` are
|
|
738
738
|
* the same clock, so "caused" is the trace's own fact rather than a guess from recording order.
|
|
739
|
-
*
|
|
739
|
+
* A run failed 13 then 12 tests on one unnamed cause while every row led with
|
|
740
740
|
* `GET /api/tags → 200` — the Home page's own fetch after the redirect — and filled its answered
|
|
741
741
|
* slots with the PWA's `/workbox-*.js` and its `/icons/*.svg`; the register `POST /api/users`
|
|
742
742
|
* (answered 201, the page still rendering signed-out) never appeared. With no action clock, the
|
|
@@ -745,7 +745,7 @@ export declare function countMismatchNote(items: readonly TraceArtifact[]): stri
|
|
|
745
745
|
* The action, the URL and the requests are the FAILING ASSERTION'S PAGE's ({@link
|
|
746
746
|
* TraceArtifact.lastAction}), never the archive's last context: a test that creates its data in a
|
|
747
747
|
* second browser context writes that context's click and `/editor` snapshot into the same zip, and
|
|
748
|
-
* reading the concatenation made them the failing page
|
|
748
|
+
* reading the concatenation made them the failing page. The other
|
|
749
749
|
* contexts' requests are named separately as set-up work. When the trace holds more than one used
|
|
750
750
|
* context and the assertion's page cannot be identified, the note lists the requests and makes NO
|
|
751
751
|
* causal claim — no "the test's last action", no "the page stayed at …" — instead of merging them.
|
|
@@ -754,17 +754,16 @@ export declare function countMismatchNote(items: readonly TraceArtifact[]): stri
|
|
|
754
754
|
* trace holds both facts — the value typed into `textarea[name="bio"]` and the `PUT /api/user`
|
|
755
755
|
* whose body carried `"bio": ""` — so the form's state was reset between the typing and the
|
|
756
756
|
* submit. The note names the effect that re-seeds a form from data whose identity changed and the
|
|
757
|
-
* fix at the source (seed the form once).
|
|
758
|
-
*
|
|
759
|
-
* does locally.
|
|
757
|
+
* fix at the source (seed the form once). A deploy-and-walk cycle is lost to this on the
|
|
758
|
+
* deployed URL only, where the background session verification lands later than it does locally.
|
|
760
759
|
*
|
|
761
760
|
* A write whose response said a boolean field is true and a LATER GET of the same resource that
|
|
762
761
|
* said it is false leads the note first ({@link readContradictionSentence}): the read route never
|
|
763
|
-
* saw the viewer, so the fix is on that route's middleware, not in the page.
|
|
764
|
-
*
|
|
762
|
+
* saw the viewer, so the fix is on that route's middleware, not in the page. Rewriting the
|
|
763
|
+
* profile component over exactly that pair costs ~8 minutes — the write answered
|
|
765
764
|
* `{"following":true}` and the next profile GET answered `false`.
|
|
766
765
|
*
|
|
767
|
-
* WHICH rows it spends is evidence, not artifact order
|
|
766
|
+
* WHICH rows it spends is evidence, not artifact order: a row
|
|
768
767
|
* needs a recorded response, a real failure or a console line ({@link traceRowEvidence}), rows are
|
|
769
768
|
* deduplicated by the test's location, and they are ordered real failure → repeated from an
|
|
770
769
|
* earlier walk → the rest ({@link traceRowTier}). Without that the note spent all five rows on four
|
|
@@ -773,21 +772,21 @@ export declare function countMismatchNote(items: readonly TraceArtifact[]): stri
|
|
|
773
772
|
*
|
|
774
773
|
* A run whose every traced page never finished its navigation leads with the browser's own
|
|
775
774
|
* transport error (`net::ERR_CONTENT_DECODING_FAILED` and friends) and the document it hit: nothing
|
|
776
|
-
* rendered, so no row below is app evidence
|
|
775
|
+
* rendered, so no row below is app evidence.
|
|
777
776
|
*
|
|
778
777
|
* When a navigation the runner reports as the failure never finished and one of the document's
|
|
779
778
|
* own subresources (a stylesheet, a script, an asset under `/assets/`) never got a response either
|
|
780
779
|
* — having started inside that wait — the request takes a row and the note says the page was
|
|
781
780
|
* waiting on it. It is not an API call, but on a `page.goto` timeout it is the only request that
|
|
782
781
|
* can explain the timeout — the deployed app was serving the page while one fetch stalled for 27 s
|
|
783
|
-
*
|
|
784
|
-
*
|
|
782
|
+
* The page shell's incidental requests (`/sw.js`, the manifest, a favicon, a font) stay out, for
|
|
783
|
+
* the reason above. An asset merely unfinished when a selector wait
|
|
785
784
|
* ran out the test budget, or one a teardown/`afterEach` trace holds, is not a cause: the note
|
|
786
|
-
* says it "had no recorded response when the test ended; that alone does not establish the
|
|
787
|
-
*
|
|
785
|
+
* says it "had no recorded response when the test ended; that alone does not establish the
|
|
786
|
+
* cause".
|
|
788
787
|
*
|
|
789
788
|
* A 404 whose path lacks the API prefix the app's own calls carry is called out with that prefix
|
|
790
|
-
* ({@link missingApiPrefixRequests}):
|
|
789
|
+
* ({@link missingApiPrefixRequests}): a page posted `/users` to `vite preview`,
|
|
791
790
|
* whose 404 was answered by the static server because the HTTP client's `baseURL` was never set —
|
|
792
791
|
* and the note printed "read the handler this route reaches in your own source", which presumes a
|
|
793
792
|
* request that never reached the API. The prefix is READ (the caller passes what the app's client
|
|
@@ -799,16 +798,16 @@ export declare function countMismatchNote(items: readonly TraceArtifact[]): stri
|
|
|
799
798
|
* credential exchange it answered 2xx, a request the client already attached a token to — and only
|
|
800
799
|
* positive evidence may prescribe the client's token wiring; otherwise the sentence is
|
|
801
800
|
* observational and, for a navigation failure, names the URL transition and the route guard
|
|
802
|
-
* (
|
|
803
|
-
*
|
|
801
|
+
* (a signed-out redirect test's `GET /api/articles/feed → 401` sent the model into replacing a
|
|
802
|
+
* working HTTP client, which lost the session token for ~28 minutes). The
|
|
804
803
|
* handler sentence is kept for the rest — 404/422/500 — and dropped when every failure was a
|
|
805
804
|
* credential refusal, because a trace that proves the header was never sent cannot be explained by
|
|
806
|
-
* the handler.
|
|
805
|
+
* the handler. Six local walks read
|
|
807
806
|
* `POST …/favorite → 401 {"errors":{"token":["is missing"]}}` as a handler bug.
|
|
808
807
|
*
|
|
809
808
|
* A credential EXCHANGE (a login/registration/token endpoint, read from the app's auth config, the
|
|
810
809
|
* path or the body) is never that shape: the request's purpose is to obtain a token, so an absent
|
|
811
|
-
* header is not a client omission ({@link isCredentialExchange}).
|
|
810
|
+
* header is not a client omission ({@link isCredentialExchange}). A login
|
|
812
811
|
* 401 was answered as one for 40 minutes; the trace also showed the suite's SET-UP traffic going
|
|
813
812
|
* to `https://api.realworld.show/api` instead of this app, which is what the note leads with
|
|
814
813
|
* ({@link foreignOriginApiRequests}).
|
|
@@ -834,7 +833,7 @@ export declare function failureTraceNote(items: readonly TraceArtifact[], target
|
|
|
834
833
|
*
|
|
835
834
|
* Only `on` and `retain-on-failure` keep a `trace.zip` for a failure whatever the retries do: the
|
|
836
835
|
* two retry modes need a retry to happen at all, and a diagnosis run is given `--retries=0`
|
|
837
|
-
* (`streamingBackgroundCommand`), so
|
|
836
|
+
* (`streamingBackgroundCommand`), so a run's own
|
|
838
837
|
* `trace: 'on-first-retry'` recorded nothing — which is what left the failing tests' network log
|
|
839
838
|
* unreadable. A config that sets no `trace:` at all records nothing either (Playwright's default
|
|
840
839
|
* is off); so does one that cannot be read.
|
|
@@ -843,6 +842,15 @@ export declare function failureTraceNote(items: readonly TraceArtifact[], target
|
|
|
843
842
|
* @returns True when the config records traces for failures.
|
|
844
843
|
*/
|
|
845
844
|
export declare function suiteRecordsTraces(configText: string): boolean;
|
|
845
|
+
/**
|
|
846
|
+
* Whether the run itself pins `--retries=0` (either spelling): a run that cannot retry records no
|
|
847
|
+
* retry trace, so it still needs one recorded for it. A running wait reads the same proof to know
|
|
848
|
+
* a first failure's body is already final (`wait_for_task`'s diagnostic yield).
|
|
849
|
+
*
|
|
850
|
+
* @param command - The shell command.
|
|
851
|
+
* @returns True when the run allows no retry.
|
|
852
|
+
*/
|
|
853
|
+
export declare function namesNoRetries(command: string): boolean;
|
|
846
854
|
/** The `--trace` flag this platform adds, and the only value it adds it with. */
|
|
847
855
|
export declare const DIAGNOSIS_TRACE_FLAG = "--trace=retain-on-failure";
|
|
848
856
|
/** A command with the trace flag this platform decided to add, and the sentence to report it in. */
|
|
@@ -863,12 +871,12 @@ export interface DiagnosisTraceRewrite {
|
|
|
863
871
|
*
|
|
864
872
|
* A run that can serve as PROOF is the exception: the graded measurement is the suite's own
|
|
865
873
|
* settings, so it keeps its own tracing and retries. That was measured, not assumed — on one
|
|
866
|
-
* sandbox
|
|
874
|
+
* sandbox the same build ran a three-test deployed
|
|
867
875
|
* subset 3/3 timed out under this flag (17.6–17.9 s against a 15 s per-test budget) and the whole
|
|
868
876
|
* file passed 14/14 without it (10.9–12.1 s). `retain-on-failure` RETAINS only a failing test's
|
|
869
877
|
* trace (Playwright's `_shouldAbandonTrace` unlinks a passing test's), but it RECORDS every
|
|
870
878
|
* action of every test, and for a test near its per-test budget that recording is the difference
|
|
871
|
-
* between passing and timing out.
|
|
879
|
+
* between passing and timing out. This flag was added for exactly that failure: its
|
|
872
880
|
* deployed proof run left only an `error-context.md` because the suite traces
|
|
873
881
|
* `on-first-retry` and the run had no retries. That need is met without the flag — the graded
|
|
874
882
|
* deployed run keeps the suite's own retries, so a failing test leaves its retry's trace — and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-artifacts.d.ts","sourceRoot":"","sources":["../src/trace-artifacts.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"trace-artifacts.d.ts","sourceRoot":"","sources":["../src/trace-artifacts.ts"],"names":[],"mappings":"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"}
|