Conversation
A fill mismatch reported the raw dump text as actual, which on modern Android is the field's hint when the field is empty. The observed node now carries the helper's hint-showing fact and the hint itself, so a placeholder read as the value is visible in the failure details. Refs callstack#2903, callstack#2634.
|
Reviewed at d2201eb, the code looks right. The change is additive typed-field plumbing in Not blocking, feel free to take or leave it: at the merge base, I couldn't verify the live-device run on the Pixel emulator (Settings search field) since no log or output was attached — can you share the run output showing |
Summary
Refs #2903, #2634. Downstream report:
Android fill verification failedon an onboarding field whose app rewrites its value, deterministic across reruns; the iOS cousin of the same test reported the placeholder (e.g. Merchant) as the observed value.The Android verifier already samples the hierarchy for 1.5 s until the value holds, and already collapses hint-only text to the empty value when the helper reports
hint-showing(#2063). What the failure did not do is say so:details.actualis the raw dumptext, which on modern Android is the hint of an empty field, and neither the hint-showing fact nor the hint reacheddetails.actualInput. A reader of the failure could not tell a placeholder from a typed value.AndroidFillVerificationNodenow carrieshintShowingandplaceholder(the helper'shint), so bothtargetInputandactualInputin the failure details name them. No verification rule changes; the candidate type that already heldhintShowingprivately now exposes it through the node.Touched: 2 source files, 2 test files.
Validation
Tested commit
d2201eb83.pnpm check:affected --run: passed.buildFillFailureDetailscarrieshintShowing: trueand the placeholder on a hint-only mismatch;verifyAndroidFilledTextInHierarchyexposeshintShowingon the hint-only case and the helperhinton a typed value.emulator-5554), CLI at this head with the built snapshot helper: Settings search, empty field readshintShowing: true,placeholder: "Search settings"; afterfill @e2 "Acme Ltd"the same node readshintShowing: falsewith the placeholder retained. I could not provoke a live mismatch on Settings; the details shape is pinned by the unit tests.