@qawolf/cli 1.33.0 → 1.35.0
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 +25 -1
- package/dist/cli.js +385 -23
- package/dist/runner-sdk.js +232 -21
- package/dist/types/runnerSdk/index.d.ts +3 -1
- package/dist/types/runnerSdk/types.d.ts +7 -1
- package/package.json +2 -2
- package/skills/qawolf-cli/SKILL.md +12 -3
- package/skills/qawolf-cli/references/run-results.md +29 -2
- package/skills/qawolf-cli/references/runner.md +38 -0
|
@@ -8,6 +8,32 @@ this file for the parts a single response cannot show you: fields that appear
|
|
|
8
8
|
only when something fails, rules about the artifact URLs, and how to read a
|
|
9
9
|
trace without opening the trace viewer.
|
|
10
10
|
|
|
11
|
+
## Start with the failed flows
|
|
12
|
+
|
|
13
|
+
A run of a whole suite can hold hundreds of flows, and the full response then
|
|
14
|
+
runs to hundreds of kilobytes: more than a shell shows you, and more than any
|
|
15
|
+
investigation needs. The interesting part is a handful of failed flows, so ask
|
|
16
|
+
for those first:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
qawolf run get --run-id "$RUN_ID" --flow-statuses failed --json
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
`--flow-statuses` takes one or more of `queued`, `running`, `passed`, `failed`
|
|
23
|
+
and `canceled`, separated by spaces (`--flow-statuses failed canceled`), and
|
|
24
|
+
keeps only the flows whose status matches. The run-level fields (`status`,
|
|
25
|
+
`blockingBugCount`, `git`, `url`) still describe the whole run, so a filtered
|
|
26
|
+
read tells you both how the run went and which flows to look at. Widen the
|
|
27
|
+
filter, or drop it, only when you need the other flows too.
|
|
28
|
+
|
|
29
|
+
A flow that failed and then passed on a retry has status `passed`, so a
|
|
30
|
+
`failed`-only read leaves it out. If the flow you were asked about passed on a
|
|
31
|
+
retry, add `passed` to the filter and read its earlier attempts. For a flow
|
|
32
|
+
that is still queued, running or was canceled, widen the filter or drop it.
|
|
33
|
+
|
|
34
|
+
Do not save the full response to a file and script over it to find the failed
|
|
35
|
+
flows. The filter answers that in one call.
|
|
36
|
+
|
|
11
37
|
## The shape
|
|
12
38
|
|
|
13
39
|
A run holds flows, a flow holds attempts, and artifacts hang off an attempt:
|
|
@@ -63,7 +89,7 @@ recording) and `traceUrl` (a Playwright `trace.zip`).
|
|
|
63
89
|
authentication header is needed and no QA Wolf credentials are involved.
|
|
64
90
|
|
|
65
91
|
```bash
|
|
66
|
-
qawolf run get --run-id "$RUN_ID" --json \
|
|
92
|
+
qawolf run get --run-id "$RUN_ID" --flow-statuses failed --json \
|
|
67
93
|
| jq -r '.flows[].attempts[-1].traceUrl // empty' \
|
|
68
94
|
| head -1 \
|
|
69
95
|
| xargs -r curl -sS -o trace.zip
|
|
@@ -159,7 +185,8 @@ Every documented field of the `run.get` response. `[]` marks an array, so
|
|
|
159
185
|
- `git.commitUrl` — Link to the commit on the code host.
|
|
160
186
|
- `runId` — The run this response describes. Treat it as canonical: it can differ from the id you asked for. A deploy notification returns a run id before the run exists, and if a second notification for the same commit is folded into an earlier run, that id resolves to the earlier run instead.
|
|
161
187
|
- `status` — One of: queued, running, passed, failed, canceled
|
|
162
|
-
- `
|
|
188
|
+
- `blockingBugCount` — How many bugs this run found are blocking: still open, and priority urgent, high, or unprioritized — unprioritized counts because nobody has ruled it out yet. This is what `failed` is derived from, so it explains a failure rather than adding a second verdict: gate on `status`, then read this to say how many bugs are holding the build. It counts a bug filed against a later run by an investigation that carried over from this one, and it drops a bug once that bug is resolved.
|
|
189
|
+
- `flows` — The run's flows, ordered alphabetically by name. Only the flows matching flowStatuses when the request set it.
|
|
163
190
|
- `flows[].attempts` — The flow's finished execution attempts, oldest first, including manual Wolf Browser attempts. Present once at least one attempt has finished, so a flow that passed after retries also lists its failed attempts. Artifact URLs appear only on automated attempts that reached a verdict, stay valid for at least a day (call run.get again for fresh ones), and can return 404 when the attempt did not produce that artifact.
|
|
164
191
|
- `flows[].attempts[].logsUrl` — Signed URL for the attempt's execution logs.
|
|
165
192
|
- `flows[].attempts[].traceUrl` — Signed URL for the attempt's Playwright trace (a trace.zip; open it with `npx playwright show-trace`).
|
|
@@ -195,6 +195,44 @@ The answer holds one entry per action reached, and the field to read on each is
|
|
|
195
195
|
|
|
196
196
|
The sequence stops at the first action that fails. `--continue-on-failure` carries on past one that reached the runner and did not take effect, which is only safe for actions that do not depend on each other: a `type` after a failed `click` goes to whatever has focus. A runner that cannot be reached, a screen that cannot serve, or running out of time ends the sequence either way, and the message names every action that did not succeed.
|
|
197
197
|
|
|
198
|
+
## Video recording
|
|
199
|
+
|
|
200
|
+
Use `record` to control video capture on a Playwright runner. Start a flow first
|
|
201
|
+
so the runner has a screen, then start a manual capture:
|
|
202
|
+
|
|
203
|
+
```sh
|
|
204
|
+
qawolf runner record start --runner ci --json
|
|
205
|
+
# Keep result.state.active.id from the response and use it to stop this capture:
|
|
206
|
+
qawolf runner record stop <recording-id> --runner ci
|
|
207
|
+
qawolf runner record status --runner ci
|
|
208
|
+
qawolf runner record auto on --runner ci
|
|
209
|
+
qawolf runner record auto off --runner ci
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Start generates a UUID unless you pass `--recording-id <uuid>`. If a start
|
|
213
|
+
response is lost, the error includes that UUID: check `record status` and reuse
|
|
214
|
+
the UUID when retrying. Stop always names a specific recording, so retrying it
|
|
215
|
+
cannot stop a later capture. Manual recordings span runs and suppress automatic
|
|
216
|
+
capture until stopped. The auto setting affects subsequent full runs.
|
|
217
|
+
An active automatic recording ends with its run; `record stop` cannot interrupt
|
|
218
|
+
it. If a stop publishes a recording with `status: "failed"`, the CLI returns
|
|
219
|
+
exit code 1 and still prints the manifest so callers can inspect it.
|
|
220
|
+
|
|
221
|
+
Published recordings remain accessible after the runner terminates:
|
|
222
|
+
|
|
223
|
+
```sh
|
|
224
|
+
qawolf runner list-recordings --runner ci --json
|
|
225
|
+
qawolf runner list-recordings --runner ci --recording-id <uuid> --json
|
|
226
|
+
qawolf runner list-recordings --runner ci --page-token '<nextPageToken>' --json
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Each response is one page with `recordings` and an optional `nextPageToken`.
|
|
230
|
+
Follow that token for more; the order is storage-key order, not newest-first.
|
|
231
|
+
Entries include status, run ids, a stable platform `url`, and an expiring
|
|
232
|
+
`videoUrl` when video is available. An empty lookup means the recording has not
|
|
233
|
+
been published or does not exist. Abrupt runner loss may leave video unavailable.
|
|
234
|
+
Keep the runner id for history lookups after termination clears the local default.
|
|
235
|
+
|
|
198
236
|
## The recorder: what you cannot get from pixels
|
|
199
237
|
|
|
200
238
|
`qawolf runner events recorder` is the capability that has no equivalent in a
|