a11y(index): ARIA landmarks + canvas accessible name + aria-live region#125
Merged
Merged
Conversation
Lands 3 of 4 chromium-1080p a11y test failures unmasked by #121. Edits: - `index.html`: - `#app` gets `role="main"` (satisfies `accessibility.spec.js:33` landmark check). - `#pixi-container` gets `role="application"` + `aria-label="IDApTIK game"` (satisfies `accessibility.spec.js:75` accessible-name check; covers all canvas descendants via `.closest('[role="application"]')`). - New `#aria-status` div with `role="status"` + `aria-live="polite"` + `aria-atomic="true"` + visually-hidden CSS class (satisfies `accessibility.spec.js:155` live-region check). - `public/style.css`: adds the standard `.visually-hidden` recipe (clip-rect+1px+overflow-hidden) so the status region is announced without affecting layout. Wiring of dual-alert HUD level transitions into the `#aria-status` text content is intentionally out of scope; the live region's presence is what the spec asserts, and dispatching content into it from `DualAlertBridge.res` is a separate follow-up. The 4th a11y test (high-contrast does not break rendering) depends on the 5-console-errors-during-load issue tracked in the Group C slice of #122 and is not addressed here. Refs #122 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com>
🔍 Hypatia Security ScanFindings: 71 issues detected
View findings[
{
"reason": "Issue in boj-build.yml",
"type": "missing_timeout_minutes",
"file": "boj-build.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in build-validation.yml",
"type": "missing_timeout_minutes",
"file": "build-validation.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in cflite-pr.yml",
"type": "missing_timeout_minutes",
"file": "cflite-pr.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in codeql.yml",
"type": "missing_timeout_minutes",
"file": "codeql.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in containers.yml",
"type": "missing_timeout_minutes",
"file": "containers.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in containers.yml",
"type": "missing_timeout_minutes",
"file": "containers.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in dco.yml",
"type": "missing_timeout_minutes",
"file": "dco.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in dogfood-gate.yml",
"type": "missing_timeout_minutes",
"file": "dogfood-gate.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in dogfood-gate.yml",
"type": "missing_timeout_minutes",
"file": "dogfood-gate.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in dogfood-gate.yml",
"type": "missing_timeout_minutes",
"file": "dogfood-gate.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Lands the smallest tractable slice of the #122 a11y follow-up — closes 3 of 4 chromium-1080p accessibility failures unmasked once #121 made the page actually load.
index.html:#app→role="main"(lands landmark check)#pixi-container→role="application"+aria-label="IDApTIK game"(canvas inherits via.closest('[role="application"]'))#aria-statusdiv withrole="status"+aria-live="polite"+aria-atomic="true"(lands live-region check)public/style.css: standard.visually-hiddenrecipe so the status region announces without affecting layoutTest plan
cd tools/compat-testing && pnpm playwright test tests/accessibility.spec.js --project=chromium-1080paccessibility.spec.js:33(ARIA landmarks are present) → passaccessibility.spec.js:75(canvas has accessible name or label) → passaccessibility.spec.js:155(screen reader announcements via aria-live regions) → passaccessibility.spec.js:222(high contrast mode does not break rendering) → still fails (depends on the 5-console-errors-during-load issue tracked in Playwright: residual 6 test failures unmasked by #121 (a11y, perf threshold, console errors) #122 Group C)Out of scope
DualAlertBridge.resto dispatch dual-alert level transitions into#aria-status.textContent. The spec only asserts the live region's presence, not that it carries content. Follow-up tracked in Playwright: residual 6 test failures unmasked by #121 (a11y, perf threshold, console errors) #122.Refs #122
🤖 Generated with Claude Code