Cover hidden inputs in the accessibility sweep - #87
Blackspirits wants to merge 4 commits into
Conversation
Blackspirits
left a comment
There was a problem hiding this comment.
Independent adversarial re-check: removing the initial-visibility filter exposed exactly two reproducible unnamed controls on both the first test run and its retry: TranslateSettingsWindow's custom prompt TextBox and VoiceManagerWindow's transcript editor. Both relationships are now explicit via LabeledBy, and the stricter hidden+visible sweep remains enabled. Revised full CI #34771047480 passed restore, build and the complete suite on the first run; UITests reported 5,149 passed, 9 skipped, 0 failed. Retry was not used. No blocker identified. Keep draft; no merge or upstream change performed.
Blackspirits
left a comment
There was a problem hiding this comment.
Independent adversarial re-check: removing the initial-visibility filter exposed exactly two real unnamed controls on the first run and retry (TranslateSettingsWindow prompt TextBox and VoiceManagerWindow transcript TextBox). The final revision gives both explicit label relationships and retains hidden-input coverage. Full CI #34771047480 passed restore, build and the complete solution suite on the first run; UITests reported 5,149 passed, 9 skipped, 0 failed. Retry was not used. No blocker identified. Keep draft; no merge or upstream change performed.
Summary
AccessibleLabels.Applyruns once when a window loads and walks all logical descendants, including controls that are currently hidden. A hidden input therefore needs its accessible name during that one pass; when a mode switch later makes it visible, there is no second automatic labeling pass.The accessibility sweep previously skipped every input whose
IsEffectivelyVisiblewas false. Removing that filter exposed two deterministic gaps on both the initial run and retry:TranslateSettingsWindow: the custom promptTextBoxis shown only for engines with prompts, and sits in a different grid row from its visible prompt label;VoiceManagerWindow: the transcript editor is shown only for file-backed clone voices, and its header lives inside a sibling grid that the inference algorithm intentionally does not cross.This revision:
labelPrompt;transcriptHeader;Validation
40c97b2def70f1c7b919602fbf4e7bed7d0c9fd3AI assistance: ChatGPT was used to audit the one-shot accessibility labeling lifecycle, expose hidden-input coverage, and convert the two discovered gaps into explicit label relationships.