What we test against WCAG 2.2

Accessibility testing is mostly a person’s job. A tool can find some failures reliably, help a tester gather evidence for others, and keep the record. This page says, criterion by criterion, which is which, so a report from LumensOS Pro Tester never claims more than it checked.

40 of 55Level A + AA criteria have an automated rule that can flag a failure today
11of those are more than a narrow check
15have no automated rule at all: they are tested by hand, with the tool’s checklist and evidence
0criteria are ever reported as passed by automation alone

How to read this

1. Perceivable

WCAG 2.2 principle 1, Perceivable: each success criterion, its level, what LumensOS Tester does about it, and what a person must confirm
CriterionLevelLumensOS Pro Tester todayWhat a person has to confirm
1.1.1 Non-text ContentA Automated checksaxe-core: aria-meter-name aria-progressbar-name image-alt +4Every image, icon, chart and image button has a text alternative that does the same job; purely decorative ones are hidden from assistive technology. Automation finds MISSING alternatives, not WRONG ones.
1.2.1 Audio-only and Video-only (Prerecorded)A Narrow automated checkIt only notices audio with no transcript link on the page.axe-core: Audio-only has a transcript; video-only has a transcript or an audio track describing it.
1.2.2 Captions (Prerecorded)A Narrow automated checkIt only checks that a captions track exists, not that it is right.axe-core: video-captionPlay each video muted: captions exist, are in sync, and include speakers and meaningful sounds.
1.2.3 Audio Description or Media Alternative (Prerecorded)A Narrow automated checkIt only notices video with no descriptions track, described version or transcript link.axe-core: Video whose visuals carry meaning has audio description or a full text alternative.
1.2.4 Captions (Live)AA Narrow automated checkIt only notices live streams without a captions track.axe-core: Live streams have real-time captions.
1.2.5 Audio Description (Prerecorded)AA Narrow automated checkIt only notices video with no descriptions track, described version or transcript link.axe-core: Prerecorded video has an audio-description track.
1.2.6 Sign Language (Prerecorded)AAA By handPrerecorded audio has a sign-language interpretation.
1.2.7 Extended Audio Description (Prerecorded)AAA By handWhere pauses are too short for description, the video pauses for an extended one.
1.2.8 Media Alternative (Prerecorded)AAA By handA full text alternative exists for prerecorded synchronised media and video-only content.
1.2.9 Audio-only (Live)AAA By handLive audio-only content has a text alternative.
1.3.1 Info and RelationshipsA Automated checksaxe-core: aria-hidden-body aria-required-children aria-required-parent +6Structure that looks visual is also in the code: real headings, lists, table headers, form labels and groups. Compare with the headings/landmarks outline and with CSS off.
1.3.2 Meaningful SequenceA Narrow automated checkIt only finds controls that CSS shows in a different order from the DOM (order, row-reverse); reading order of text is not checked.axe-core: The reading order in the code matches the visual order (check with CSS off and with the tab order).
1.3.3 Sensory CharacteristicsA Narrow automated checkIt only finds a few common phrasings that point at colour, shape, position or sound.axe-core: Instructions never depend on shape, colour, size, position or sound alone ("press the green button", "see the right column").
1.3.4 OrientationAA Narrow automated checkIt only finds style rules in orientation media queries that hide large content or rotate it.axe-core: Content works in both portrait and landscape unless one orientation is essential.
1.3.5 Identify Input PurposeAA Narrow automated checkIt only checks autocomplete hints that are present, and fields whose purpose is obvious from their type or name.axe-core: autocomplete-validFields that collect the user’s own details (name, email, address, card …) carry the matching autocomplete token.
1.3.6 Identify PurposeAAA By handThe purpose of controls, icons and regions can be determined programmatically (landmarks, personalisation semantics).
1.4.1 Use of ColorA Narrow automated checkIt only checks links inside blocks of text, not errors, charts or states (the colour-vision previews in the report are for your eye).axe-core: link-in-text-blockColour is never the only way to show a link inside text, an error, a required field, a chart series or a state. Check with the colour-vision simulator.
1.4.2 Audio ControlA Narrow automated checkIt only checks audio and video that start playing by themselves.axe-core: no-autoplay-audioAudio that plays automatically for more than 3 seconds can be paused, stopped or muted.
1.4.3 Contrast (Minimum)AA Automated checksaxe-core: color-contrastText is 4.5:1 (3:1 large) against what it really sits on. Text over photos, gradients and video cannot be judged from CSS: look at it.
1.4.4 Resize TextAA Narrow automated checkIt only looks for text cut off, overlapping or buried by a fixed bar at 200 % zoom, not every loss of content or function.axe-core: meta-viewportAt 200% text size nothing is lost, clipped or overlapping, and no feature disappears.
1.4.5 Images of TextAA By handReal text is used instead of pictures of text (logos excepted).
1.4.6 Contrast (Enhanced)AAA Automated checksaxe-core: color-contrast-enhancedText is 7:1 (4.5:1 large) against what it really sits on.
1.4.7 Low or No Background AudioAAA By handSpeech in prerecorded audio has no background sound, or it is at least 20 dB quieter.
1.4.8 Visual PresentationAAA Narrow automated checkIt only checks justified text, line length and line spacing of paragraphs; colours, resizing and paragraph spacing need a person.axe-core: Users can choose colours; lines are at most 80 characters; text is not justified; line spacing is at least 1.5; text resizes to 200% without horizontal scrolling.
1.4.9 Images of Text (No Exception)AAA By handImages of text are used only for decoration or where the exact look is essential.
1.4.10 ReflowAA Automated checksaxe-core: At 320 CSS px wide (400% zoom on a 1280 px window) content needs no horizontal scrolling. Maps, data tables and charts are excepted.
1.4.11 Non-text ContrastAA Narrow automated checkIt only checks the boundaries of form fields, not icons, focus rings, chart marks or custom controls.axe-core: Input borders, icons, chart marks, focus rings and state indicators are at least 3:1 against what is next to them.
1.4.12 Text SpacingAA Narrow automated checkIt only looks for text cut off once WCAG’s spacing is applied, not every layout break.axe-core: avoid-inline-spacingWith line height 1.5, paragraph spacing 2×, letter spacing 0.12 em and word spacing 0.16 em, nothing is clipped, hidden or overlapping.
1.4.13 Content on Hover or FocusAA By handPlanned: Hover and focus content (dismissible, hoverable, persistent)Tooltips and pop-overs can be dismissed (Esc), hovered without vanishing, and stay until dismissed.

2. Operable

WCAG 2.2 principle 2, Operable: each success criterion, its level, what LumensOS Tester does about it, and what a person must confirm
CriterionLevelLumensOS Pro Tester todayWhat a person has to confirm
2.1.1 KeyboardA Narrow automated checkIt only checks scroll areas, frames and things that look clickable but cannot be focused, not whether every widget works from the keyboard.axe-core: frame-focusable-content scrollable-region-focusable server-side-image-mapEverything works with the keyboard alone: links, menus, sliders, custom widgets, and an alternative to every drag.
2.1.2 No Keyboard TrapA By handPlanned: Keyboard trapsFocus can always leave a component with the keyboard (modals, embedded players, editors).
2.1.3 Keyboard (No Exception)AAA Automated checksaxe-core: scrollable-region-focusableEverything works with the keyboard alone, including path-dependent input such as freehand drawing.
2.1.4 Character Key ShortcutsA By handSingle-key shortcuts can be turned off, remapped, or only work while their component has focus.
2.2.1 Timing AdjustableA Narrow automated checkIt only checks for a meta refresh, not other time limits.axe-core: meta-refreshTime limits can be turned off, adjusted or extended (at least 10×, or warned 20 seconds ahead).
2.2.2 Pause, Stop, HideA Narrow automated checkIt only checks blink, marquee and CSS animations over 5 seconds, not scripted motion.axe-core: blink marqueeMoving, blinking or scrolling content lasting over 5 seconds, and auto-updating content, can be paused, stopped or hidden.
2.2.3 No TimingAAA By handTiming is not an essential part of any event or activity.
2.2.4 InterruptionsAAA Automated checksaxe-core: meta-refresh-no-exceptionsInterruptions (alerts, updates) can be postponed or suppressed, except emergencies.
2.2.5 Re-authenticatingAAA By handAfter a session expires, the user can continue without losing data.
2.2.6 TimeoutsAAA By handUsers are warned about inactivity timeouts that cause data loss.
2.3.1 Three Flashes or Below ThresholdA Narrow automated checkIt only finds CSS and Web Animations that switch opacity or visibility; video, canvas and GIF flashes are not measured.axe-core: Nothing flashes more than three times in any second (run a flash analyser on suspect animation).
2.3.2 Three FlashesAAA Automated checksaxe-core: Nothing flashes more than three times in any second, at any intensity.
2.3.3 Animation from InteractionsAAA By handMotion triggered by interaction can be disabled (honours prefers-reduced-motion).
2.4.1 Bypass BlocksA Automated checksaxe-core: bypassA skip link or landmarks let keyboard users jump past repeated blocks such as the header and navigation.
2.4.2 Page TitledA Automated checksaxe-core: document-titleThe title says what the page is about and differs from other pages.
2.4.3 Focus OrderA Narrow automated checkIt finds tab stops on non-controls, controls inside controls, positive tabindex, CSS-reordered rows and modal dialogs without focus; the order of a whole journey still needs a person.axe-core: Tab moves through a meaningful, predictable sequence, including into and out of dialogs and menus.
2.4.4 Link Purpose (In Context)A Automated checksaxe-core: area-alt link-nameEach link’s purpose is clear from its text plus its context ("Read more" needs the sentence around it).
2.4.5 Multiple WaysAA Narrow automated checkIt only looks at this page for navigation, search, a site map and breadcrumbs.axe-core: There is more than one way to find a page: search, site map, navigation, links.
2.4.6 Headings and LabelsAA Narrow automated checkIt only finds buttons that share the same short name in one area; whether headings and labels describe their topic needs a person.axe-core: Headings and labels describe their topic or purpose.
2.4.7 Focus VisibleAA Narrow automated checkIt only finds focus that changes nothing at all, not a faint or low-contrast indicator.axe-core: Keyboard focus is always visible.
2.4.8 LocationAAA Narrow automated checkIt only looks for breadcrumbs and aria-current in the navigation.axe-core: Users can tell where they are in the site (breadcrumbs, current-page marking).
2.4.9 Link Purpose (Link Only)AAA Automated checksaxe-core: identical-links-same-purposeA link’s purpose is clear from its text alone.
2.4.10 Section HeadingsAAA Narrow automated checkIt only finds long runs of paragraphs without a heading.axe-core: Content is organised under section headings.
2.4.11 Focus Not Obscured (Minimum)AA new in 2.2 Automated checksaxe-core: A focused element is never completely hidden by a sticky header, cookie banner or chat widget.
2.4.12 Focus Not Obscured (Enhanced)AAA new in 2.2 Automated checksaxe-core: No part of a focused element is hidden by other content.
2.4.13 Focus AppearanceAAA new in 2.2 Narrow automated checkIt only measures outline thickness and contrast, not indicators drawn with backgrounds or shadows.axe-core: The focus indicator is at least as thick as a 2 CSS px outline and changes by at least 3:1.
2.5.1 Pointer GesturesA By handPlanned: Pointer gestures, cancellation and motion actuationPinch, swipe and path gestures have a single-pointer alternative.
2.5.2 Pointer CancellationA By handPlanned: Pointer gestures, cancellation and motion actuationActions fire on release (up-event), or can be aborted or undone.
2.5.3 Label in NameA Narrow automated checkIt only compares visible text with the accessible name.axe-core: label-content-name-mismatchThe accessible name of a control contains its visible label text, so voice control works.
2.5.4 Motion ActuationA By handPlanned: Pointer gestures, cancellation and motion actuationShake or tilt features have a button alternative and can be disabled.
2.5.5 Target Size (Enhanced)AAA Narrow automated checkIt measures size only; inline and equivalent-control exceptions beyond links in sentences need a person.axe-core: Targets are at least 44 × 44 CSS px.
2.5.6 Concurrent Input MechanismsAAA By handTouch, keyboard, mouse and voice can all be used on the same page.
2.5.7 Dragging MovementsAA new in 2.2 Narrow automated checkIt only finds elements marked draggable, not scripted drag and drop.axe-core: Anything done by dragging can also be done with a single click or tap.
2.5.8 Target Size (Minimum)AA new in 2.2 Automated checksaxe-core: target-sizeTargets are at least 24 × 24 CSS px, or have enough spacing around them.

3. Understandable

WCAG 2.2 principle 3, Understandable: each success criterion, its level, what LumensOS Tester does about it, and what a person must confirm
CriterionLevelLumensOS Pro Tester todayWhat a person has to confirm
3.1.1 Language of PageA Automated checksaxe-core: html-has-lang html-lang-valid html-xml-lang-mismatchThe page declares its language and it is the right one.
3.1.2 Language of PartsAA Narrow automated checkIt only checks the lang values that are present, not passages that lack one.axe-core: valid-langPassages in another language carry their own lang attribute.
3.1.3 Unusual WordsAAA By handIdioms and jargon are explained.
3.1.4 AbbreviationsAAA Narrow automated checkIt only finds capitalised abbreviations with no expansion on the page.axe-core: The meaning of abbreviations can be found.
3.1.5 Reading LevelAAA Narrow automated checkIt only measures English text with the Flesch–Kincaid grade.axe-core: Text beyond lower-secondary reading level has a simpler version.
3.1.6 PronunciationAAA By handAmbiguous pronunciations are given.
3.2.1 On FocusA By handReceiving focus never triggers an unexpected change of context.
3.2.2 On InputA By handPlanned: Form journeyChanging a field never submits or navigates unexpectedly, unless the user was told.
3.2.3 Consistent NavigationAA By handRepeated navigation appears in the same order on every page.
3.2.4 Consistent IdentificationAA By handComponents with the same function are labelled the same everywhere.
3.2.5 Change on RequestAAA Automated checksaxe-core: meta-refresh-no-exceptionsContext changes happen only when the user asks for them.
3.2.6 Consistent HelpA new in 2.2 By handHelp (contact, chat, FAQ link) is in the same relative place on every page that offers it.
3.3.1 Error IdentificationA Narrow automated checkIt only finds error messages already on screen next to a field that does not reference them; errors are not triggered.axe-core: Submit with bad data: the error is described in text and tied to the field.
3.3.2 Labels or InstructionsA Narrow automated checkIt only checks for duplicate labels, not for missing ones.axe-core: form-field-multiple-labelsEvery input has a visible label or instruction, including format hints and required markers.
3.3.3 Error SuggestionAA By handPlanned: Form journeyWhen the fix is known, the error message says what it is.
3.3.4 Error Prevention (Legal, Financial, Data)AA By handPlanned: Form journeyLegal, financial or data-changing submissions can be reversed, checked or confirmed.
3.3.5 HelpAAA By handContext-sensitive help is available.
3.3.6 Error Prevention (All)AAA By handEvery submission can be reversed, checked or confirmed.
3.3.7 Redundant EntryA new in 2.2 By handPlanned: Form journeyInformation already entered in the same process is pre-filled or selectable, not retyped.
3.3.8 Accessible Authentication (Minimum)AA new in 2.2 Narrow automated checkIt only finds blocked paste and switched-off autofill, not memory or transcription tests.axe-core: Signing in needs no memory or transcription test without an alternative; paste and password managers work.
3.3.9 Accessible Authentication (Enhanced)AAA new in 2.2 By handSigning in needs no cognitive function test at all, not even object recognition.

4. Robust

WCAG 2.2 principle 4, Robust: each success criterion, its level, what LumensOS Tester does about it, and what a person must confirm
CriterionLevelLumensOS Pro Tester todayWhat a person has to confirm
4.1.2 Name, Role, ValueA Automated checksaxe-core: area-alt aria-allowed-attr aria-braille-equivalent +25Every control exposes a name, role and state to assistive technology and custom widgets follow ARIA patterns. Confirm with a screen reader.
4.1.3 Status MessagesAA Narrow automated checkIt only finds loading indicators and countdowns visible during the audit; messages after an action are not observed.axe-core: Status updates (item added, saved, 12 results) are announced without moving focus.

Test your own pages with LumensOS Pro Tester

Run the whole audit in one click on any page: contrast, 200 % zoom, reflow, text spacing, focus and more. Get a sealed, printable report with every failure marked on the page, and work through the checklist for what a tool cannot judge. Your first 3 reports are free. $9.99 a month, includes everything in Pro. Cancel any time.

See pricing

LumensOS Pro Tester helps you test. It does not make a website conform to WCAG or any law, and a report from it is not a certificate of conformance.