Skip to content

Test farm improvements and fix for crash that it found - #1178

Merged
davecraig merged 6 commits into
Scottish-Tech-Army:mainfrom
davecraig:main
Oct 22, 2026
Merged

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

Conversation

@davecraig

Copy link
Copy Markdown
Contributor

No description provided.

davecraig and others added 6 commits October 22, 2026 09:02
The farm phones lie flat on a desk, and Soundscape keeps using the
compass of a phone held flat even in the background, unlike one in a
pocket. With sensors = false (globally or per phone) the farm puts the
sensor service into restricted mode with an allowlist nothing matches,
so neither the app nor Google Play services gets sensor events and the
heading comes from travel. The app is stopped once when it's applied,
since it would keep its last, flat, orientation. It's re-applied after
each monkey soak and lifted when the farm stops.

Phones with skip = true are no longer prepared either: preparing turns
off Wi-Fi and the sensors, among other things, and a skipped phone may
be someone's own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
On the USB hub some phones report AC power (the Moto, and the A54 until
it was replugged), and svc power stayon usb ignores that, so the A54's
screen went off in the middle of its set-up flows. Stay on with any
power source, and wake the phone before every flow as a backstop.

PostUpgrade.yaml ran LaunchHome.yam, so every upgrade check since
3ea4e7f failed with Invalid File Path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
ShowMap decided whether the map was on by looking for the full screen map
button on Home, but a beacon card left by roaming can push it out of
view. The A52s's Restore then read the map as off when it was on,
tapped the switch, turned it off and failed, so the phone was set up
again. Where the settingsShowMap tag exists, read and check the row's
checked state instead; Home is now only a fallback for untagged
releases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
The monkey's swipes from the top edge opened the notification shade, and
on the A50 the shade the farm then collapsed kept key focus while
invisible: every Back went to it, LaunchHome couldn't leave Location
Details' full-screen map and Restore failed, so the phone was set up
again. Lock the shade shut while the farm runs (cleared when it stops),
and before each flow move focus away from the shade if it has it.

The menu keeps its scroll position, and on the Cubot's short screen it
was left scrolled past Settings, so tapping menuSettings failed in
Restore and Menus. Scroll up to it first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
They were only read at the start and end of each cycle, so the report's
battery column could be 40 minutes old. Read each Android phone's every
battery_poll_minutes (default 1), show the latest in the report with its
time, and keep the readings in a vitals table pruned after keep_days.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
Much of GeoEngine's state is lateinit and only set by start(), but it can
be used when it isn't running. On Android the service doesn't start it
while snoozing for wake on leave, yet the UI can be bound to the service
then, and the service can be stopped before it ever started it.
onDestroy's stop() crashed on the uninitialised locationProvider, and the
Home screen's location description and offline address lookups crashed on
the uninitialised multiGeocoder. Found by the test farm's monkey on 2.0.90
on four phones.

GeoEngine now tracks whether it's started: stop() and refreshOfflineMaps()
do nothing, and the lookups and callouts return nothing, when it isn't.
GeoEngineNotStartedTest covers each of them; it replaces CalloutController's
disabled test of an unstarted engine, which relied on it throwing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ex6Fdp5ftuhE1ZEyhZb7WQ
@davecraig
davecraig merged commit beec8e5 into Scottish-Tech-Army:main Oct 22, 2026
5 checks passed

This branch was previously deployed

1 inactive deployment
development — 93ef9e45 Deployed Oct 22, 2026 by davecraig via Build and test iOS app #1628
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