Cotality.com homepage accessibility audit
A manual DOM-level review of the Cotality homepage against Section 508 and WCAG 2.2 Level AA, scored by user impact, scope, and fix effort — then re-verified against the live page so every finding carries its current status.
Executive summary
Seven homepage findings span two Critical, two High, and three Medium issues. The most pervasive — icon-font ligatures announced as literal text (arrow_forward, deployed_code) — affects navigation for every assistive-technology user and is still live. Cotality sells to government agencies, financial institutions, and insurance carriers, all bound by Section 508 and ADA digital-accessibility obligations, so these are product-quality issues with real legal exposure.
An accessibility report should itself be accessible. This page passes WCAG AA in Day, Night, and High-Contrast modes — try the toggle, top right.
Re-verification matters. Several issues from the June 22 capture have since been partially or fully remediated on the live site — the mega-menus now expose aria-expanded, the search overlay carries role="dialog", and images now have alt. Each finding below shows where it stands today, not just where it stood at audit time.
Visual context
prefers-reduced-motion fallback; the headline renders grey-on-dark.Findings · tap to expand
A-01
Icon-font text rendered as literal strings
9.5
Description
Material Icons are implemented as icon-font ligatures. When CSS fails or assistive technology reads the DOM, the raw ligature text is announced verbatim. A screen-reader user hears "arrow underscore forward" and "deployed underscore code" as navigation labels.
Evidence — live DOM
arrow_forward ×12 (appended to CTA links)
deployed_code ×6 (standalone in feature lists)
arrow_back ×1 (primary navigation)<a …><div style="transform-style: preserve-3d;">arrow_forward</div></a>Recommended fix
Add aria-hidden="true" to icon elements and give the parent interactive element a visible label or aria-label. Prefer inline SVG, which supports <title> and aria-hidden natively. Template-level change across nav, CTAs, and feature lists.
A-02
No skip-navigation link
9.2
Description
No skip-to-main-content link exists. The primary navigation holds five mega-menus with dozens of nested links each, so a keyboard-only user tabs through the entire nav on every page load before reaching content. WCAG 2.4.1 (Bypass Blocks) is a Level A requirement — the lowest bar for compliance.
Evidence — live DOM
skip-to / href="#main" / .skip-link → 0 matches
<main> landmark → 1 presentRecommended fix
Add a visually-hidden, focus-visible skip link as the first focusable element: <a href="#main-content" class="skip-link">Skip to main content</a>, pointing at the existing <main>.
<main> landmark now exists, so the remaining fix is a single template line targeting it. Roughly 2–4 hours.
A-03
Background video has no accessible alternative
8.1
Description
The hero uses auto-playing background video. There is no poster, captions, audio description, reduced-motion handling, or label. Motion content can trigger vestibular discomfort, and blind users get no indication of what the animation conveys.
Evidence — live DOM
<video> elements → present
<track> (captions/desc) → 0
@media (prefers-reduced-motion) → 0
aria-label / aria-describedby → 0Recommended fix
If decorative, add aria-hidden="true" to the video containers and a prefers-reduced-motion rule that pauses or hides the animation. If informational, provide a text alternative describing what it communicates.
prefers-reduced-motion handling detected. The reduced-motion guard alone is a near-trivial CSS addition.
A-04
Inconsistent alt-text treatment
7.8
Description
At audit time, images showed mixed treatment — some decorative images with empty alt (correct), others with none (screen readers announce the filename), and icons with generic alt such as "dropdown menu icon".
Evidence — live DOM
<img> total → 10, all with an alt attribute
inline SVG <title> → 4
language-switcher region label → still absent (see A-09)Recommended fix
Keep the pattern consistent: decorative images get alt="", functional images get descriptive alt, and icon images adjacent to visible labels get aria-hidden="true". Bake an alt-text rule into the content-authoring workflow.
<img> now carries an alt attribute and several SVGs have titles. The remaining gap is editorial quality (generic vs meaningful alt) rather than missing attributes.
A-07
Mega-menu ARIA expanded-state management
5.8
Description
At audit time the five mega-menu triggers exposed no aria-expanded, aria-haspopup, or aria-controls, so screen-reader users had no signal that a trigger opened a submenu or whether it was open.
Evidence — live DOM
aria-expanded → 11
aria-haspopup → 7
aria-controls → 7
A-08
Search overlay focus management
5.4
Description
The search overlay opens from a search icon. At audit time it carried no modal semantics and no evident focus trap, so keyboard users could tab behind it into the page below.
Evidence — live DOM
role="dialog" → present
aria-modal → present
type="search" → presentRecommended fix
With dialog semantics in place, confirm the behavioral half: move focus to the input on open, trap focus while open, return focus to the trigger on close, and announce results via an aria-live region. These are not observable from static DOM and warrant a keyboard pass.
role="dialog" + aria-modal) is now present; the runtime focus management needs interactive verification.
A-09
Language switcher not identified as a landmark
4.9
Description
The region/locale switcher (reading "United States") uses a globe icon and offers six regional variants. It has no aria-label stating its purpose, and it appears twice per page with identical structure.
Evidence — live DOM
aria-label="…language/region…" → 0
aria-current → 3 present elsewhereRecommended fix
Add aria-label="Select region and language" to the switcher container, aria-current="true" to the active locale, and aria-hidden="true" to the decorative globe. Give the duplicate instances distinct labels.
aria-current now appears in the header, but the switcher still lacks a purpose label, so its function is not announced.Remediation roadmap
| Priority | Findings | Action | Effort |
|---|---|---|---|
| 1 · Now | A-02 | Add a skip link to the master template, targeting the existing <main> | 2–4 hrs |
| 1 · Now | A-03 | Add aria-hidden to decorative hero video + a prefers-reduced-motion rule | Low |
| 2 · Sprint | A-01 | Hide icon-font ligatures from AT, label parents; migrate toward inline SVG | 1 sprint |
| 2 · Sprint | A-09 | Label the region switcher; mark the active locale | 2–4 hrs |
| 3 · Verify | A-08 | Keyboard pass on search-overlay focus trap + return-focus + live region | Low |
| 3 · Process | A-04 | Alt-text authoring guide so meaningful alt is the default, not a review step | 1 sprint |
Compliance posture
Legal exposure
The Critical findings (A-01, A-02) are Level A violations — the minimum bar, and the most commonly cited issues in ADA Title III web-accessibility litigation, which rose sharply between 2018 and 2024.
Government and regulated sectors
Federal and state customers are bound by Section 508. A supplier shipping inaccessible tooling creates downstream compliance and procurement risk for the buyer.
Enterprise procurement
Large buyers increasingly require a VPAT. The current findings would require disclosure, and visible gaps weaken evaluation against accessible competitors.
About this audit
Conducted by manual inspection of the rendered homepage DOM against WCAG 2.2 Level A/AA and Section 508 (29 U.S.C. §794d, 2017 ICT Refresh). Scope is limited to markup-observable issues on the homepage and re-verified against the live page for this build. A full audit would add automated scanning (axe, Lighthouse), screen-reader testing (NVDA/JAWS/VoiceOver), keyboard-only navigation, color-contrast measurement, and interactive-component testing.
Each finding is scored 0–10 as a weighted composite: user impact (40%), frequency and scope (30%), and inverse fix-complexity (30%). Critical 9.0–10, High 7.0–8.9, Medium 4.0–6.9, Low 1.0–3.9.