Skip to content

Spanish questionaire and test farm changes - #1183

Merged
davecraig merged 11 commits into
Scottish-Tech-Army:mainfrom
davecraig:main
Oct 25, 2026
Merged

davecraig merged 11 commits into
Scottish-Tech-Army:mainfrom
davecraig:main

Conversation

@davecraig

Copy link
Copy Markdown
Contributor

No description provided.

davecraig and others added 3 commits October 24, 2026 20:24
…ll screen

Each minute's dumpsys meminfo reading now also stores the App Summary rows
(native heap, graphics, Java heap, code, system, private other, stack), and the
report shows them under the PSS total with each part's change over the
current run of the app, so growth can be pinned on one part.

bring_to_front made a pop-up task unresizeable only for as long as it took to
bring it forward. The A54 remembers the task was a pop-up, so the dark mode
switch that follows put it straight back into one and Restore ran in a small
window. The task is now left unresizeable until the app next restarts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
A native speaker confirmed Detallado / Simplificado / Esencial / Silencioso:
«Esencial» sounded formal at first, but fits a level that only gives the
callouts that matter for a mental map, and its synonyms were worse. The
questionnaire lists it under the decisions and now only asks "anything else".

On the Spain-only place words (ES-N1), «Estacionamiento» is understood on both
sides but formal in Spain, while many Latin American speakers don't know
«Aparcamiento». We chose to keep Spain's words: they're clear in context and
the search synonyms already accept both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
The A50's USB port can't keep up with the farm's load, so its battery drifts
down. At battery_low_percent (10) a cycle now stops the app and turns the screen
off, and waits until the battery is back to battery_resume_percent (80), logging
recharge and recharged events. If it hasn't risen after an hour it logs one
error and keeps waiting.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
Maestro names its log folders by local time and keeps the newest few by name.
When the clocks went back on 25 Oct, each new folder sorted as the oldest and
was deleted as soon as it was made, so every Maestro run crashed opening its
own lock file for an hour and Restore failures paused two phones. The farm
now sets TZ=UTC before anything else, which Maestro inherits, and its own
log, run folders and timestamps stay in order too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
The change column covered the whole run of the app, so a phone up for a day
showed a day's drift and early start-up growth hid what's happening now. It
now covers at most the last 4 hours of the current run, comparing the mean
of the first and last 15 minutes of on-screen readings, since single
readings swing by tens of MB from minute to minute. Runs shorter than 45
minutes show no change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
- The A54 could be left as a Samsung pop-up window after a monkey soak that
  Restore still passed; in the small window the home buttons are off screen,
  so every flow of the cycle failed at its first tap. The farm now takes the
  app out of a pop-up before every flow, not only when Restore fails.
- The Moto could be left with the map full screen, which hides Home's search
  bar and which Back doesn't close. LaunchHome now closes it with the same
  button, and only presses Back while it still isn't on Home.
- A route left playing hides Home's full screen map button, so Callouts
  failed; it now stops any route or beacon first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
…ow fixes

- The monkey can delete the offline map from the app's Offline maps screen,
  after which Places Nearby is empty and nearly every flow fails until the
  phone is set up again. After each monkey soak the farm now checks for it
  and pushes it back; where the shell can't see the app's files (the Cubot),
  the app checks and downloads it again, which takes a minute when it's
  still there.
- On a small screen Home scrolls and could be left scrolled down, with Places
  Nearby, Markers and Routes off the top; LaunchHome now scrolls back up.
- DownloadExtract waited for the progress percentage to go, but on the Cubot
  it sat at 100.0% after a moment without it; it now waits for the map list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
… can't leak

Turning Wi-Fi off wasn't enough. With scanning always available, which is on
by default, the phone still scans for location, and Google's fused location
matched the networks it had cached and reported the farm's real position,
68 km from the mock one, every few seconds. Soundscape uses fused location,
so set-up's marker A, saved at the current location, landed there and the
Markers and RouteCreation flows failed. The A52s, the one phone with scanning
off, never had it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
@davecraig
davecraig deployed to development October 25, 2026 17:30 — with GitHub Actions Active
@davecraig
davecraig deployed to development October 25, 2026 17:30 — with GitHub Actions Active
…tion can't leak

Turning off Wi-Fi and Bluetooth scanning (3685387) didn't stop it: the
fused provider kept mixing the farm's real position into the mock fixes
on every phone with Play services. Location Accuracy is what feeds it, and
the shell can't write that setting, so prepare() opens its settings page
and taps the switch. With it off, no fix away from the mock point turned
up in about 1,000 samples across a full set-up of the four phones.

A single missed mock fix is routine on the Cubot and the Moto and the
next lands a second later, so only log a run of five.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
davecraig and others added 2 commits October 25, 2026 21:18
…t tap

On the Cubot J10, PlacesNearby failed about one run in three, always on
placesNearby-8, with the farm's screenshots on a place's Location Details.
Screen recordings with the touch trail on showed two causes:

- Just after the app starts, a Places Nearby folder opens empty and its
  places appear about 25 seconds later. Swipes and taps made meanwhile
  land on whichever place appears under them. WaitForScreen has a new
  PlacesList screen, the first place listed (its description has commas;
  a folder's is just its name), which the flows that open All Places now
  wait for.
- Now and then a Maestro swipe reaches the Cubot as a press without its
  moves, which taps the row under it. SwipeAndTap takes an optional
  escape id: if that screen shows after a swipe, Back returns to the list
  and the scrolling carries on. PlacesNearby passes Location Details'.
  Without escape the check is skipped, so other callers don't pay for it.

With both, PlacesNearby passed 10 runs in a row on the Cubot.

RouteWalk also stops a route left playing first: a farm restart in the
middle of its walk left Route Details showing Stop Route.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
…onkey

- The helper was a bare broadcast receiver, so its process only lived for
  a fix. The Cubot killed it after nearly every one (about 3,000 times in
  two hours) and the Moto often, so each fix forked a new process; on the
  Moto the helper hit an ANR, which made monkey abort a soak. A foreground
  service (KeepAlive) now holds the process, started with the app-op grant.
- monkey runs with --ignore-timeouts, so another app's ANR can't cut a
  soak short. Soundscape's ANRs are still counted from the dropbox.
- monkey runs on the phone, so stopping the farm left it going and its
  remaining events landed in the next flows after a restart. prepare()
  now stops it, and a soak cut short by the farm stopping isn't recorded
  as a failure.
- record_flows in a phone's [devices] entry screen-records those flows and
  keeps the video of a failure with its logs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
@davecraig
davecraig deployed to development October 25, 2026 21:18 — with GitHub Actions Active
@davecraig
davecraig deployed to development October 25, 2026 21:18 — with GitHub Actions Active
@davecraig
davecraig deployed to development October 25, 2026 21:18 — with GitHub Actions Active
@davecraig
davecraig deployed to development October 25, 2026 21:18 — with GitHub Actions Active
@davecraig
davecraig merged commit 23466e9 into Scottish-Tech-Army:main Oct 25, 2026
5 checks passed

This branch was successfully deployed

1 active deployment
development — 2ac0aa6a Deployed Oct 25, 2026 by davecraig via Run instrumentation tests #1641
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant