WCAG 2.1 Level AA Audit · psc.ga.gov
This report inventories the WCAG 2.1 Level AA violations identified on the live Georgia Public Service Commission website, and cross-references each finding to the corrected element in our remediated demo.
Compliance standard: WCAG 2.1 Level AA (satisfies ADA Title II)
Federal context: DOJ 2024 ruling — state/local government sites; April 2026 deadline for entities ≥50K population.
Audit date: 2026-05-05
Headline numbers
| Site | pa11y WCAG 2.1 AA | axe-core (Deque) | Verified |
|---|---|---|---|
| Live psc.ga.gov | 66 errors | 94 violations | 2026-05-05 |
| This demo (PAS rebuild) | 0 errors | 0 violations | 2026-05-05 |
The live psc.ga.gov site fails WCAG 2.1 Level AA on 66 elements per pa11y (62 are color-contrast failures, WCAG 1.4.3) and 94 elements per axe-core (58 color-contrast + 29 missing landmarks + 4 heading-order + 2 link-name + 1 aria-required-attr). The remediated demo passes both engines with zero findings.
axe-core results exclude content inside third-party embedded iframes (e.g., the YouTube player), since iframe content accessibility is the responsibility of the embedded content provider, not the embedding site.
Summary of violation classes addressed
| Severity | Count | WCAG criteria affected |
|---|---|---|
| Critical | 3 | 2.4.1 (skip nav), 1.3.1 (landmarks), 1.1.1 (alt text) |
| Major | 62 | 1.4.3 (contrast — bulk of pa11y findings), 2.4.7 (focus), 4.1.2 (icon labels, button names, iframe titles) |
| Minor | 2 | 3.1.1 (lang), 2.4.4 (link text) |
Findings & remediations
| WCAG | Finding | Fix | Demo |
|---|---|---|---|
| 2.4.1 | No skip-to-main-content link — keyboard users must tab through every navigation link to reach page content. | Inserted <a class="skip-nav" href="#main-content">Skip to main content</a> as first focusable element on every page; styled invisible until focused. |
Tab from / |
| 1.3.1 | No semantic landmarks (<header>, <nav>, <main>, <footer>). Every region is a <div>; screen readers can't navigate by region. |
Promoted top-level wrappers to semantic tags with role attributes; added aria-label="Main" to nav. |
Inspect / |
| 1.4.3 | Gold (#C9A84C) on white text in nav and link contexts — contrast ratio ~3.0:1, fails AA (4.5:1 required for body text). | CSS override darkens contextual gold to #6B5318 (4.5:1+) for body-text usage. Decorative gold (seal, separators) preserved. |
View / |
| 2.4.7 | No visible focus indicators on most interactive elements. Keyboard users can't tell which element has focus. | CSS override: 3px solid #C9A84C outline + 2px offset + box-shadow on every :focus state. |
Tab through / |
| 4.1.2 | Icon-only links (search, social, login, file action) have no accessible name. Screen readers announce "link" with no context. | Each icon-only link given an aria-label derived from the FontAwesome class or href. |
Header of / |
| 1.3.1 | <h1> wraps a <p> child (invalid HTML); <p role="heading"> used for the mission statement instead of <h2>. |
Flattened h1 to direct text; promoted role="heading" paragraphs to proper heading tags; restored size visual hierarchy. |
Headings on / |
| 4.1.2 | Embedded YouTube <iframe> uses aria-label but no title attribute (some screen readers prefer title). |
Added title attribute mirroring the aria-label; both now present for max compat. |
Video on / |
| 1.1.1 | Logo image had generic alt="Logo" — provides no information to screen-reader users. Some commissioner photos had ambiguous alts derived from filenames. |
Replaced generic alts: alt="Logo" → alt="Georgia Public Service Commission seal". Commissioner photos given alt="Commissioner [Name]". Empty alts preserved for true decoration. |
Logo on / |
| 3.1.1 | OK on homepage (lang="en" set). Some inner pages lacked language declaration. |
Verified <html lang="en"> on every demo page. |
Inner page |
| 2.4.4 | "More Information" / "Read more" / "Click here" links provide no destination cue when read out of context (e.g. when a screen reader pulls a "links list"). | Appended visually-hidden .pas-sr-only span to each generic-text link with a destination cue derived from the href slug — e.g. "More Information about utility-assistance-programs". |
Callouts on / |
Verification
The remediated demo at psc-ada-demo.primeautomationsolutions.com has been verified with two independent automated accessibility engines:
- pa11y with
--standard WCAG2AA(HTML CodeSniffer engine) — 0 errors on homepage, audit report, and sampled skeleton pages - axe-core 4.11 (Deque Systems) — 0 violations on homepage, audit report, and sampled skeleton pages (excluding third-party iframe content)
- Same tests against live psc.ga.gov: 66 pa11y errors, 94 axe violations (baseline)
All numbers verified 2026-05-05. The same pages can be re-tested at any time with pa11y --standard WCAG2AA <url> or axe <url> --exclude iframe.
Automated tools catch ~30–50% of WCAG issues. Full WCAG 2.1 AA conformance also requires:
- Manual screen-reader QA (NVDA, JAWS, VoiceOver) on every page
- Keyboard-only navigation walkthrough on every interactive element
- Document remediation: each PDF, DOCX, and XLSX served from psc.ga.gov requires its own tagging pass (out of scope for this demo, scoped under a separate SOW-B engagement)
Screen reader performance (NVDA & JAWS)
Automated tools (pa11y, axe-core) catch the largest classes of accessibility failures, but the gold standard is real-world usage with the screen readers actually used by people with visual disabilities. The two dominant tools — NVDA (NV Access, free) and JAWS (Vispero, commercial) — were used as the design target for every remediation choice on this demo. Specifically:
| Screen-reader feature | How the demo supports it |
|---|---|
| Page navigation by heading (H key in NVDA, H key in JAWS) | Heading hierarchy is gap-free (h1 → h2 → h3, no level skips). Heading text is descriptive in isolation — a user pulling up the headings list sees a coherent table of contents. |
| Page navigation by landmark (D key in NVDA, R key in JAWS) | Five distinct landmarks: <header role="banner">, <nav aria-label="Main">, <main id="main-content">, <footer role="contentinfo">, plus the demo banner as role="region" aria-label="Demo notice". Each landmark is uniquely labeled so they're distinguishable in the landmarks list. |
| Skip to main content (Tab from page load) | First focusable element is the skip-nav link. Visible on focus only (not on hover), styled to NVDA/JAWS conventions. |
| Image announcements | Every meaningful image has descriptive alt text — e.g. alt="Georgia Public Service Commission seal" instead of the original alt="Logo". Decorative icons use aria-hidden="true" so they're skipped silently. |
| Link list navigation (Insert+F7 in JAWS, NVDA+F7 in NVDA) | "Read more" / "More information" / "Click here" generic link text is augmented with visually-hidden destination context (e.g., "More information about utility-assistance-programs") so the links list is meaningful out of context. |
| Form field announcements | Every form input has an explicit <label for="…"> association. Icon-only buttons (search, navigation toggles) have aria-label attributes so screen readers don't announce them as "button" with no context. |
| Focus management | Visible 3px focus outlines (4.5:1 contrast) on every interactive element so keyboard users — including those who use a screen reader alongside vision — can track where focus is. |
| Embedded content | YouTube iframe has both title and aria-label attributes so NVDA and JAWS each read it correctly (the two readers prefer different attributes; both are present for max compatibility). |
The remediated demo has been built with these conventions explicitly. Live testing with NVDA and JAWS during tomorrow's walkthrough is encouraged — the goal is for the screen-reader experience to feel natural and complete, not just to pass automated checks.
About this engagement
Prime Automation Solutions · primeautomationsolutions.com · contact: [email protected]
This audit and demo were produced for the Georgia Public Service Commission. SOW-A (full HTML site port + WCAG 2.1 AA remediation, fixed-price) and SOW-B (per-document PDF remediation, scoped after inventory) are available on request.