Verifier class
Action-aware verifier — the only thing that catches the "fake success" bug
(executor reports success: true but the world didn't change).
Result-honesty contract: a step succeeds only on evidence tied to the INTENDED target —
- tap / click: a route change, an overlay opening or closing, or a
change on the target itself, its option group, its own subtree, or its
nearest BOUNDED container (a card / row — never the page-sized group
every node shares). A change anywhere else on the screen (a countdown,
a clock, an unrelated counter) is not evidence; nodes that were
already changing before the action (the runner's
baselinecapture) never count, even on the target; - navigate: a route change, the target leaving the screen, an overlay
change, or a tab becoming selected — and, when the mission names an
expect_screen, the screen it landed on must match it; - set_text: the requested field's VALUE (never its label) must match the request and must have changed, unless it already held exactly that;
- when the verifier cannot look at all, it says so
(
verification_unavailable,check_not_applied, …) instead of passing.
- Inheritance
-
- Object
- StepVerifier
- Verifier
Properties
- boundsMovedPx → double
-
Position deltas under this many logical pixels are ignored — sub-px jitter
from in-flight animations shouldn't count as evidence.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
-
verify(
{required MissionStep step, required ExecutorResult execResult, required UiSnapshot? before, required UiSnapshot? after, UiNode? resolvedTarget}) → Future< VerificationOutcome> -
resolvedTargetis the node the runner ACTUALLY acted on — the find ladder's winner, promotion included.override -
verifyDetailed(
{required MissionStep step, required ExecutorResult execResult, required UiSnapshot? before, required UiSnapshot? after, UiNode? resolvedTarget, UiSnapshot? baseline}) → Future< VerificationOutcome> -
verify plus the runner's
baselinecapture, taken shortly BEFOREbefore: any node that changed between the two is self-changing (a countdown, a clock, a shimmer) and can never vouch for an action.
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
screenMatches(
String screen, String expected) → bool -
True when
screenis the screenexpectednames (slug-equal, or one slug contained in the other:loansmatchesloans_list). -
valueMatches(
String expected, String got) → bool -
gotholdsexpected: literally, after a formatter-tolerant squash (case, whitespace, separators: "ABCDE1234F" / "12 34" / "₹5,00,000"), or as a masked echo of the same structure ("XXXX XXXX 9012").
Constants
- kLocalContainerMaxViewportFraction → const double
- Containers larger than this fraction of the viewport are "the page", not a local container whose content belongs to the target.