e2e: tap the menu and the reference again when the app did not react (#98) #121
No reviewers
Labels
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
schaefera/utStudyBIble!121
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/e2e-menu-retry"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #98
What
The e2e helpers
e2e_menuande2e_open_pickernow tap again when the app hasn't reacted (up to 3 taps, 10 s apart). This fixes the flaky CI failure "no 'utsb: menu settings ' (x1) after 10 s". A new case,tap-retry, covers the retry.Blast radius
Tier: trunk
Trunk paths touched:
tools/e2e/lib.sh,tools/e2e/cases/tap-retry.shTesting tier: standard. Only test tooling changes: no app code, no QML.
Gate / rollback: revert this merge. There is no flag. Memory and start-up are unaffected, because the app doesn't change.
Proof
e2e_tap. It FAILED on the base lib with exactly the CI error and PASSED on the new one. It was not committed.tap-retryon origin/main'slib.sh:FAIL tap-retry (10s), "no 'utsb: menu settings ' (x1) after 10 s". On this branch's lib it PASSES (13 s).830541c: changes, rust, audit, app, click and e2e all succeeded.Review
Reviewer: a fresh-context review at high on
8e61bb5(review 324) found 2 low issues. Both are fixed in830541cand answered in comment 2434:e2e_wait's.tap-retrynow does.There was no re-review: both findings were low, which is the owner's rule. The auditor read the delta.
Review-Confidence: 90/100. The only deduction (two −5s) is for the two post-review fixes that no fresh reviewer read. The audit found no missed defect.
Confidence by part
e2e_tap_untiland its two callers: high. The failure was reproduced on the base and fixed.tap-retry.sh: high. It fails on the base lib and passes on the new one.🤖 Generated with Claude Code
Fresh-context review (claude-review)
Level: high. Blast radius: trunk (tools/e2e/lib.sh).
Reviewed commit:
8e61bb5150Range: origin/main...HEAD
Files reviewed (diff plus callers and callees): tools/e2e/lib.sh, tools/mem-check/run.sh, tools/e2e/cases/display-settings.sh, tools/e2e/cases/import-url.sh, tools/e2e/cases/add-bible.sh, tools/e2e/cases/typed-reference.sh, tools/e2e/cases/module-manager.sh, CLAUDE.md.
I found no high or medium defects. I checked these:
e2e_seenthate2e_menuande2e_open_pickerused to set. None does: every caller (e2e_open_modules,e2e_tap_settings,import-url.sh,mem-check/run.sh) uses its owne2e_seen, local or not.local e2e_nshadows the globale2e_n, which names the app log (app$e2e_n.log). Nothing called insidee2e_tap_untilreads it (e2e_tap,e2e_count,e2e_failuse$e2e_log), so the log file name is not affected.e2e_countpluse2e_waitsemantics, including when a picker is reopened within the same log.Findings outside the diff:
low · (PR scope) · Proof case missing from the range. The testing tiers list a new e2e case that fails on the base lib and passes on the new one, but
origin/main...HEADchanges onlytools/e2e/lib.sh. The retry branch ofe2e_tap_until(a dropped first tap) is therefore exercised by no case. A normal run takes the first-tap path and would pass whether or not the retry works. Add the case, or state in the PR how the retry was shown to work.Inline findings follow.
@ -307,0 +314,4 @@local e2e_n e2e_t e2e_basee2e_base=$(e2e_count "$1")for e2e_n in $(seq 1 "${4:-3}"); doe2e_tap "$2" "$3"low · A second tap can land on the wrong screen, and the wait is shorter than before. The old
e2e_waittolerated a reaction up to 10 s late and never re-tapped. Now, if the app reacts later thanseconds(5 s) after the tap (slow runner or the mem-check profile under dind), the second tap is a side effect on the new screen:e2e_menu, the footer tap at (w-24, h-20) dismisses the open popup. The count has already risen, soreturn 0follows, ande2e_menuthen taps the entry coordinates onto the closed popup, i.e. onto the reading page.e2e_open_picker, the tap at (w/2, h-20) lands on the open picker.Both cases fail later with a misleading error, where before the run passed. The comment claims the app reacts well under 1 s; a larger default (for example 8 s per attempt) or a check just before the retry would remove the new failure mode. Cheap fix: before each re-tap, re-check the count once more after a short sleep.
Round 1 answers.
Gate approval on
830541c. Both review findings were low severity and are fixed at head: e2e_tap_until now waits 10 s before tapping again, and the new case tools/e2e/cases/tap-retry.sh drops the first tap and passes only through the retry. I read the delta 8e61bb5..830541c (lib.sh and tap-retry.sh). It is a default change plus a case that overrides e2e_tap in the same shell, with no side effects. CI status on head is success. The change touches only tools/e2e, so Proof has no elevated, maximum or AI-behavior gate. The auditor noted the case was never run against the base lib. The logic is clear enough that a dropped first tap with no retry would fail the menu open, so I did not block on it.WIP: e2e: retry a lost menu/reference tap (#98)to e2e: tap the menu and the reference again when the app did not react (#98)