Repository navigation
Test farm fixes - #1184
Merged
Merged
Test farm fixes#1184
Conversation
- SwipeAndTap's escape parameter is now escapeId. escape is a global JavaScript function, so it was never undefined and every caller paid for the visibility check meant only for those that pass it. - StopBeacon swiped from 70%, which on the Cubot's 480x854 screen is Home's fixed bottom bar, so it scrolled nothing and left a beacon playing. It now swipes from 60%, and scrolls back to the top after. - LaunchHome's scroll back to the top of Home didn't run with Places Nearby scrolled under the search bar, because Maestro counts it as visible there. It now needs the button below the search bar. On the Cubot, MarkerBrowse then tapped a hidden Markers button. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
…ing it When the download finishes the Offline maps list comes back before its "Maps already downloaded" section is added above, so the first match for the extract was the nearby entry, moving down as the section appeared. On the Cubot the tap landed on nothing and Delete wasn't found. Wait for the extract to be listed twice first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
… a thread On the Moto under memory pressure the location calls in FixReceiver sometimes took longer than the broadcast timeout. The helper was then reported as not responding, and now that KeepAlive makes it a foreground app the ANR dialog sat over Soundscape and failed the next flows. The receiver now hands the fix to a worker thread and answers straight away; a fix that fails is reported with the next one. Only the newest fix waits, so a slow phone skips fixes rather than falling behind, and the test providers are added once rather than every fix. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
The monkey adds markers, and on the A52s marker C ended up only partly on screen at the bottom of the list, behind the navigation bar, where the tap on it missed and Location Details never opened. SwipeAndTap brings each into view first, with escapeId for a swipe that lands as a tap. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
The monkey adds markers, so B and C can be below the fold of the Markers list. Restore checked for them with visible/notVisible, so one off screen looked gone and another B or C would be made; and its asserts and the route's waypoint taps needed them on screen. It now scrolls for each first (scrollUntilVisible also wants them wholly on screen, so a marker half behind the navigation bar isn't tapped). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
…s first tap The farm runs DownloadExtract after every soak on the Cubot, whose shell can't see whether the extract is there, so it's usually already downloaded. Offline maps adds that section after the nearby list, moving the list down, and the first tap landed between entries, so Delete wasn't found. Wait for the section's heading first (it has no testTag). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
StopBeacon swipes Home down to look for a beacon card below the fold and back up after, beacon or not. On the Cubot a swipe now and then lands as a tap, and on its Home every row a swipe can start on is a button: one opened Current Location's details and Callouts couldn't find My Location. After each swipe, Back if Home has gone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
The monkey left the search open on the Cubot and Back didn't close it: six Backs over four minutes, with the navigation bar showing the keyboard as open though none was drawn. Tap the search's own back button when it's there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
After the monkey left the full screen search open on the Cubot, the keyboard's window stayed on top though undrawn: Back went to it, and Maestro saw only the keyboard, not the app, so Restore couldn't get back to Home even after the app was brought to the front. Stop the default input method there too; it starts again when a text field next wants it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
…command Now and then a Maestro run hangs straight after "Selected device", before its first command (the Moto and the Cubot, once each since yesterday), until the 15 minute flow timeout, and the next flow then fails to reach the driver. A run with no command started in its debug log after 3 minutes is now killed and tried again with the driver reinstalled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
…'t open The list re-sorts by distance as the walk moves, and on the Moto a tap that landed while the rows were rebuilt was dropped: the list stayed and Location Details never came. Wait 5 seconds for the details and tap again if they haven't opened. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
…g dialog On the Cubot under memory pressure after a soak, Soundscape was slow long enough to be reported as not responding, then recovered, but the dialog stayed over it and Restore couldn't reach Home until the pause ran out. Bringing the app to the front now taps the dialog's Wait. That doesn't stop the app: one still hung is restarted as before, and the ANR is counted either way. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
A retry after a launch failure started straight away and failed the same way (the A54 losing its driver; the A52s just after a farm restart), while the next flow a few seconds later was fine. Force-stop the driver on the phone and wait 5 seconds first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
With the Markers list sorted furthest first (the monkey's choice; the flow's two sort taps put it back), C sits just above B, and the list came back from B's details on the A54 with C off the top. SwipeAndTap only looks further down, so scroll up for C first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
…nother screen On the Cubot a swipe in the menu drawer now and then lands as a tap, and one opened Offline maps instead of scrolling to About. Wrap the step in a retry that goes back to Home and opens the menu again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
The mock location helper is a foreground app now (KeepAlive), so when a busy Moto delivered a fix's broadcast late the helper was reported as not responding with a dialog over Soundscape, though its receiver answers at once and it was idle, and the next flow couldn't see Home. Check for the dialog before every flow, not only when the app is brought to the front. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
…stions On the Cubot the keyboard's window stayed on top after the search ran, so Maestro saw only the keyboard: no searchResult-*, no distances, and the fallback that looks for the searched word tapped "Library" in the keyboard's suggestion strip. Hide the keyboard after searching, and skip that fallback while any of the keyboard is still in view. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
Maestro's hideKeyboard closed the search results on every phone: none of the three runs since c187dd2 opened a result, against 118 of 139 before. Keep only the check that stops the searched-word fallback tapping one of the keyboard's suggestions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
A broadcast has a delivery timeout, and on a busy Moto late fixes got the mock location helper reported as not responding, now (with KeepAlive) with a dialog over Soundscape that failed the flow it appeared in, though the helper itself was idle. The farm now sends each fix with `content call` to a new FixProvider, whose call() runs on a binder thread with no timeout; it checks the caller holds DUMP, as the receiver's permission did. The fix logic moves to Fixes, shared with FixReceiver, which stays for the broadcast way in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
A farm restart can stop a phone mid-soak or mid-Restore, and the next cycle went straight to roaming with whatever the monkey left: on the A52s a guided tutorial still running, whose next instruction dialog covered Places Nearby and failed NearbyBeacon. The first cycle on a set-up phone now begins with Restore (idempotent), as it already did after a set-up that didn't complete. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
The restart that stopped the Cubot mid-soak also skipped the offline map check after it, and the monkey had deleted the map: Search found nothing and All Places stayed empty, failing NearbyBeacon twice. The first cycle now runs ensure_extract before its Restore. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
The Markers list is in whatever order the monkey left it, and sorted by name Z to A it has B below C, so scrolling up from C never found B and Restore failed on the A54 with both markers there. Look further down for B first, then back up. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
SwipeAndTap's default nudge (up, for items revealed below) pushed Home's Markers button under the search bar on the Cubot, where Home scrolls with a beacon card showing; the tap missed and Restore failed. Markers and Routes are near the top of Home, so nudge down for them, as Restore already did for Places Nearby. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
The Markers list's distances update as the walk moves, and on the Cubot a tap on B that landed while the rows were redrawn was dropped, so Location Details never opened. Wait 5 seconds for the details and tap again, as NearbyBeacon does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
…nly from a sub-screen StopBeacon's look below the fold and its swipe back up ran on every phone, though only the Cubot's Home scrolls; on the Moto a check for Home's search bar straight after one of them missed it, and the Back meant for a screen a swipe had opened left the app. The swipes now run only with HOME_SCROLLS (a phone's home_scrolls, set for the Cubot), and Back only when a screen with a Back button is showing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
A farm still running without it (or any other runner) leaves the variable undefined, which Maestro's JavaScript treats as an error. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
The walk can leave the area during the 30 seconds asleep (quickly on a bus), and the app then wakes up on its own; on the Moto Wake Up Now was gone and the flow failed. Tap it only if it's there; WaitForScreen Home still checks the app came back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
As with the place and marker taps, a tap on Location Details' Start Audio Beacon was dropped on the Moto while the page redrew for the moving walk, and the app stayed on the details instead of going back to Home. In NearbyBeacon and Search, wait 5 seconds for Home and tap again if not. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
The monkey leaves the Markers list in any order, and with B last (Z to A) its row sat at the very bottom above the A52s's gesture bar, where the list couldn't scroll it higher and both taps on it were lost. Step through the sort orders to A to Z, which puts B and C near the top. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
Live Caption was on on the Moto, and its panel transcribing Soundscape's speech covered Home's search bar, so Search's return to Home failed. Its switch is on the volume panel, which quieten()'s volume-down presses can open. quieten() now turns it off. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
Setting odi_captions_enabled to 0 left the panel on the Moto's screen; force-stopping Android System Intelligence, which draws it, closed it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
…a tap On the Cubot SwipeAndTap's nudge on Home landed as a tap on Current Location, which opens Location Details, and RouteWalk then couldn't find Routes. Pass escapeId (Location Details' Start Audio Beacon) to every SwipeAndTap to a Home button in the farm flows, so Back returns to Home and the scrolling carries on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
On the Cubot Search failed at once with the driver unreachable and wasn't retried: the debug log naming the gRPC error wasn't there yet when the farm read it, and the console only said [Failed] Search (0s). A flow that failed in no time ran no command, so count that as a launch failure too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
…looking for one The loop meant to stop at name, A to Z (1e11c9c) never could: the sort button reports its order as a state description, which Maestro's text matching doesn't see, so it tapped four times and failed on the Moto with the list still Z to A. Four taps go round the whole cycle and end where the list started, and the flow changes nothing again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
A soak on the A52s stopped after 18 seconds when the phone's launcher ran out of memory and crashed: monkey stops at a crash in any app, as it did at any ANR before --ignore-timeouts. Add --ignore-crashes; Soundscape's crashes are still counted from the dropbox. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
…lure On the A52s the driver was still unreachable 5 seconds after a launch failure, twice, so both the flow and its retry failed, while the next flow's retry about 15 seconds after the first failure worked. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
…route On the Cubot a swipe looking for Stop Route landed as a tap on a nearby place, and the remaining swipes all happened on its Location Details. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
On the Cubot a scroll of the Markers list landed as a tap on one of the monkey's markers, and Restore then looked for the New button on its Location Details. ScrollMarkers backs out and scrolls again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.