This repo is a production-style proposal package for the Quickstart team to review and run.
It includes:
- A dual-track scanning model (PR CI + live-site monitoring).
- Automated URL discovery (sitemap + crawl + Drupal/WordPress adapters).
- Pilot workflows for GLOW and Quickstart.
- Dashboard generation and publishing-ready artifacts.
- Strategic planning docs in both Markdown and HTML.
This qs-proposal repo is the planning and reporting source of truth for the current remediation wave.
Latest tracked status:
- DRC reported 2026 potential issues this week via two CSV files (
Summary+Detail), totaling 346 occurrences across 10 issue IDs. - High/medium-confidence remediation work was opened upstream in
az-digital/az_quickstart:- PR #5639 (
accessibility-fixes-high-confidence) - PR #5640 (
accessibility-fixes-medium-confidence) - PR #5641 (
accessibility-fixes-button-names) - PR #5642 (
accessibility-fixes-mobile-nav-callback) - PR #5643 (
accessibility-fixes-carousel-aria) - PR #5644 (
accessibility-fixes-high-confidence-round2) - PR #5645 (
accessibility-fixes-high-confidence-round3)
- PR #5639 (
- CI/workflow reliability fixes were applied where needed:
- Composer audit check now distinguishes true vulnerability failures from abandoned-package-only output.
- Carousel JS lint failures were corrected.
- Tugboat preview coverage is now available for PR #5639-#5645, including PR #5639 (
https://pr5639-qxgkrp3cc8zfunxaiz5kh7tdzpqof0tk.tugboatqa.com). - Before/after reporting is scoped to the same URL set; projected impact remains pending post-merge verification scans.
This repository is the program operations and reporting repo for the Quickstart accessibility effort.
Use it for:
- Reviewing current remediation status, PR mapping, and rollout notes.
- Running scanner workflows and discovery workflows.
- Refreshing dashboard snapshots and leadership reporting artifacts.
Do not use it for:
- Shipping Quickstart product code changes (those belong in
az-digital/az_quickstartPRs). - Treating projected reduction values as final closure without same-scope verification rescans.
Recommended operating flow for the az-digital team:
- Review open PR wave status (#5639-#5645) and Tugboat previews.
- Run scan workflows in non-filing mode first (
file_issues=false) for signal quality checks. - Enable filing only for intentional remediation cycles (
file_issues=true). - Run Dashboard Refresh after each validated cycle.
- Use refreshed snapshots for leadership readouts and weekly governance review.
- Local action:
/.github/actions/discover - Sources:
sitemap.xmland sitemap indexes- bounded crawling from seed URLs
- optional Drupal route endpoint (
drupal_routes_url) - optional WordPress REST endpoint (
wordpress_base_url)
- Output:
- scanner-ready
url_configsJSON
- scanner-ready
- Action:
github/accessibility-scanner@v3 - Scans rendered pages with Playwright + Axe-core (and optional reflow scan).
- Files issues into target repo and deduplicates with
cache_key.
- Dashboard app:
dashboard/index.html - Includes rule-level online help links and drill-in scenario guidance for top/repeated violations.
- Includes an Action Center with prioritized fixes, likely owner teams, likely fix areas, and one-click issue drafts.
- Action Center now groups by fixable pattern (not per-instance noise) and includes occurrence/path blast radius for actionable issue drafts.
- Includes remediation tracking deltas between snapshots and dedupe/ignore guardrails so repeated or ignored findings do not inflate executive metrics.
- Includes Validation Wins panels so rule passes/resolved rules are visible alongside failures.
- Data files:
dashboard/data/latest.jsondashboard/data/history/*.json
- Refresh pipeline:
.github/workflows/dashboard-refresh.ymlscripts/update-dashboard-data.mjs
QUICKSTART-ACCESSIBILITY-PLAN.md/.htmltodo.md/.htmlREADME.md/.html.github/actions/discover/README.md/.html
File: .github/workflows/pilot-scan.yml
Runs two pilot tracks:
- Quickstart (
https://quickstart.arizona.edu) - GLOW (
https://www.letitglow.app)
Each track:
- Discovers URLs.
- Scans discovered URLs with
github/accessibility-scanner@v3only whenfile_issues=true. - Keeps issue filing manual-only by default (
file_issues=false).
File: .github/workflows/quickstart-sitemap-rescan.yml
This workflow scans Quickstart using the full sitemap chunk input checked into:
scan-input/quickstart-sitemap/chunks.jsonscan-input/quickstart-sitemap/chunk-*.json
It runs each chunk in parallel and writes a run summary with total URL and chunk counts.
File: .github/workflows/pr-checkin-simulation.yml
This covers CI-style pre-merge behavior:
- Runs on
workflow_dispatchonly. - Discovers URLs from a target rendered endpoint.
- Runs scanner with non-blocking or enforced mode when
file_issues=true. - Publishes a step summary showing target, URL count, mode, and outcome.
Default target is https://quickstart.arizona.edu, and workflow-dispatch lets you pass any preview/staging URL.
File: .github/workflows/dashboard-refresh.yml
- Pulls current issue state from
accesswatch/qs-proposal. - Recomputes summary metrics and top violations.
- Writes
dashboard/data/latest.jsonwith executive brief + drill-downs + action center + scan operations simulation. - Appends timestamped history snapshot.
- Generates static email-ready report at
dashboard/static/latest-report.html.
File: .github/workflows/configurable-scan.yml
This workflow supports mixed operating modes from one entrypoint:
- workflow_dispatch for frontend/manual launch requests.
- Mode options:
delta(new-issue-focused) andcomplete(authoritative full scan). - Rule profiles:
focused-rules,all-rules, andaxe-only. - Issue filing control:
file_issues(defaultfalse) to prevent automatic issue creation. - Publishes run summary with selected combination and discovered URL count.
Add a fine-grained PAT as repository secret in accesswatch/qs-proposal:
issues: writecontents: writepull_requests: writemetadata: readactions: write
Note: github/accessibility-scanner requires this token input.
Add a repository secret named GLOW_AUTH_CONTEXT containing scanner auth_context JSON so the GLOW scan can run with an accepted consent/session state.
Example shape:
{
"cookies": [
{"name":"consent","value":"true","domain":"www.letitglow.app","path":"/"}
],
"localStorage": {
"https://www.letitglow.app": {
"consentAccepted":"true"
}
}
}Without this, many discovered URLs can redirect through /consent?next=..., which reduces scan fidelity.
- Open Actions in
accesswatch/qs-proposal. - Run Pilot Accessibility Scan (Quickstart + GLOW) for discovery/scan readiness.
- Run PR Check-in Accessibility Simulation to test CI-style behavior.
- Run Configurable Accessibility Scan for frontend/admin mode combinations.
- Set
file_issues=trueonly when you intentionally want issue creation. - Run Dashboard Refresh.
- Open
dashboard/index.html(or publish via GitHub Pages). - Open
dashboard/static/latest-report.htmlfor email/share snapshots.
For full sitemap verification, run Quickstart Full Sitemap Rescan.
- Create a short-lived branch in this repo and open a PR.
- Confirm
PR Check-in Accessibility Simulationruns automatically. - For manual simulation, run the workflow with:
target_url= preview/staging/live rendered endpointnon_blocking=truefirst, thenfalsefor gate rehearsalfile_issues=falsefor dry-runs,trueonly for intentional filing
- Review run summary + filed issues.
- Use this to tune rule thresholds and blocking policy before upstream rollout.
In .github/workflows/pilot-scan.yml, adjust:
max_depthmax_urlsinclude_domainsexclude_url_patternscache_keyscans(["axe","reflow-scan"])
This repo now has a runnable end-to-end operating model.
The only non-repo dependencies are org permissions, secrets, and scan target reachability.
If you have a local sitemap file (example: C:\code\data.xml), rebuild the scan input with:
node scripts/build-quickstart-sitemap-input.mjs "C:\code\data.xml" "scan-input/quickstart-sitemap" 40This writes:
scan-input/quickstart-sitemap/urls.txtscan-input/quickstart-sitemap/chunks.jsonscan-input/quickstart-sitemap/chunk-001.json...chunk-XXX.json