Skip to content

Cover hidden inputs in the accessibility sweep - #87

Draft
Blackspirits wants to merge 4 commits into
upl/review-base-40c9from
test/accessibility-hidden-inputs-40c9
Draft

Blackspirits wants to merge 4 commits into
upl/review-base-40c9from
test/accessibility-hidden-inputs-40c9

Conversation

@Blackspirits

@Blackspirits Blackspirits commented Sep 13, 2026

Copy link
Copy Markdown
Owner

Summary

AccessibleLabels.Apply runs 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 IsEffectivelyVisible was false. Removing that filter exposed two deterministic gaps on both the initial run and retry:

  • TranslateSettingsWindow: the custom prompt TextBox is 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:

  • checks hidden and visible inputs alike;
  • explicitly links the translation prompt to labelPrompt;
  • explicitly links the Voice Manager transcript editor to transcriptHeader;
  • keeps template parts excluded.

Validation

  • based on upstream 40c97b2def70f1c7b919602fbf4e7bed7d0c9fd3
  • initial CI #34767736411 failed deterministically on exactly those two hidden inputs; retry reproduced both failures
  • revised full solution restore passed
  • revised full solution build passed
  • revised full solution test suite passed on the first run
  • UI suite: 5,149 passed, 9 skipped, 0 failed (5,158 total)
  • retry step was not used
  • validation run: #34771047480

AI 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.

@Blackspirits Blackspirits left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 Blackspirits left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant