Docs
Record and replay
Capture a click path once, then have it prove itself again later.
The two commands
rec starts recording what you do. prove replays it.
What gets captured is a path through the platform: opening a record, changing fields, saving, ordering a catalog item. What gets replayed is the same path, against the same instance or another one.
It waits for facts, not for time
A replay that sleeps for two seconds fails on a slow morning and passes on a fast one. This one waits for something to become true instead: the element exists, the form reports itself loaded, the marker it was watching has gone.
That matters most at save. Saving a record no longer reloads the frame the way it once did, so waiting for a reload is waiting forever. The signals that actually tell you a save happened are different ones: the marker disappearing, the form no longer reporting itself as new, the URL picking up the interaction parameter.
Three outcomes, not two
A step ends as passed, failed, or unknown. The third one is the point.
A step that could not be checked is not quietly counted as a pass, and it is not reported as a failure either. It says it could not tell, which is the only honest answer and the one that sends you to look.
A pass also has to survive the navigations it caused itself, so a check does not get to succeed against a page that is already being replaced.
Where the platform has no seam
Some interactions have no funnel to intercept. Submitting a catalog item is the clearest: there is no single call to sit in front of, so the recording follows what the form does rather than a button press.
Outside a form, a choice is recorded as the choice made, not as the click that made it. The same decision then replays correctly when the menu is drawn in a different position, or drawn by a different component after an upgrade.
