Repository navigation
Fix fmtk E2E workspaces flake: tap_button_exact waits for a tappable node (#3588) - #3589
Conversation
…ics settling (#3588) The shared-workspace card tap failed on the 2026-10-18/25 nightlies with web_gesture_not_supported: the snapshot's first button-typed node carrying the name as a whole line carried no tap action — a control's semantics can settle label-first, and a non-tappable button-typed node can precede the real one in tree order. tap_widget can only tap nodes exposing SemanticsAction.tap, so such a hit was never a usable target: hits that expose the action are preferred, and the lookup waits the settle window out before failing with a message that says which of the two states it saw.
Hedge the settle-window diagnosis (the nightlies' artifacts do not distinguish label-settles-before-action from an untappable labeled node preceding the tappable one — the code handles both), reconcile open_fixture_workspace's stale 'shared tiles surface no tap actions' comment with the fix's premise, note that FmtkError is load-bearing for select_dialog_picker_value's mid-race catch (and give that call a tight timeout), and extract the hit scan to keep the helper simple.
Fresh-eyes reviewBlocking issuesNone. Verification of prior findings
Regression bleedNone. Nits / questions
VerdictAPPROVE — both important findings are genuinely fixed (stale claim eradicated, mechanism hedged, catch-dependency documented), the accepted nits are correctly applied, and the refactor is behavior-preserving with the contract suite green on HEAD. |
3D dependency graph (self-contained HTML)The page is fully self-contained: save it from either link and it opens offline. GitHub serves the raw gist as plain text, so the source link downloads; the render link views. |
|
Successfully created backport PR for |
…node (#3588) (#3589) (#3590) * fmtk e2e: tap_button_exact prefers tappable hits and waits out semantics settling (#3588) The shared-workspace card tap failed on the 2026-10-18/25 nightlies with web_gesture_not_supported: the snapshot's first button-typed node carrying the name as a whole line carried no tap action — a control's semantics can settle label-first, and a non-tappable button-typed node can precede the real one in tree order. tap_widget can only tap nodes exposing SemanticsAction.tap, so such a hit was never a usable target: hits that expose the action are preferred, and the lookup waits the settle window out before failing with a message that says which of the two states it saw. * fmtk e2e: review follow-ups for #3589 (#3588) Hedge the settle-window diagnosis (the nightlies' artifacts do not distinguish label-settles-before-action from an untappable labeled node preceding the tappable one — the code handles both), reconcile open_fixture_workspace's stale 'shared tiles surface no tap actions' comment with the fix's premise, note that FmtkError is load-bearing for select_dialog_picker_value's mid-race catch (and give that call a tight timeout), and extract the hit scan to keep the helper simple. (cherry picked from commit b7a29e9)
Summary
Fixes the recurring
tap_widget failed on s_9: web_gesture_not_supportedflakes in the scheduled main E2E: fmtk Frontend Tests (workspaces) runs — 1 test on Oct 25 (run 40182792728), 5 tests on Oct 18 (run 39116591202). Closes #3588.All the failures tap the shared-workspace card via
tap_button_exact(name)after switching to the Shared with Me segment. The lookup picked the firstbutton-typed node carrying the name as a whole line — and that node did not exposeSemanticsAction.tap, so fmtk'stap_widgetrefused the gesture. A control's semantics can settle label-first (the button flag and label land before the tap action registers), and a non-tappable button-typed node can precede the real one in tree order; in either statehits[0]was never a usable target, becausetap_widgetcan only tap nodes exposing the action.tap_button_exactnow prefers hits that expose the tap action and waits out the settle window (10s) before failing, with an error that names which of the two states it saw. All 42 call sites across the suites get the hardening.Verification
test-fmtk-e2e src/frontend/e2e-tests/fmtk/test_terminals.py(fresh stack): 5/5 pass, including both Oct-18 cascade tests (test_gate_own_terminals_by_role,test_shared_terminal_spectator_watches).test-fmtk-e2e src/frontend/e2e-tests/fmtk/test_sharing.py: the issue's failing testtest_acl_editor_add_save_and_persisted_effectpasses. (The module's chained scenarios 4-6 are locally load-sensitive when run standalone — see its docstring; CI runs the authoritative sequence.)test-push: green.fmtk-e2e-workspacesworkflow dispatched on this branch: see checks below.