Troubleshooting
A cached scenario keeps failing and the recording looks wrong (an empty value where the step passes one, a click on the wrong control). Do not edit the JSON. Re-record it:
npx saffron run --rerecord --filter @tag # or a feature path
--rerecord discards the selected scenarios' caches and lets the agent
record them fresh, seeded from every other recording, then files a
proposal for review as usual. Two guards make this rarer: the recorder
flags a fill recorded with an empty value on a step that passes one (the
proposal arrives UNVERIFIED with the reason), and saffron accept --all
skips UNVERIFIED proposals unless you pass --include-unverified or
accept that file explicitly.
| Symptom | Cause & fix |
|---|---|
Cache is stale (feature file changed) |
Step text no longer matches the recording. With the agent on, it re-records automatically; review the new proposal. |
Red with --no-agent on a new scenario |
No cache exists. Run once with the agent to record. |
| Scenario heals on every run | Something volatile is baked into the cache (a literal price/date). Reject, re-record, the agent's rules now capture/pattern these, or hand-edit the cache JSON (it's yours). |
Agent invocation failed: … maximum number of turns |
Very long scenario. Raise maxTurns in config. |
| Login wall in every scenario | Configure storageState (§8). |
| First run seems slow | That's recording (minutes per scenario). Replays are seconds. Record once, replay forever. |