no-confirmation-critical-action
CriticalWhat it is
Buttons or links that trigger destructive or irreversible actions — such as deleting an account, removing data, cancelling a subscription, or clearing content — execute immediately on click with no confirmation step.Why it matters
Accidental clicks on destructive buttons can cause permanent data loss. A user who accidentally clicks “Delete Account” should have a chance to cancel before the action completes. This is both a usability requirement and a user trust concern.How QAOS detects it
The agent identifies buttons and links with text suggesting a destructive action (delete, remove, clear, cancel, destroy, erase, purge) and clicks them, observing whether a confirmation dialog or confirmation step appears before the action executes.Examples
How to fix
For any action that is irreversible or has significant consequences, require an explicit confirmation step before executing:- Show a modal dialog with a clear description of what will happen
- Require the user to click a distinct “confirm” button
- Offer a prominent “cancel” option
- For especially destructive actions, require typing a confirmation phrase (e.g., the account name)
unclear-link-text
High WCAG 2.4.6What it is
Link text is generic and gives no indication of the link’s destination or purpose — phrases like “click here”, “read more”, “learn more”, or placeholder-like text.Why it matters
Screen reader users often navigate by cycling through links on a page. If every link says “click here”, they cannot determine which link leads where without reading the surrounding context. This makes navigation extremely inefficient.How QAOS detects it
The agent scans anchor elements for text that matches generic patterns: “click here”, “read more”, “here”, “link”, “more”, or text that is completely unintelligible (underscores, gibberish).Examples
How to fix
Write link text that describes the destination or action. The link text should make sense out of context:inconsistent-navigation
High WCAG 3.2.3What it is
The main navigation structure changes between pages of the same website — items appear in different orders, links appear on some pages but not others, or the navigation layout changes across sections.Why it matters
Consistent navigation is a fundamental usability expectation. Users build a mental model of your navigation structure after visiting a few pages. When navigation changes, users lose their orientation and spend cognitive effort re-learning the layout instead of accomplishing their goal. Screen reader users are particularly affected — they often navigate by landmark regions (<nav>), and changing navigation structures make each page feel like a new website.
How QAOS detects it
The agent follows navigation links to multiple pages and compares the navigation structure — checking for order changes, missing items, or structural differences between pages.How to fix
Implement a shared navigation component that renders identically on every page. In React/Next.js, this is typically a layout component:dropdown-not-keyboard-navigable
High WCAG 2.1.1What it is
A custom (non-native) dropdown component does not supportArrowDown/ArrowUp keyboard navigation between options. Users must use a mouse to select an option.
Why it matters
Keyboard-only users, screen reader users, and users with motor impairments rely on arrow key navigation in list components. A custom dropdown that only responds to mouse clicks is inaccessible to them.How QAOS detects it
The agent identifies custom dropdown components (e.g.,<div role="listbox"> or custom comboboxes) and checks whether they have keyboard event handlers for arrow key navigation.
Examples
How to fix
Implement the ARIA Listbox keyboard pattern —ArrowDown/ArrowUp to move focus, Enter or Space to select, Escape to close:
<select> element which provides keyboard navigation for free.
empty-link
Medium WCAG 4.1.2What it is
An<a> element has no visible text and no aria-label, making it invisible to screen reader users. Common cases include icon-only links or image links where the image has no alt text.
Why it matters
Screen readers announce links by their text content. An empty link is announced as “link” with no destination — completely useless for navigation. Users cannot know where the link leads or whether to follow it.How QAOS detects it
The agent scans anchor elements for those with no visible text content and no accessible name viaaria-label, aria-labelledby, or an image with a non-empty alt.
Examples
How to fix
Ensure every link has a meaningful accessible name — either as visible text, image alt text, oraria-label.
link-new-tab-no-warning
Low WCAG 3.2.2What it is
A link withtarget="_blank" opens in a new tab or window without informing the user that this will happen.
Why it matters
Unexpected new tabs disorient users, especially screen reader users who rely on the browser back button. Users who don’t expect a new tab may think the application has navigated away and lose their place in the original page.How QAOS detects it
The agent scans anchor elements fortarget="_blank" and checks whether any indication is given to the user (text, icon, or aria-label mentioning the new tab behavior).
Examples
How to fix
Indicate new-tab behavior visually and in accessible text. Always addrel="noopener noreferrer" to prevent the opened page from accessing window.opener:
link-to-file-no-warning
LowWhat it is
A link points to a downloadable file (PDF, DOCX, ZIP, etc.) but gives no indication of the file type or size. Users who click it may be surprised by a download prompt or a slow transfer.Why it matters
Users on slow connections, mobile data, or screen readers need to know what they’re getting before they click. A link that triggers an unexpected download or opens a large file wastes time and can consume mobile data allowances.How QAOS detects it
The agent scans anchor elements whosehref ends in a file extension (.pdf, .docx, .zip, .xlsx, etc.) and checks whether any file-type or size information accompanies the link.