feat: add Accessibility Insights CI tests using Axe.Windows#923
Conversation
Implements automated accessibility scanning modeled after the WinUI-Gallery pattern. Each app page is instantiated in the UIThreadFixture's hidden window and scanned via Axe.Windows.Automation against the live UIA tree for WCAG violations. Components added: - AxeHelper.cs: Wraps Axe.Windows scanner with global exclusions for known WinUI framework bugs (same set as WinUI-Gallery) and per-page exclusion support. Error output includes ControlType, Name, and AutomationId for actionable remediation. - AccessibilityScanTests.cs: Data-driven xUnit Theory that scans all 17 app pages. New pages are picked up by adding to PageTestData(). ChatPage is excluded (WebView2/CefSharp UIA tree crashes Axe). CI integration (.github/workflows/ci.yml): - Existing UI tests now exclude Category=Accessibility to avoid blocking on known violations while the team remediates (PR openclaw#921). - Dedicated 'Run Accessibility Tests (Axe.Windows)' step with continue-on-error: true surfaces violations as a visible warning in the GitHub Actions summary without blocking merges. - Step summary reports pass/fail with link to PR openclaw#921 for fixes. The tests will initially fail until PR openclaw#921 (accessibility fixes) lands. Remove continue-on-error once all violations are resolved. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Codex review: needs real behavior proof before merge. Reviewed July 2, 2026, 7:16 PM ET / 23:16 UTC. Summary Reproducibility: yes. from source inspection: the proposed test adds production pages to a UI fixture whose Review metrics: 3 noteworthy metrics.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Land this only after the scanner runs pages under a production-like app/page host, the dependency advisory path is resolved or narrowly justified, and the PR includes redacted current-head output showing the accessibility test step scanning real UIA pages. Do we have a high-confidence way to reproduce the issue? Yes from source inspection: the proposed test adds production pages to a UI fixture whose Is this the best way to solve the issue? No, not yet: the right path is to make the scanner exercise a production-like app/page host and keep NuGet audit strict or narrowly justified before adding a soft-fail CI lane. The proposed implementation is useful directionally but can fail before reaching Axe and can weaken advisory enforcement. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 74604aebafef. Label changesLabel changes:
Label justifications:
Evidence reviewedSecurity concerns:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
Hi Karen — bot review with Scott's maintainer feedback included. This is another good direction: automated accessibility scans would be valuable. The current PR cannot merge yet because the CI step is not producing useful accessibility signal. The key issue: the new accessibility step is failing, but CI stays green because of Other issues to fix while repairing the harness:
Bot-ready repair prompt you can give your coding agent: This would be a great CI improvement once the harness produces real signal. Right now, though, the green check is misleading because the new tests are failing underneath it. |
Summary
Implements automated accessibility scanning in CI, modeled after the WinUI-Gallery Accessibility Insights integration pattern. Each app page is instantiated in the UIThreadFixture's hidden window and scanned via
Axe.Windows.Automationagainst the live UI Automation tree for WCAG violations.What's added
AxeHelper.cs— Scanner wrapperAxe.Windows.Automation.ScannerFactory(same engine behind Accessibility Insights)NameIsInformative,NameExcludesControlType,NameExcludesLocalizedControlType,SiblingUniqueAndFocusableDictionary<string, RuleId[]>[RuleId] Element 'ControlType' (Name='...', AutomationId='...') violated rule: ...AccessibilityScanTests.cs— Data-driven page scanner[Theory]with[MemberData]scanning all 17 app pagesPageTestData()ChatPageexcluded (WebView2/CefSharp UIA tree crashes Axe — same as WinUI-Gallery's WebView2 exclusion)[Trait("Category", "Accessibility")]for independent filteringCI workflow changes (
.github/workflows/ci.yml)Category!=Accessibilityto avoid blocking on known violationscontinue-on-error: trueExpected behavior
The accessibility tests will fail initially — this is expected. #921 fixes the low-hanging WCAG violations discovered by these scans. The
continue-on-error: trueensures CI stays green while the team remediates. Once #921 lands and violations are resolved,continue-on-errorshould be removed to enforce accessibility as a gate.Validation
Architecture (WinUI-Gallery pattern)