How Saffron works, feature by feature
How Saffron actually works, feature by feature — the Cucumber pains it removes, the full life of a cache, step sets, the vocabulary, and the guarantees underneath. Same facts as the engineering docs, told with diagrams.
Saffron keeps what Cucumber got right — plain-language scenarios anyone can read — and removes the four costs teams pay for it.
Glue code
Cucumber needs a regex step definition for every step, in a second language, maintained forever. Saffron has none: steps are natural language, the agent works out the browser actions on the first run, and from then on they are cached data — not code.
Brittle selectors
Recorded targets are semantic — ARIA role and accessible name first, CSS only as a fallback. When the UI drifts anyway, the agent heals mid-run and files a proposal instead of leaving you a red build and a stack trace.
The same step, two wordings
“I navigate to the home page” vs “I visit the home page”. In Cucumber this quietly forks your suite. Saffron surfaces the whole vocabulary while you type, and if a duplicate slips through it is proven by behavior — identical recorded actions — and fixed with a rename proposal.
The same five steps, everywhere
Background only covers scenario starts in one file. Step sets are named sequences you define once and invoke anywhere — expanded at parse time, so the runner machinery never changes.