You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: plugins/aidd-dev/skills/11-browser-qa/SKILL.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,14 @@
1
1
---
2
2
name: 11-browser-qa
3
3
description: Run post-review browser QA and produce short named videos for a locked happy path and sourced browser edge cases. Use when the user wants concise reviewer evidence for a web journey. Not for API, CLI, automated tests, diff review, or application fixes.
Verify the runner dependencies before resolving the QA scope.
4
+
5
+
## Input
6
+
7
+
None.
8
+
9
+
## Output
10
+
11
+
Verified `npx`, Playwright CLI `0.1.17`, `ffmpeg`, and `ffprobe`.
12
+
13
+
## Process
14
+
15
+
1.**Check.** In one pass, resolve `npx`, run `npx --yes @playwright/cli@0.1.17 --version`, and resolve `ffmpeg` and `ffprobe`.
16
+
2.**Continue.** When every check passes, continue without reporting it.
17
+
3.**Resolve.** When a dependency is missing, ask one concise question: the user installs the listed dependencies, or authorizes you to install them now.
18
+
1. If the user installs them, provide only the shortest platform-appropriate commands and stop until they confirm completion.
19
+
2. If authorized, install only the missing dependencies, then rerun every check.
20
+
4.**Stop.** Report the shortest decisive error when installation is declined or a recheck fails.
21
+
5.**Protect.** Never add runner or media dependencies to the application manifest.
22
+
23
+
## Test
24
+
25
+
- Passing checks produce no message.
26
+
- A missing dependency produces one choice and no unapproved installation.
27
+
- Either installation path reruns every check before continuing.
Copy file name to clipboardExpand all lines: plugins/aidd-dev/skills/11-browser-qa/actions/02-prepare-run.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,18 +1,18 @@
1
1
# 02 - Prepare Run
2
2
3
-
Resolve every operational dependency before retained recording begins.
3
+
Resolve the application state and scenario paths before retained recording begins.
4
4
5
5
## Input
6
6
7
-
Earlier defined scope.
7
+
Verified prerequisites and the earlier defined scope.
8
8
9
9
## Output
10
10
11
-
A successfull prepared run with a reachable application, authenticated sessions, deterministic fixtures, executable scenario steps, proven teardown, and available recording and media tools.
11
+
A successful prepared run with a reachable application, authenticated sessions, deterministic fixtures, executable scenario steps, and proven teardown.
12
12
13
13
## Process
14
14
15
-
1.**Preflight.**Batch the independent checks for the application, pinned Playwright CLI, `ffprobe`, `ffmpeg`, and the fixed `1280×720` viewport.
15
+
1.**Preflight.**Check the applicationand fixed `1280×720` viewport.
16
16
2.**Reuse.** Read `aidd_docs/memory/testing.md` first when it exists.
17
17
1. Resolve Browser QA entry, auth, fixtures, and reset from its `Browser QA` section, then a directly related browser test, then one targeted browser snapshot.
18
18
2. Stop searching as soon as the run is executable.
Upgrade the pin deliberately with the framework, never by using `latest` during a QA run.
13
+
`run-code` takes one `page` argument: pass `async page => { ... }`, never bare statements. Keep stdout, stderr, and exit status visible; no redirects, pipes, command substitutions, or `|| true`. A `SyntaxError` or non-zero exit invalidates the take.
14
14
15
-
`run-code` receives one `page` argument. Pass a complete function with the exact shape `async page => { ... }`, never bare statements. Keep its stdout, stderr, and exit status visible: never redirect, pipe, use command substitution, append `|| true`, or otherwise mask them. A `SyntaxError` or non-zero exit invalidates the take.
15
+
## Recording
16
16
17
-
## Recording contract
18
-
19
-
Use one named session and one raw WebM per scenario. Fix the browser viewport and recording frame at `1280×720`. Reach the prepared initial state before `video-start`. Drive every recorded interaction in one `run-code`; never issue recorded click, fill, or scroll commands separately. Hold the initial state for `1000 ms`. Wait `300 ms` between scenario actions and after every scroll. Verify the observable result, hold it for `1000 ms`, then stop. Run `video-stop` only after `run-code` exits successfully.
17
+
- One named session and raw WebM per scenario; viewport and frame `1280×720`.
18
+
- Reach the initial state before `video-start`; put every recorded interaction in one `run-code`.
19
+
- Never record separate click, fill, or scroll commands.
20
+
- Hold the initial and verified final states for `1000 ms`.
21
+
- Wait `300 ms` between actions and after each scroll.
22
+
- Run `video-stop` only after `run-code` succeeds.
Twelve seconds is a maximum, never a target. Never pad or extend a shorter take. When `ffmpeg` is unavailable, only an already-short raw take can pass. A take above 12 seconds reports`blocked: media-postprocess-unavailable`.
55
+
Without `ffmpeg`, only an already-short raw take passes; otherwise report`blocked: media-postprocess-unavailable`.
56
56
57
-
Never infer the first action from a scene-change threshold and never trim the head: the initial one-second hold is required evidence. Before trimming tail time, extract and inspect frames immediately before and after the proposed cut. Reject a cut that removes the observable result or its final one-second hold.
57
+
Never trim the head or infer the first action from scene changes. Inspect both sides of a tail cut; reject one that removes the result or final one-second hold.
When the meaningful take still exceeds 12 seconds, remove non-scenario actions and record it again. Never accelerate a take because that invalidates the pacing contract. Report blocked when the required journey cannot fit.
77
+
Above 12 seconds, remove non-scenario actions and record again. Never accelerate. Block when the required journey cannot fit.
78
+
79
+
## Validation
76
80
77
-
Inspect the final file with the same `ffprobe` command, then extract frames at four frames per second and inspect them in chronological order. Require the initial state, every scenario action, every transition, and the final observable result to be visible. The initial and final holds must each span at least four sampled frames. `ffprobe` alone never validates a take.
81
+
Probe the final file, then inspect four frames per second chronologically.
Require codec `vp9`, width `1280`, and duration at most 12 seconds. Remove raw takes, cut-point frames, and final validation frames only after every final WebM passes both gates.
89
+
Require:
90
+
91
+
- codec `vp9`, width `1280`, duration at most 12 seconds;
92
+
- initial state, every action and transition, and final result visible;
93
+
- initial and final holds spanning at least four sampled frames.
94
+
95
+
`ffprobe` alone is insufficient. Delete raw takes, cut-point frames, and validation frames only after every final WebM passes both checks.
0 commit comments