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 baseline capture) 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

Constructors

Verifier({double boundsMovedPx = 4.0})
const

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>
resolvedTarget is 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 baseline capture, taken shortly BEFORE before: 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 screen is the screen expected names (slug-equal, or one slug contained in the other: loans matches loans_list).
valueMatches(String expected, String got) → bool
got holds expected: 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.