Skip to main content

Accessibility Scan

The Accessibility Scan detector analyzes your web application for accessibility issues, with primary focus on WCAG 2.1 compliance. It helps you build products that are usable by everyone — including people with visual, auditory, motor, and cognitive disabilities.

What it checks

WCAG 2.1 Principles

The scan covers all four WCAG principles:

PrincipleExamples
PerceivableColor contrast, image alt text, captions, text resize
OperableKeyboard navigation, focus management, no seizure-inducing content
UnderstandableForm labels, error messages, language declaration
RobustValid HTML, ARIA usage, assistive technology compatibility

Conformance levels

Ariftly tests for Level A and Level AA compliance (the level required by most legal standards including ADA, Section 508, and EN 301 549).

Level AAA checks are available as informational findings.

Rule categories

CategoryExample rules
ImagesAlt text present, decorative images hidden from AT
Color contrastText/background contrast ratio ≥ 4.5:1 (AA)
FormsAll inputs have associated labels, error identification
NavigationSkip links, landmark regions, page title
ARIAValid roles, required attributes, no redundant roles
KeyboardAll interactive elements keyboard-accessible, visible focus
MediaVideo captions, audio transcripts
StructureHeading hierarchy, list semantics, table headers

Scan targets

The accessibility scan works on URL targets. It uses a headless browser to render your application and evaluate accessibility in the same context as a real user's browser.

  • Supports single-page applications (React, Vue, Angular, etc.)
  • Evaluates dynamic content after JavaScript execution
  • Configurable crawl depth (default: 3 levels)

Configuration

{
"detectors": ["accessibility"],
"detector_options": {
"accessibility": {
"wcag_level": "AA",
"include_aaa": false,
"crawl_depth": 5,
"viewport": {
"width": 1280,
"height": 800
},
"rules": {
"exclude": ["color-contrast"]
}
}
}
}
OptionTypeDefaultDescription
wcag_level"A" | "AA" | "AAA""AA"Minimum conformance level to test
include_aaabooleanfalseInclude AAA checks as informational
crawl_depthinteger3How many link levels deep to crawl
viewportobject1280×800Browser viewport for rendering
rules.excludestring[][]Rule IDs to skip

Findings

Example finding

{
"id": "finding_a01",
"detector": "accessibility",
"severity": "high",
"rule_id": "wcag-1-4-3",
"title": "Insufficient color contrast",
"description": "The text element has a contrast ratio of 2.1:1. WCAG AA requires a minimum of 4.5:1 for normal text.",
"location": {
"type": "dom_element",
"selector": "button.primary-cta",
"url": "https://myapp.example.com/checkout",
"line": 142
},
"remediation": "Change the button text color from #999999 to #595959 or darker to achieve the required 4.5:1 contrast ratio.",
"references": [
"https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html"
]
}

Severity mapping

WCAG LevelSeverity
Level A failureCritical
Level AA failureHigh
Level AAA failureMedium
Best practiceLow

Accessibility compliance is legally required in many jurisdictions:

  • USA: ADA Title III, Section 508 (federal agencies)
  • EU: European Accessibility Act (EAA), EN 301 549
  • UK: Public Sector Bodies Accessibility Regulations
  • Canada: AODA (Ontario), ACA
warning

Ariftly's accessibility scan is a tool to help identify issues — it does not constitute legal advice or a legal compliance audit. Consult a qualified accessibility expert and legal counsel for formal compliance certification.

Integration examples

Block deployments with high-severity accessibility issues

# .github/workflows/accessibility.yml
- name: Ariftly Accessibility Scan
uses: ariftly/scan-action@v1
with:
api_key: ${{ secrets.ARIFTLY_API_KEY }}
project_id: ${{ vars.PROJECT_ID }}
detectors: accessibility
fail_on: high