Accessibility Scan Rules
The Honest Limitations of Automated Scans
While Steterly is a powerful tool to catch common issues and flag obvious technical oversights, automated accessibility checkers cannot certify a website as fully compliant or 100% accessible.
Here is why manual evaluation is irreplaceable:
-
Subjective Context (30-50% Coverage): An automated scanner can verify that an
<img>element has analtdescription. However, a machine cannot tell if the alt text actually describes the image accurately or if it is unhelpful spam (e.g.alt="image_123_final_v2.png"). -
Keyboard & Focus Logic: The scanner checks for crude patterns like hardcoded
outline: nonestyle overrides. But only a human tester can verify if tab order flows logically, if interactive modals trap focus correctly when open, or if custom JavaScript controls are fully operable using just the keyboard. - Screen Reader Performance: True accessibility depends on how assistive software (like NVDA, JAWS, or VoiceOver) translates your page layout. Steterly acts as a crucial first line of defense to catch critical, programmatic errors, but it should be paired with manual human testing.
1. Images & Media (WCAG 1.1.1 & 1.2.1)
Assistive tech relies on correct tags and text transcripts to communicate graphic elements. Steterly crawls the DOM to verify:
- Missing Image Descriptions: Image tags (
<img>) or input buttons (<input type="image">) missing thealt,aria-label, ortitleattribute. - Nameless Graphic Links: Images placed inside link tags (
<a>) where the link contains no text and the image'saltis empty. - Generic / Vague alt attributes: Image descriptions that use meaningless, redundant keywords like "image", "photo", or "graphic", which offer zero context.
- Filename matches: Alternate texts that copy the source filename exactly.
- Accessible Graphic Names: Standalone
<svg>or<canvas>elements that lack fallback texts, titles, oraria-labeltags. - Missing Tracks & Captions: Standalone
<video>and<audio>files that have no captions or subtitle<track>tags. - Embedded Object Descriptions:
<object>media elements missing fallback texts, titles, or accessible name tags. - Image Map Alterations: Use of active
<area>elements missing alt texts, or obsolete server-side image maps (ismapattributes).
2. Forms & Inputs (WCAG 1.3.1, 3.3.2 & 4.1.2)
Forms must be highly structured so keyboard users can navigate, fill, and submit them successfully. We test:
- Unlabelled Input Fields: Text fields, select drop-downs, and textareas missing an associated
<label>,aria-label, oraria-labelledby. - Orphaned Labels: A
<label for="x">where the IDxdoes not actually exist on the page. - Duplicate Labels: Multiple
<label>tags pointing to a single input field, which creates reader confusion. - Placeholder Abuse: Input fields utilizing the
placeholder="..."attribute as their only accessible label. - Empty Action Buttons: Interactive buttons (
<button>) or input buttons (<input type="submit|button|reset">) missing inner text, values,aria-label, or title. - Group Organization: Multiple checkbox or radio groups that share the same
namebut are not organized within a logical<fieldset>and<legend>structure. - Missing Autocomplete on Passwords: Password and credential fields lacking
autocompletevalues (WCAG 1.3.5 AA).
3. Heading Hierarchy & Structure (WCAG 1.3.1, 2.4.1 & 2.4.2)
A page's document model must follow semantic standards so screen readers can build an accurate outline of the content. We verify:
- Language Declarations: HTML page headers missing the
lang="..."tag. - Invalid BCP 47 Tags: Languages declared with incorrect tags.
- Missing Page Titles: Document layouts completely missing the header
<title>tag. - Skipped Heading Levels: Broken outlines where heading levels are skipped (e.g. jump from
<h1>directly to<h3>). - Empty Headings: Headers with no text content.
- List Structures: List items (
<li>) and definition items (<dt>/<dd>) properly nested inside lists, and containing elements enforcing children rules (e.g. only<li>inside<ul>/<ol>). - Landmark Structure: Layouts with duplicate main landmarks (e.g. multiple
<main>wrappers) or missing a structural main landmark entirely. - Obsolete Presentational Tags: Presence of legacy styling markup such as
<marquee>or<blink>.
4. ARIA & Keyboard Navigation (WCAG 2.1.1, 2.4.3 & 4.1.2)
Assisitive software uses the Accessibility Tree and WAI-ARIA values to convey custom widgets. Steterly evaluates:
- Duplicate IDs: Multiple elements sharing the exact same HTML
id="...". - Focusable ARIA-Hidden elements: Interactive elements (such as links and buttons) with
aria-hidden="true"applied. - aria-hidden body: Document body elements having
aria-hidden="true"which blocks full screen reader content. - Disrupted Tab Orders: Interactive tags containing hardcoded positive tab indexes.
- Incorrect ARIA Roles & Attributes: Custom components using unrecognized role declarations or carrying invalid ARIA tag typos.
- Role-Required Attributes: Roles that require specific accompanying attributes to function (such as a
role="slider"lackingaria-valuenow). - Non-Semantic Click Handlers: Layout blocks that trigger scripts via
onclicklisteners, but have no interactive role or tab index.
5. Data Tables (WCAG 1.3.1)
Data tables must clearly link columns and rows to their headers:
- Missing Headers & Captions: Data tables (
<table>) lacking accompanying labels, ARIA tags, or structural<caption>descriptions. - Missing scopes: Heading elements (
<th>) missing the explicitscope="col"orscope="row"tags. - Orphaned Header IDs: Table cells referencing custom header IDs that do not exist or point to invalid cells in the table headers.