testsAndMisc/python_pkg
Krzysztof kuhy Rudnicki 88ffa37fe1
Some checks are pending
md-naming / markdown naming convention (push) Waiting to run
Pre-commit checks / pre-commit (push) Waiting to run
Python tests / test (push) Waiting to run
Shell tests / shell-tests (push) Waiting to run
Shell tests / arch-tests (push) Waiting to run
Find Material text fields by their hint label
A Flutter/Material TextField publishes its label as `hint` and leaves text
and content-desc empty, so every field on such a form arrived as an
anonymous EditText. The workout app's manual-workout form is nine of them:
the only way to fill it was by screen position, which is precisely the
mis-tap-writes-the-wrong-field failure this tool exists to prevent.

`hint` ranks below text and content-desc but above resource-id. Material
clears the hint once content arrives, so a filled field still answers to its
real text and a caller can tell an empty field from a completed one.

The app-side alternative does not work and is documented as a trap: wrapping
the field in Semantics(label:) emits a second labelled node at the same rect,
and MergeSemantics collapses them by dropping the hint from Android's tree,
which leaves the form MORE anonymous than before. Widget tests cannot catch
that -- they assert on Flutter's SemanticsNode while this tool reads
Android's AccessibilityNodeInfo, so nine of them passed green on the build
whose on-device labels had just gone empty.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AWq9MRemX9ZWvNmnhNWUP2
2026-08-27 20:39:46 +02:00
..
android_ui Find Material text fields by their hint label 2026-08-27 20:39:46 +02:00
app_icons ci: check out shared gates in pre-commit; add punchme icon 2026-08-25 21:31:32 +02:00
archwiki_rag Fix a test that only passed in a directory named testsAndMisc 2026-08-23 14:53:29 +02:00
artgate artgate: add 64px icon spec for the diffusion route 2026-08-15 23:30:32 +02:00
brother_printer Clear the last three brother_printer test modules over the cap 2026-08-16 17:27:07 +02:00
code_tutor Clear the seven over-cap code_tutor test modules 2026-08-16 18:06:38 +02:00
endurain_import Dedupe endurain imports against postgres when the API cannot answer 2026-08-23 15:23:08 +02:00
live_calc refactor: extract all inline Python from shell scripts into proper .py files 2026-06-06 10:31:48 +02:00
morning_routine Remove wake_alarm (extracted to kuhyx/wake-alarm) and fix the orchestrator 2026-06-22 12:47:06 +02:00
random_jpg Adopt the four markdown namespaces and gate them 2026-08-24 15:55:46 +02:00
shared Migrate wake_alarm to the shared gatelock backend 2026-06-22 07:33:49 +02:00
syncyomi_guard syncyomi_guard: refuse a collapsed payload as the new good copy 2026-08-10 15:33:18 +02:00
tests Instrument: multi-line array elements are not statements; clear arch_perf_fixes 2026-08-22 20:13:45 +02:00
token_audit Land the token_audit standing-cost checkup (116 tests, 100% branch coverage) 2026-08-22 14:33:03 +02:00
vscode_optimizer vscode_optimizer: detect Intel iGPUs as Intel, not AMD 2026-08-17 14:49:43 +02:00
wsg_grabber Clear the wsg_grabber test modules: python_pkg is now under the cap 2026-08-16 18:19:26 +02:00
__init__.py feat(screen_locker): harden table tennis verification, remove running option 2026-02-02 21:38:52 +01:00
.gitignore screen_locker: enhance workout logging and UI 2025-12-02 23:22:13 +01:00
conftest.py test: achieve 100% branch coverage across all python_pkg packages 2026-03-21 17:51:36 +01:00