fix(verifier): populate Action.On when tap chooser picks an element

Coordinate-targeted Taps/DoubleTaps left On empty, so action-gated
properties reading lastAction.on couldn't tell which target was hit and
were vacuously skipped. Resolve the picked element to a stable
key:value selector (resource-id, testTag, text, desc) and validate it
resolves back to the same element so we don't accidentally redirect the
tap to a sibling that shares the identifier.
This commit is contained in:
pj committed 2026-05-31 18:53:27 +05:30
1 parent ff1a8928dc
commit ee1fad1d30
2 files changed
+60 -1

No files matched your search

+18
View File
@@ -421,6 +421,24 @@ func TestDoubleTapsBuiltin_TargetsClickable(t *testing.T) {
if action.X != 50 || action.Y != 60 {
t.Errorf("coords = (%d,%d), want (50,60) at SubmitButton center", action.X, action.Y)
}
// Action-gated properties read lastAction.on to tell which target the
// chooser hit. An empty On reduces those properties to vacuously-true and
// they never fire on the real tap event.
if action.On == "" {
t.Fatal("On must be populated so action-gated properties can identify the target")
}
if !strings.Contains(action.On, "SubmitButton") {
t.Errorf("On = %q, want a selector containing SubmitButton", action.On)
}
resolved := tree.Find(action.On)
if resolved == nil {
t.Fatalf("On = %q does not resolve in the same tree", action.On)
}
rx, ry := resolved.Bounds.Center()
if rx != action.X || ry != action.Y {
t.Errorf("On %q resolves to (%d,%d), want the picked element's center (%d,%d)",
action.On, rx, ry, action.X, action.Y)
}
}
func TestDoubleTap_RoundTrip(t *testing.T) {