Every interaction records pre-state, action, then an independent re-read --
never the call's return value. Toggle proves why: TogglePattern flips WPF
ToggleState without raising Click, so the fixture's status sink stays silent
while the element itself changed. Trusting the sink alone would have recorded
a failure that did not happen.
Posted keystrokes are not uniformly dead. WM_KEYDOWN posted to a Win32 edit
control does register, because TranslateMessage runs in the target thread's
own pump and synthesises the character regardless of how the message arrived;
what the path cannot carry is modifier state. Against Chromium it does not
register at all, with every call still returning success. Establishing that
needed an idle control pass: the Chromium tree moved on its own between two
reads, and without a quiet baseline that drift would have been filed as a
keystroke landing.
The astral-plane payload survives typing. SendInput forces a surrogate pair
into two separate unicode events and the target reassembles it intact, read
back through WM_GETTEXT so the check is independent of both the injection path
and UIA.
Notepad's edit control is unreachable from the managed client, and not merely
unenumerated: TryGetCurrentPattern returns false for Text, Value and Scroll on
the handle-resolved element, while the COM census sees the same window as a
Document carrying all three.
Hit-testing is the only sound visibility primitive of the three tested. The
zero-size control is addressable by handle, enumerable by no walk, and
returned by no point. A minimized window reports an empty rect at the top
level while its descendants report real dimensions at the -32000 anchor, with
IsOffscreen false throughout -- so neither emptiness nor IsOffscreen can gate
occlusion, but ElementFromPoint correctly returns the occluder.