Skip to main content
Prime Automation Solutions · ADA Audit Report v2 ← Back to demo homepage

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

Sitepa11y WCAG 2.1 AAaxe-core (Deque)Verified
Live psc.ga.gov66 errors94 violations2026-05-05
This demo (PAS rebuild)0 errors0 violations2026-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

SeverityCountWCAG criteria affected
Critical32.4.1 (skip nav), 1.3.1 (landmarks), 1.1.1 (alt text)
Major621.4.3 (contrast — bulk of pa11y findings), 2.4.7 (focus), 4.1.2 (icon labels, button names, iframe titles)
Minor23.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:

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:

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 featureHow 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 announcementsEvery 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 announcementsEvery 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 managementVisible 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 contentYouTube 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.