docs: record the wedged-app failure mode and point Phase 7 at it
This commit is contained in:
@@ -148,7 +148,10 @@ Open maps and search a place.
|
|||||||
*DoD:* the Hub calls `/act` and the phone responds.
|
*DoD:* the Hub calls `/act` and the phone responds.
|
||||||
|
|
||||||
**Phase 7 — Resilience**
|
**Phase 7 — Resilience**
|
||||||
Wake the screen, reconnect after a drop, fail cleanly on a missing element.
|
Wake the screen, reconnect after a drop, fail cleanly on a missing element, and
|
||||||
|
handle an app that stops consuming input (a memory-starved phone can deliver a
|
||||||
|
tap that the app never acts on — see `docs/phase-3-spotify-recipe.md`, attempts
|
||||||
|
9, 10 and 13).
|
||||||
*DoD:* a dropped ADB session recovers without a restart.
|
*DoD:* a dropped ADB session recovers without a restart.
|
||||||
|
|
||||||
**Phase 8 — Documentation**
|
**Phase 8 — Documentation**
|
||||||
|
|||||||
@@ -345,6 +345,36 @@ Artemis made this worse than it needed to be: `uiautomator dump` starts a JVM on
|
|||||||
the phone, and the wait helpers were polling every 400ms. `ui.PollInterval` is
|
the phone, and the wait helpers were polling every 400ms. `ui.PollInterval` is
|
||||||
now 1500ms, which cuts that load by roughly two thirds.
|
now 1500ms, which cuts that load by roughly two thirds.
|
||||||
|
|
||||||
|
13. **A second query met the wedged app again.** Straight after the successful
|
||||||
|
run, `spotify_play query="Beatles Hey Jude"` failed at the clear-the-search-box
|
||||||
|
step: the app never acted on the tap, and a 90-second rest did not clear it.
|
||||||
|
Not a recipe fault — the same wedge as attempts 9 and 10, and this time the
|
||||||
|
evidence is complete:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ adb shell input motionevent DOWN 993 186
|
||||||
|
$ adb shell dumpsys input | sed -n '/Input Dispatcher State/,/Input Reader State/p'
|
||||||
|
TouchStatesByDisplay:
|
||||||
|
LogicalDisplayId 0:
|
||||||
|
TouchedWindows:
|
||||||
|
0: name='44f7f5b com.spotify.music/com.spotify.music.MainActivity',
|
||||||
|
targetFlags=FOREGROUND | SPLIT ... FINGER
|
||||||
|
|
||||||
|
$ adb shell dumpsys activity lastanr | tail -2
|
||||||
|
<no ANR has occurred since boot>
|
||||||
|
$ adb shell ps -A -o PID,NAME,%CPU | grep spotify
|
||||||
|
11987 com.spotify.music 41.5
|
||||||
|
$ adb shell grep -E 'MemFree|SwapFree' /proc/meminfo
|
||||||
|
MemFree: 253508 kB
|
||||||
|
SwapFree: 338264 kB
|
||||||
|
```
|
||||||
|
|
||||||
|
The touch reaches Spotify's window; the app does not consume it; Android has
|
||||||
|
not declared an ANR; the phone has 250MB free and has used 3.5GB of its 3.9GB
|
||||||
|
swap. The first run of the heartbeat, from a quieter phone, completed in 35
|
||||||
|
seconds. This is the phone's resource state, not the recipe, and detecting
|
||||||
|
"the app has stopped taking input" belongs to Phase 7 (resilience).
|
||||||
|
|
||||||
### Reproducing it
|
### Reproducing it
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
|||||||
Reference in New Issue
Block a user