Accessibility Audit: Find STARS ID

   
Page URL https://apps.dcyf.wa.gov/MERIT/Home/FindStarsId
Page Name Find STARS ID
Date 2026-03-28
Auditor Claude Code (automated)
Standards Reference docs/standards/ (WCAG 2.2 AA)

Evidence

Screenshot (1920x1080) Screenshot (320px reflow)
Page screenshot 320px reflow

Section 1: Structure and Semantics

Standards reference: structure-and-semantics.md

Evaluated Pass Fail N/A
33 22 4 7

Findings

# Topic Requirement WCAG Level Severity Description Proposed Fix
1 Missing Skip Link A mechanism must exist to bypass blocks of content 2.4.1 Required High No skip link present. Keyboard users must tab through all header elements to reach the form. While <main> is present, a skip link is recommended as a complementary bypass mechanism. Add a visually-hidden, focus-visible skip link as the first focusable element.
2 Missing Navigation Landmark Navigation lists should be designated with <nav> Best practice Medium Header link list (ref=e6: DCYF Apps, MERIT Help) and footer link list (ref=e64: About DCYF, Privacy Policy, MERIT Help) are not wrapped in <nav>. No <nav> element exists on the page. Wrap navigation lists in <nav> elements with descriptive aria-label attributes.
3 H1 in Banner, Not Main Content Main content should start with <h1> Best practice Medium The <h1> (“MERIT Managed Education and Registry Information Tool”, ref=e15) is in the banner. Main content has no heading element – “Find my STARS ID” is rendered as text inside a group element (ref=e30) and a generic <div> (ref=e31), not as a heading. Add <h1>Find my STARS ID</h1> or <h2> inside <main>.
4 “Find my STARS ID” Not a Heading Text that acts as a heading visually must be designated as a true heading 1.3.1 Required High “Find my STARS ID” appears visually as a heading (larger text at top of content area, visible in both screenshots) but is marked up as text inside a generic <div> (ref=e31) within a group element (ref=e30). Screen reader users cannot navigate to it via heading navigation. Change to <h2>Find my STARS ID</h2> (or <h1> if the banner heading is restructured).

Standards reference: links-and-navigation.md

Evaluated Pass Fail N/A
35 18 8 9

Findings

# Topic Requirement WCAG Level Severity Description Proposed Fix
1 Skip Navigation A “skip” link should be the first focusable element 2.4.1 Required High No skip link present. Add skip link as first focusable element targeting main content.
2 MERIT Help Link Non-Functional Purpose of each link must be understandable 2.4.4 Required High “MERIT Help” link in header (ref=e10, href="#") and footer (ref=e72, href="#") goes nowhere. Provide a valid URL to a help resource, or remove the link.
3 DCYF Apps Link Non-Functional Purpose of each link must be understandable 2.4.4 Required High “DCYF Apps” link (ref=e8, href="#") goes nowhere. Provide a valid URL or remove the link.
4 Consistent Help Help mechanisms on multiple pages must occur in same relative order 3.2.6 Required Medium “MERIT Help” (href="#") is non-functional, consistent with other pages but still broken. Make “MERIT Help” link functional across all pages.
5 Multiple Ways Multiple ways must be available to find other web pages 2.4.5 Required Medium Navigation limited to header and footer links. No site search, site map, or breadcrumbs. Add at least two navigation methods.
6 Navigation List Markup Navigation lists should use <nav> Best practice Medium No <nav> elements on the page. Wrap navigation lists in <nav>.
7 Links vs. Buttons Links should navigate; should not be used for scripted functionality Best practice Medium “DCYF Apps” and “MERIT Help” links with href="#" do not navigate. Convert to buttons or provide real URLs.
8 Bypass Blocks A method must exist to bypass repeated blocks of content 2.4.1 Required Medium No skip link exists. <main> landmark is present, providing partial bypass capability via screen reader landmark navigation. However, “Find my STARS ID” is not a heading, reducing heading-based bypass effectiveness. Add skip link and promote “Find my STARS ID” to a heading element.

Section 3: Images and Visual Design

Standards reference: images-and-visual-design.md

Evaluated Pass Fail N/A
43 30 3 10

Findings

# Topic Requirement WCAG Level Severity Description Proposed Fix
1 Small Footer Text Fonts should be easily readable Best practice Low Footer text at approximately 11px, consistent with site-wide issue. Increase footer text to at least 14px.
2 UI Component Contrast Contrast of UI control boundaries must be at least 3:1 1.4.11 Required Medium Form input fields have light borders. The First Name field in the 320px screenshot shows a light gray border that may not meet 3:1 contrast against white background. Manual measurement needed. Ensure input borders achieve at least 3:1 contrast ratio.
3 Results Table Visual Distinction Blocks of content should be visually separated Best practice Low The results table (First Name, Last Name, STARS ID columns) below the form has minimal visual separation from the form area. When empty, it appears as floating column headers with no clear boundary. Add a visual separator or container around the results area. Consider hiding the table until results are available.

Contrast Measurements

Element Foreground Background Ratio Required Result
“Find my STARS ID” heading text Dark text White ~12:1+ 4.5:1 PASS
Body text (instructions) Dark (#212529) White ~15:1 4.5:1 PASS
“Search” button White text Blue bg ~4.5:1 4.5:1 PASS (borderline)
“Cancel” button Dark text White/light bg ~12:1+ 4.5:1 PASS
Table headers “First Name” etc. Dark text White ~12:1+ 4.5:1 PASS
Footer links Blue (#0D6EFD) White ~4.5:1 4.5:1 PASS (borderline)
Bold “First Name” label Dark bold White ~15:1 4.5:1 PASS

Section 4: User Input, Forms, and Dynamic Content

Standards reference: user-input-forms.md

Evaluated Pass Fail N/A
117 39 10 68

Findings

# Topic Requirement WCAG Level Severity Description Proposed Fix
1 Labels Not Programmatically Associated Labels must be programmatically associated with inputs 1.3.1 Required High Form fields use text nodes adjacent to <input> elements without <label> elements. “First Name” is text before textbox (ref=e36); “Last Name” text before textbox (ref=e38); “Date of Birth” text before textbox (ref=e40). None appear to use <label for="...">. Screen readers may not announce field labels when tabbing to inputs. Wrap each label in <label for="field-id"> or use aria-labelledby.
2 Group Label Uses Non-Standard Markup Group labels must be programmatically associated 1.3.1 Required Medium The form is wrapped in a group element (ref=e30) with “Find my STARS ID” as its accessible name. This provides some grouping, but the text is in a <div>, not a <legend> within a <fieldset>. The grouping semantic may not be consistently conveyed across assistive technologies. Use <fieldset> with <legend>Find my STARS ID</legend> for robust group labeling.
3 Required Fields Not Indicated Required fields should be designated programmatically and visually Best practice Medium The screenshot shows “First Name” in bold text (suggesting it may be required) while “Last Name” and “Date of Birth” appear in regular weight. However, the instructions say “Please enter your first name, last name and date of birth” implying all are required. No required attribute or aria-required is visible. No asterisks or “(required)” text. Add required or aria-required="true" to required fields. Add visual required indicators with a legend.
4 Date Format Instruction Restrictions should be communicated in label or instructions Best practice Medium The Date of Birth field has placeholder “mm/dd/yyyy” (ref=e40). Placeholder disappears when typing and is not accessible to all assistive technologies. Add persistent format hint as visible helper text or via aria-describedby.
5 Input Purpose Not Identified Input purpose for personal data must be programmatically defined 1.3.5 Required Medium None of the input fields have autocomplete attributes. These fields collect personal data. Add autocomplete="given-name" for First Name, autocomplete="family-name" for Last Name, autocomplete="bday" for Date of Birth.
6 Results Table Column Headers Missing Scope Table headers must be properly associated with data cells 1.3.1 Required Medium The results table (ref=e47) has columnheader elements (First Name, Last Name, STARS ID) but may lack scope="col" attributes. With only one data row, most screen readers can infer the association, but explicit scope is recommended. Add scope="col" to each <th> in the results table.
7 Results Table Caption Data tables should have a programmatically associated caption Best practice Medium The results table has no <caption> or aria-label. Its purpose (showing search results) is not communicated to screen reader users encountering the table. Add <caption>STARS ID Search Results</caption> or aria-label="STARS ID search results" to the table.
8 Empty Results Table Always Visible Dynamic content changes must be communicated 1.3.2 Required Low The results table is visible even when empty (shows column headers with one empty row). This may confuse users who think results should be present. When results load dynamically, the change should be announced. Hide the results table until search results are available. When populated, announce results with aria-live="polite" or move focus to the results area.
9 No Visible Error Handling Error messages must identify the item in error 3.3.1 Required Medium No error state visible in the snapshot. It is unclear how the form communicates validation errors. Implement accessible error messages using aria-describedby, aria-invalid, or role="alert".
10 Session Timeout Unknown Users must be allowed sufficient time 2.2.1 Required Low Unknown whether this page has a session timeout. Verify no timeout exists, or implement a timeout warning.

Section 5: Multimedia, Animations, and Motion

Standards reference: multimedia-and-motion.md

Evaluated Pass Fail N/A
48 2 0 46

No issues identified in this section.

No audio, video, multimedia, or animated content detected. No flashing content (WCAG 2.3.1 pass). No time-limited content visible (WCAG 2.2.1 pass – manual verification recommended for session timeout).


Summary

Compliance Overview

Section Evaluated Pass Fail N/A
1. Structure & Semantics 33 22 4 7
2. Links & Navigation 35 18 8 9
3. Images & Visual Design 43 30 3 10
4. User Input, Forms & Dynamic Content 117 39 10 68
5. Multimedia, Animations & Motion 48 2 0 46
Total 276 111 25 140

Findings by Severity

Critical

  • None

High

  • Missing skip link (WCAG 2.4.1)
  • “MERIT Help” and “DCYF Apps” links with href="#" have no discernible purpose (WCAG 2.4.4)
  • “Find my STARS ID” visual heading not marked as a heading element (WCAG 1.3.1)
  • Form labels not programmatically associated with inputs (WCAG 1.3.1)

Medium

  • Missing <nav> landmarks (Best practice)
  • <h1> in banner, not main content (Best practice)
  • Non-functional help mechanism (WCAG 3.2.6)
  • Multiple navigation methods limited (WCAG 2.4.5)
  • Bypass blocks partially addressed – <main> exists but no skip link or content heading (WCAG 2.4.1)
  • Non-standard group label markup (WCAG 1.3.1)
  • Required fields not indicated (Best practice)
  • Date format communicated only via placeholder (Best practice)
  • Input purpose not identified with autocomplete (WCAG 1.3.5)
  • Results table missing scope on headers (WCAG 1.3.1)
  • Results table missing caption (Best practice)
  • No visible error handling mechanism (WCAG 3.3.1)
  • UI component contrast needs verification (WCAG 1.4.11)

Low

  • Footer text at 11px (Best practice)
  • Page title could include “MERIT” suffix (Best practice)
  • Empty results table always visible (WCAG 1.3.2)
  • Results table visual distinction minimal (Best practice)
  • Session timeout unknown (WCAG 2.2.1)

Notes

  • This page uses the modern MVC layout template with <main> landmark (ref=e26), banner (ref=e3), and contentinfo (ref=e58).
  • The group element (ref=e30) with accessible name “Find my STARS ID” provides some semantic grouping, but it is not a standard <fieldset>/<legend> pattern.
  • The results table structure is clean with proper columnheader elements, but needs scope attributes and a caption.
  • The page exposes search results that may include personal information (first name, last name, STARS ID). Consider whether this raises privacy concerns – any user can look up anyone’s STARS ID by name and date of birth.
  • Focus indicators could not be visually confirmed from the automated screenshot; manual verification recommended.
  • The page reflows well at 320px based on the screenshot – form fields stack vertically and remain usable.

Severity Definitions

Severity Criteria
Critical Required standard violated; completely blocks access for one or more disability groups (e.g., keyboard trap, no form labels, missing alt text on functional images)
High Required standard violated; significant barrier that makes the feature very difficult to use (e.g., poor contrast on primary content, missing heading structure, focus indicator absent)
Medium Required standard violated with moderate impact, OR Best practice violated with significant user impact (e.g., heading levels skipped, link purpose unclear from context, insufficient target size)
Low Best practice not followed; minor impact on usability (e.g., title could be more concise, landmark count could be reduced, hover indicator could be enhanced)

This site uses Just the Docs, a documentation theme for Jekyll.