Create an Argent flow
An Argent flow is a replayable sequence in .argent/flows/<name>.yaml.
For a saved QA test case, ticket, or acceptance criterion, load argent-qa-flows first. It adds deterministic setup, acceptance evidence, and two-pass proof.
Read the relevant reference
- Before creating or changing a flow, read Live authoring completely.
- When polishing, composing, or manually reviewing YAML, read Flow YAML. For Vega, read its platform limits before recording remote or keyboard tools.
- Flows run on physical iPhones (an iOS
list-devices entry with kind "device"), but replay never auto-binds one, even when no simulator is booted: pass the phone's udid as device (CLI --device), and only a connected phone can run. pinch/rotate steps fail there like the live tools. On hardware the flow tree is the describe tree: same ids and roles, no UIView hierarchy. See argent-ios-device-interact for the hardware contract.
- On capture warnings, raw coordinates, unavailable trees, mistimed transitions, overlays, or replay failures, read Reliability and recovery.
Non-negotiable rules
- Record the first walkthrough. Start the recorder before the first launch or in-app action. Do not reconstruct a rehearsed path.
- Record checks when their states appear. Record
await-ui-element live, then convert it during polish. An echo records intent or diagnostic context, not app behavior or a verdict. A screenshot is human evidence, not an executable verdict. For absence, record the same selector as visible, perform the removing action, then record it as hidden.
- Use semantic targets. Prefer a strict id, then stable text or an accessibility label. Use
scroll-to for off-screen elements. Resolve every raw-point warning immediately through the coordinate fallback gate.
- Prove every screen change. Record a destination-only identity check. During polish, follow it with
await: { idle: true }. Stillness does not prove identity, and idle can pass with a warning.
- Polish only executed behavior. Convert recorded steps without changing their meaning. Record any missing action or structural check live. The only unrecorded insertions are a planned
snapshot:, a navigation await: { idle: true }, and the documented Chromium packaging launch:.
- Use scripts only when the user requests them. Read Flow YAML: Local scripts, then record each script with
flow-add-script.
- Replay the final YAML end to end. A normal flow needs one uninterrupted full pass.
argent-qa-flows requires two consecutive passes.
Stable selectors
A stable selector is fixed by app code and survives account, data, time, count, order, and every locale and environment the flow supports. Prefer ids such as settings-screen. Do not gate on values such as Today, Item 4, usernames, counters, or timestamps.
Flow-only selector scopes
During polish, use within, after, and next to disambiguate repeated elements. Read Flow YAML: Relational scopes for their frame-based semantics and failure cases.
Workflow
- Choose the flow type:
- e2e: the first step that is not
echo: or script: is launch:. The flow controls process start.
- fragment: there is no leading launch. Declare a precise
executionPrerequisite.
- Follow Live authoring: start, record one verified step at a time, finish, polish, audit, and replay.
- Report the file, replay command, result, prerequisite or side effects, and every coordinate or raw-gesture exception.
Proactive recording
Before repeating three or more interactions, tell the user and start a recording. Record that run and replay it afterward. A completed path cannot be recorded retroactively.
Repair
When replay fails, follow Reliability and recovery. Inspect the first divergence, correct the smallest justified unit, audit, and replay the full flow. Stop after two unsuccessful correction cycles. Never weaken a requested check to obtain a pass.
1---2name: argent-create-flow3description: Create, record, edit, replay, or repair reusable Argent flow YAML files. Use when the user asks to record or replay a repeatable device path, set up profiling or an A/B comparison, or invoke the authoring engine behind argent-qa-flows. Also use before repeating three or more interactions. For one-off UI checks, acceptance-driven regression tests, or screen video, use argent-test-ui-flow, argent-qa-flows, or argent-screen-recording respectively.4---5
6# Create an Argent flow
7
8An Argent flow is a replayable sequence in `.argent/flows/<name>.yaml`.
9
10For a saved QA test case, ticket, or acceptance criterion, load `argent-qa-flows` first. It adds deterministic setup, acceptance evidence, and two-pass proof.
11
12## Read the relevant reference
13
14- Before creating or changing a flow, read [Live authoring](references/live-authoring.md) completely.
15- When polishing, composing, or manually reviewing YAML, read [Flow YAML](references/flow-yaml.md). For Vega, read its platform limits before recording remote or keyboard tools.
16- Flows run on physical iPhones (an iOS `list-devices` entry with kind `"device"`), but replay never auto-binds one, even when no simulator is booted: pass the phone's udid as `device` (CLI `--device`), and only a `connected` phone can run. `pinch`/`rotate` steps fail there like the live tools. On hardware the flow tree is the `describe` tree: same ids and roles, no UIView hierarchy. See `argent-ios-device-interact` for the hardware contract.
17- On capture warnings, raw coordinates, unavailable trees, mistimed transitions, overlays, or replay failures, read [Reliability and recovery](references/reliability-and-recovery.md).
18
19## Non-negotiable rules
20
211. **Record the first walkthrough.** Start the recorder before the first launch or in-app action. Do not reconstruct a rehearsed path.
222. **Record checks when their states appear.** Record `await-ui-element` live, then convert it during polish. An echo records intent or diagnostic context, not app behavior or a verdict. A screenshot is human evidence, not an executable verdict. For absence, record the same selector as `visible`, perform the removing action, then record it as `hidden`.
233. **Use semantic targets.** Prefer a strict id, then stable text or an accessibility label. Use `scroll-to` for off-screen elements. Resolve every raw-point warning immediately through the [coordinate fallback gate](references/reliability-and-recovery.md#coordinate-fallback-gate).
244. **Prove every screen change.** Record a destination-only identity check. During polish, follow it with `await: { idle: true }`. Stillness does not prove identity, and `idle` can pass with a warning.
255. **Polish only executed behavior.** Convert recorded steps without changing their meaning. Record any missing action or structural check live. The only unrecorded insertions are a planned `snapshot:`, a navigation `await: { idle: true }`, and the documented Chromium packaging `launch:`.
266. **Use scripts only when the user requests them.** Read [Flow YAML: Local scripts](references/flow-yaml.md#local-scripts), then record each script with `flow-add-script`.
277. **Replay the final YAML end to end.** A normal flow needs one uninterrupted full pass. `argent-qa-flows` requires two consecutive passes.
28
29### Stable selectors
30
31A stable selector is fixed by app code and survives account, data, time, count, order, and every locale and environment the flow supports. Prefer ids such as `settings-screen`. Do not gate on values such as `Today`, `Item 4`, usernames, counters, or timestamps.
32
33### Flow-only selector scopes
34
35During polish, use `within`, `after`, and `next` to disambiguate repeated elements. Read [Flow YAML: Relational scopes](references/flow-yaml.md#relational-scopes) for their frame-based semantics and failure cases.
36
37## Workflow
38
391. Choose the flow type:
40 - **e2e:** the first step that is not `echo:` or `script:` is `launch:`. The flow controls process start.
41 - **fragment:** there is no leading launch. Declare a precise `executionPrerequisite`.
422. Follow [Live authoring](references/live-authoring.md): start, record one verified step at a time, finish, polish, audit, and replay.
433. Report the file, replay command, result, prerequisite or side effects, and every coordinate or raw-gesture exception.
44
45## Proactive recording
46
47Before repeating three or more interactions, tell the user and start a recording. Record that run and replay it afterward. A completed path cannot be recorded retroactively.
48
49## Repair
50
51When replay fails, follow [Reliability and recovery](references/reliability-and-recovery.md). Inspect the first divergence, correct the smallest justified unit, audit, and replay the full flow. Stop after two unsuccessful correction cycles. Never weaken a requested check to obtain a pass.