”Did the login actually work?”
One call, three conditions. The signal fired, exactly one request went out, and nothing was logged.count: 1 is the part that catches double-submit, and it costs nothing to ask for.
”Did navigating actually change the view?”
”Did the modal open?” and the lesson in getting it wrong
Here is a real failure, kept because it teaches more than another pass.summary. The modal did open. newDeployOpen went false → true and the app fired modal:opened.
The assertion was wrong, not the app. That modal is a div with no role="dialog", so a role query could never match it. (Which is also an accessibility bug worth fixing, found for free.)
The right predicate was sitting in the response the whole time:
”Nothing matched, and I do not know why”
An emptyreticle_query result tells you what is there:
”Is this button destructive?”
Reticle refuses controls that look destructive, before acting:The matcher is conservative and will occasionally stop something harmless. A button labelled “New
deploy” trips it. That is the trade: a false stop costs you one argument, and a false start costs
you a deleted record.
”Did my change break anything else?”
”What is even testable in this app?”
The best first call on an unfamiliar codebase:”The error state has never been tested”
Most error states have never run. Force one:clear: true to turn mocking off.
”I want this to run on every PR”
Record it once, replay it forever:The predicate grammar
Every kind, every field, and which ones actually prove something.
Best practices
The habits behind these recipes, and the mistakes that produce a confident wrong pass.