The on-device suite catches up with the app #103

Merged
paulhitt merged 1 commits from fix/instrumented-suite-catches-up into main 2026-09-06 18:09:17 +00:00
paulhitt commented 2026-09-06 10:51:40 +00:00 (Migrated from gitlab.com)

Nine defects, all in the test, none in the app. These suites predate the tab split, the age gate and the two sign-out doors, and had not been run since. Each staleness hid behind the one before it.

# What Why it was invisible
1 Age gate never filled performClick() on a disabled node does not throw
2 submit below the fold an off-screen node still reports enabled
3 Peer name typed into a button new-contact is the field, lookup-contact the button
4 Lookup step skipped confirm-contact only exists after a successful lookup
5 buddy- vs buddy-circle- reported "never became a contact" about one on screen
6 RECORD_AUDIO not granted mic dialog isn't in the Compose tree → "No compose hierarchies"
7 Sign-out a no-op needed scrolling and a confirming second tap
8 Wrong sign-out door plain sign-out keeps the credential, by design
9 Groups/stories on their own tabs stories is the strip on Home, not the tab

#2 is the one worth remembering. assertIsEnabled() is a state check wearing the costume of a visibility check. It passes on an invisible node, the click dispatches into nothing, and the app never hears about it — 450 seconds of waiting for a screen nobody had asked for. Only logging from inside signIn settled it.

All four tests pass. Not yet all in one run: the add-contact lookup is throttled per window and four tests share it — the two waits that span a relay poll are at 150s, and they are the only two that flake.

Temporary diagnostics removed; the app diff is empty.

Nine defects, **all in the test, none in the app**. These suites predate the tab split, the age gate and the two sign-out doors, and had not been run since. Each staleness hid behind the one before it. | # | What | Why it was invisible | |---|---|---| | 1 | Age gate never filled | `performClick()` on a disabled node does not throw | | 2 | `submit` below the fold | an off-screen node still reports **enabled** | | 3 | Peer name typed into a button | `new-contact` is the field, `lookup-contact` the button | | 4 | Lookup step skipped | `confirm-contact` only exists after a successful lookup | | 5 | `buddy-` vs `buddy-circle-` | reported "never became a contact" about one on screen | | 6 | RECORD_AUDIO not granted | mic dialog isn't in the Compose tree → "No compose hierarchies" | | 7 | Sign-out a no-op | needed scrolling **and** a confirming second tap | | 8 | Wrong sign-out door | plain sign-out keeps the credential, by design | | 9 | Groups/stories on their own tabs | `stories` is the strip on Home, not the tab | **#2 is the one worth remembering.** `assertIsEnabled()` is a state check wearing the costume of a visibility check. It passes on an invisible node, the click dispatches into nothing, and the app never hears about it — 450 seconds of waiting for a screen nobody had asked for. Only logging from inside `signIn` settled it. All four tests pass. Not yet all in one run: the add-contact lookup is throttled per window and four tests share it — the two waits that span a relay poll are at 150s, and they are the only two that flake. Temporary diagnostics removed; the app diff is empty.
paulhitt commented 2026-09-06 10:51:56 +00:00 (Migrated from gitlab.com)

mentioned in issue #21

mentioned in issue #21
paulhitt commented 2026-09-06 18:09:17 +00:00 (Migrated from gitlab.com)

mentioned in commit dff6eb29dd

mentioned in commit dff6eb29dd75cc17e93ff95a27a79e702a71a285
paulhitt (Migrated from gitlab.com) merged commit dff6eb29dd into main 2026-09-06 18:09:17 +00:00
Sign in to join this conversation.