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.
|
||||
|
||||
**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.
|
||||
|
||||
**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
|
||||
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
|
||||
|
||||
```sh
|
||||
|
||||
Reference in New Issue
Block a user