# Compiled Patch Accessibility Review Runsheet Use this as the core checklist for frontend accessibility review of Firefox patches. The goal is to catch the kinds of issues the accessibility team repeatedly identified in historical reviews, while avoiding platform-only accessibility-engine issues. ## Visibility, Readability, and Discoverability - Run a contrast check on all modified components, verify WCAG level AA compliance. - Check that controls needed to complete a task are persistently discoverable and not revealed only by hover or prior keyboard focus; hidden controls are easy for keyboard, switch, touch, screen reader, and low-vision users to miss. They also have the potential to create S2 navigation issues with VoiceOver specifically. - Check that browser chrome text meets the team's minimum readability threshold, no smaller than 12px / 0.75rem; users cannot reliably enlarge Firefox chrome text with web content zoom or page font preferences. Developers should *never* use the xxsmall font token. This token requires explicit approval from the a11y team. - Check that cursor styling matches the interaction model; users infer behavior from cursor shape, and cursor mismatch, ex. a text cursor on non-editable content, suggests the wrong action. Links should use "hand" pointer, buttons should use "cursor" pointer, and text inputs should use the text-insertion cursor. - Check that all available states (ex. focused, selected, hovered, active, checked, expanded, disabled, etc.) are visually distinguishable. States which can appear next to one another (ex. selected, non-selected) must have 3:1 contrast. Disabled states must have 3:1 contrast. - Check that states remain perceptible when a control has keyboard focus; users still need feedback that activation, hover, selection, etc. occurred when focus styling is present. - Check that controls are not hidden with opacity or styled with disabled tokens unless they are truly disabled; visually hidden or misleading active controls can become undiscoverable or look unavailable. - Check that transient UI state changes like "download completed", "file uploaded" remain visible long enough (minimum 5 seconds). Ideally, they should remain until dismissed by user action. - When animation is used, it must settle within 5 seconds. Animation lasting longer than 5 seconds must be controllable by the user with play, pause, stop, hide controls. - Non-essential animation should be disabled for `prefers-reduced-motion` users. Essential animation should be considerate, preferring fade-in/fade-out mechanics over slide/scroll mechanics. - Animations must not flash more than 3 times per second. They must also adhere to the other animation rules above. - Interactive areas must meet WCAG requirements for minimum target size. ## Names, Labels, Descriptions, and Text Alternatives - Check that every interactive element has an accessible name from visible text, localized markup, `aria-label`, `aria-labelledby`, or an equivalent native mechanism; an unnamed control may be announced only as "button" or "menu item" with no useful purpose. Prefer associating labels using visible text (e.g. HTML `label` element or `aria-labelledby`) over accessibility specific labels (e.g. `aria-label`) for the most equivalent experience. - Check that labels are connected using a mechanism supported by the specific element type and namespace; a visual label does not help assistive technology unless it participates in accessible name computation. - Check that icon-only and repeated controls have unique contextual names and visible tooltips when appropriate - Check that associated controls are identified via relations or descriptions in addition to labels when labels alone are vague; labels like "More options" or "Learn more" are ambiguous without the row, item, or feature they apply to. - Check that visible tooltips, titles, and ARIA labels do not duplicate the same accessible name; duplicate naming creates noisy or repeated screen reader output. - Check that meaningful images and icons have an equivalent accessible text representation, and that decorative images use empty alt text or another supported hiding mechanism; screen reader users need the same state or identity information sighted users get from visual symbols. - Check that information conveyed only through visual design elements, such as favicons, color indicators, badges, or container identity, is also exposed through text, accessible names, or descriptions; visual-only identity cues create an information gap for screen reader users. - Check that elements using `aria-description` or `aria-describedby` also have an accessible label; some assistive technologies ignore descriptions on unlabelled elements. - Check that explanatory text for a suggestion, row, or dialog page is associated with the element that receives focus (e.g. using `aria-describedby`); screen readers generally announce the focused control, not nearby visual text outside its name or description. - Check that alert dialogs and dialogs expose both a title and the relevant body content through supported naming and description mechanisms; announcing only the title can leave users without the message they need in order to respond. If there is a large amount of static content inside a dialog, consider using the `document` role inside the dialog role. This will allow screen reader users to navigate through the static content at their own pace as they would on a web page. - Check that nested interactive elements inside a control's `