software-mansion / software-mansion/argent

flow: four replay-affecting step fields render on neither the summary nor the report target

Open
#809 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
TypeScript
Stars
2.9k
Forks
118
Avg merge
1d 19h
Merged PRs (30d)
93

Description

[Diplomat, Opus 5]: flow-step-definitions.ts renders each step kind on two surfaces — the recording summary line and the run report's StepReport.target. Four optional fields that change what a flow replays are rendered on neither, so two steps that differ only in one of them are indistinguishable in both places:

field what it changes
type.submit false suppresses the Enter press after typing
await.timeout how long the wait may take before the step fails
idle.timeout same, for a screen-readiness wait
idle.stableFor how long the tree/pixels must hold still to count as idle

Repro — all four survive a parse and are kept on the step:

steps:
  - await: { idle: true }
  - await: { idle: true, stableFor: 900, timeout: 30000 }

summarizeSteps returns ["1. await: screen idle", "2. await: screen idle"] — byte-identical for a default-stability wait and a 900ms/30s one. stepTarget returns undefined for both. parseIdleFields in flow-utils.ts accepts and keeps stableFor/timeout; the same holds for type.submit and await.timeout.

Impact — the finish-recording summary is read back against the YAML before hand-editing, and it is the recorder's only per-step view. An author comparing two await: { idle: true } lines cannot see that one waits 30s and the other 5s.

Context — #744 applied exactly this criterion to three other fields (scroll-to.within, snapshot.cropOn, snapshot.maxMismatch): a field that changes what replays belongs in the line. It stopped short of these four, and the comment in POINT_GESTURE_STEP now names all four as knowingly unrendered rather than claiming a criterion the file does not follow. The behaviour predates that PR and is unchanged by it.

Worth deciding as one batch, since whatever spelling await.timeout gets should match idle.timeout.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in flow-step-definitions.ts by reading summarizeSteps and stepTarget, then inspect parseIdleFields in flow-utils.ts to confirm the four optional values already survive parsing. Define consistent wording for type.submit, await.timeout, idle.timeout, and idle.stableFor, and verify that differing values are distinguishable on both the summary and report target surfaces.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
developer-experience
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.