Repository navigation
test(android): pin that a child vanishing mid-read reads as gone - #3905
Conversation
Route AccessibilityNodeReads.child through a generic nullIfGone seam so the JVM suite can reach the catch, and document that a null node is a programmer error the catch would also hide. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Size Report
Startup median (7 runs, lower is better):
|
|
The code at a09cc7d is ready, and the new test correctly pins that a child vanishing mid-read reads as gone. I read the FutureTask and await path to confirm the test would fail without the fix, but I did not run the JVM suite or mutate the catch. I could not check the API 35 framework sources, so the note that getChildCount and getBoundsInScreen are plain field reads is not verified here. There are no conflicts. Smoke Tests is still running, and it covers this change through the Android snapshot helper build and SnapshotHelperTestSuite, which now includes the new case. The other 15 checks are green, so this PR can merge once Smoke Tests finishes green. Not blocking, and you can take or leave these: |
|
* origin/main: perf(ios): confirm fill focus from the tapped input before the keyboard (#3906) feat(perf): time every iOS command against the fixture app (#3885) fix(ios): stop the XCTest-channel penalty from re-arming itself (#3896) test(android): pin that a child vanishing mid-read reads as gone (#3905) ci: skip device smoke lanes when a PR changes no lane input (#3904) fix(ios): verify deep-tree back on the sole screen (#3894) fix(ios): synthesize long presses and the gesture viewport on deep trees (#3893) perf(ios): read each resolved text input through one snapshot (#3882) fix(gate): take the host validation lock for heavy gates (#3900) fix(logs): keep an early iOS simulator logs stop from hanging the session (#3892) fix(apple): clean the runner derived path the runner uses (#3897) test(provider-scenarios): open deadline scenarios without the test IME (#3903) test(host-kit): stub os.homedir for the exec-trace late-close test (#3898) feat(test-app): add a Bluesky-depth heavy feed screen (#3884)
Summary
Follow-up to #3901, applying the review's non-blocking notes. 2 files changed.
AccessibilityNodeReads.childnow reads throughnullIfGone, a small generic seam that treats a throwing read as a gone node. The JVM suite can reach it, and a newAccessibilityReadBatchTestcase fails if the catch is removed. A non-vanishing failure (IllegalStateException) still propagates.nodeis a programmer error that the catch would also hide.child.getChildCountand the bounds reads inappendNodeneed no guard. In the framework sources (API 35),getChildCount()returnsmChildNodeIds.size()andgetBoundsInScreen(Rect)copiesmBoundsInScreen. Both are field reads on a sealed node with no interaction-client call. OnlygetChildgoes throughAccessibilityInteractionClient, and fix(android): read a child that vanished mid-read as gone #3901 already covers it.Validation
pnpm check:affected --run --head a09cc7df06passed (exactCommit). The snapshot helper build runsSnapshotHelperTestSuite, which includes the new case.NullPointerException: window closedfrom the new case.🤖 Generated with Claude Code