|
| 1 | +--- |
| 2 | +title: Accessibility Scan Workshop |
| 3 | +description: Hands-on workshop teaching WCAG 2.2 accessibility scanning using axe-core, IBM Equal Access, and custom Playwright checks |
| 4 | +ms.date: 2026-03-29 |
| 5 | +--- |
| 6 | + |
| 7 | +# Accessibility Scan Workshop |
| 8 | + |
| 9 | +Hands-on workshop teaching WCAG 2.2 accessibility scanning using axe-core, |
| 10 | +IBM Equal Access, and custom Playwright checks. Students learn to detect, |
| 11 | +report, and remediate accessibility violations across 5 intentionally |
| 12 | +inaccessible demo web applications built in Rust, C#, Java, Python, and Go. |
| 13 | + |
| 14 | +## Architecture |
| 15 | + |
| 16 | +```mermaid |
| 17 | +graph LR |
| 18 | + subgraph "Demo Apps (5)" |
| 19 | + A001["001 Rust<br/>Travel Agency"] |
| 20 | + A002["002 C#<br/>E-Commerce"] |
| 21 | + A003["003 Java<br/>Learning Platform"] |
| 22 | + A004["004 Python<br/>Recipe Sharing"] |
| 23 | + A005["005 Go<br/>Fitness Tracker"] |
| 24 | + end |
| 25 | +
|
| 26 | + subgraph "Scan Engines" |
| 27 | + AXE["axe-core"] |
| 28 | + IBM["IBM Equal Access"] |
| 29 | + CUSTOM["Custom Playwright Checks"] |
| 30 | + end |
| 31 | +
|
| 32 | + subgraph "Output" |
| 33 | + SARIF["SARIF 2.1.0"] |
| 34 | + JSON["JSON Reports"] |
| 35 | + PDF["PDF Reports"] |
| 36 | + end |
| 37 | +
|
| 38 | + subgraph "Integration" |
| 39 | + GH["GitHub Security Tab"] |
| 40 | + ACTIONS["GitHub Actions"] |
| 41 | + COPILOT["Copilot Agents"] |
| 42 | + end |
| 43 | +
|
| 44 | + A001 & A002 & A003 & A004 & A005 --> AXE & IBM & CUSTOM |
| 45 | + AXE & IBM & CUSTOM --> SARIF & JSON & PDF |
| 46 | + SARIF --> GH |
| 47 | + ACTIONS --> AXE & IBM & CUSTOM |
| 48 | + COPILOT --> GH |
| 49 | +``` |
| 50 | + |
| 51 | +## Labs |
| 52 | + |
| 53 | +| Lab | Title | Duration | Level | |
| 54 | +| --- | --- | --- | --- | |
| 55 | +| 00 | Prerequisites and Environment Setup | 30 min | Beginner | |
| 56 | +| 01 | Explore the Demo Apps and WCAG Violations | 25 min | Beginner | |
| 57 | +| 02 | axe-core — Automated Accessibility Testing | 35 min | Intermediate | |
| 58 | +| 03 | IBM Equal Access — Comprehensive Policy Scanning | 30 min | Intermediate | |
| 59 | +| 04 | Custom Playwright Checks — Manual Inspection Automation | 35 min | Intermediate | |
| 60 | +| 05 | SARIF Output and GitHub Security Tab | 30 min | Intermediate | |
| 61 | +| 06 | GitHub Actions Pipelines and Scan Gates | 40 min | Advanced | |
| 62 | +| 07 | Remediation Workflows with Copilot Agents | 45 min | Advanced | |
| 63 | + |
| 64 | +## Lab Dependency Diagram |
| 65 | + |
| 66 | +```mermaid |
| 67 | +graph LR |
| 68 | + L00[Lab 00: Setup] --> L01[Lab 01: Demo Apps] |
| 69 | + L01 --> L02[Lab 02: axe-core] |
| 70 | + L01 --> L03[Lab 03: IBM Equal Access] |
| 71 | + L01 --> L04[Lab 04: Custom Checks] |
| 72 | + L02 --> L05[Lab 05: SARIF] |
| 73 | + L03 --> L05 |
| 74 | + L04 --> L05 |
| 75 | + L05 --> L06[Lab 06: GitHub Actions] |
| 76 | + L06 --> L07[Lab 07: Remediation] |
| 77 | +``` |
| 78 | + |
| 79 | +Labs 02, 03, and 04 can be completed in any order after Lab 01. |
| 80 | + |
| 81 | +## Delivery Tiers |
| 82 | + |
| 83 | +| Tier | Labs | Duration | Azure Required | |
| 84 | +| --- | --- | --- | --- | |
| 85 | +| Half-Day | 00, 01, 02, 03, 05 | ~3 hours | No | |
| 86 | +| Full-Day | 00–07 (all) | ~6.5 hours | Yes | |
| 87 | + |
| 88 | +## Tool Stack |
| 89 | + |
| 90 | +| Tool | Purpose | |
| 91 | +| --- | --- | |
| 92 | +| axe-core | WCAG 2.2 automated rule checking | |
| 93 | +| IBM Equal Access | Policy-based accessibility scanning | |
| 94 | +| Custom Playwright Checks | Manual inspection automation | |
| 95 | +| SARIF | Static Analysis Results Interchange Format | |
| 96 | + |
| 97 | +## Prerequisites |
| 98 | + |
| 99 | +- GitHub account with Copilot access |
| 100 | +- Node.js 20+ |
| 101 | +- Docker Desktop |
| 102 | +- Azure subscription (full-day tier only) |
| 103 | +- PowerShell 7+ |
| 104 | +- GitHub CLI (`gh`) |
| 105 | +- Azure CLI (`az`) (full-day tier only) |
| 106 | + |
| 107 | +## Quick Start |
| 108 | + |
| 109 | +1. Fork and clone `devopsabcs-engineering/accessibility-scan-demo-app` |
| 110 | +2. Run `npm install && npx playwright install --with-deps chromium` |
| 111 | +3. Start the scanner: `./start-local.ps1` |
| 112 | +4. Open [Lab 00](labs/lab-00-setup.md) and begin |
| 113 | + |
| 114 | +## Contributing |
| 115 | + |
| 116 | +See [CONTRIBUTING.md](CONTRIBUTING.md) for lab authoring guidelines. |
| 117 | + |
| 118 | +## License |
| 119 | + |
| 120 | +[MIT](LICENSE) |
0 commit comments