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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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.
performClick()on a disabled node does not throwsubmitbelow the foldnew-contactis the field,lookup-contactthe buttonconfirm-contactonly exists after a successful lookupbuddy-vsbuddy-circle-storiesis 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 insidesignInsettled 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.
mentioned in issue #21
mentioned in commit
dff6eb29dd