Accessibility and Inclusive Design Questions
Designing and building for the full range of users and abilities: WCAG conformance levels and what they actually require, semantic markup and ARIA, keyboard and screen-reader support, color contrast and non-color affordances, accessible forms and error states, audio and alternative feedback, accessibility testing and audit, and disability-inclusive research. Covers accessible interaction patterns and treating accessibility as a first-class engineering constraint rather than a retrofit. The scope is accessibility as an engineering and design competency: not workplace diversity, inclusion and belonging, not algorithmic fairness or model bias, and not responsive or multi-platform layout as topics in their own right.
Design and implement the accessibility behavior for a modal dialog component. Describe required ARIA attributes, keyboard interactions (Esc to close, focus trap), and how you will manage focus before and after the dialog opens and closes.
Sample Answer
Direct answer. An accessible modal needs role="dialog" (or alertdialog for a warning that requires acknowledgment) with aria-modal="true" and aria-labelledby pointing at its heading, keyboard focus trapped inside it while open (Tab cycles only among the modal's own focusable elements, wrapping at both ends), Escape closes it, and focus returns to the element that opened it afterward.
Required behavior, piece by piece.
- On open: move focus to the first focusable element inside the modal (or the modal container itself if it starts with static content), and mark background content
inert(oraria-hidden="true"on siblings) so screen reader virtual cursor navigation (the separate position a screen reader uses to read through page content, independent of where real keyboard focus is) can't wander behind the dialog. - While open: Tab from the last focusable element wraps to the first; Shift+Tab from the first wraps to the last. This is the focus trap.
- On close (via Escape, a Cancel button, or clicking outside if that's the chosen pattern): return focus to the element that triggered the modal, not to
<body>, so keyboard users don't lose their place in the page.
Executed verification. I built the focus trap in a real DOM (jsdom) with an opener button and two modal buttons (Cancel, Confirm), and dispatched real KeyboardEvent('keydown', {key: 'Tab'}) and Shift+Tab events rather than narrating the expected behavior:
function trapFocus(modal) {
const focusables = getFocusable(modal);
const first = focusables[0], last = focusables[focusables.length - 1];
modal.addEventListener('keydown', (e) => {
if (e.key !== 'Tab') return;
if (e.shiftKey && document.activeElement === first) { e.preventDefault(); last.focus(); }
else if (!e.shiftKey && document.activeElement === last) { e.preventDefault(); first.focus(); }
});
}
Actual results: after opening, document.activeElement.id was cancel (the first focusable), matching expectation. Focusing confirm (the last element) and dispatching a plain Tab keydown moved document.activeElement to cancel, confirming the forward wrap. Focusing cancel and dispatching Shift+Tab moved document.activeElement to confirm, confirming the backward wrap. All three assertions passed against real focus state.
Trade-offs and pitfalls. The most common real bug is trapping focus but forgetting to hide the background from the screen reader's virtual cursor (only visual/keyboard focus is trapped, not the reading order), which lets a screen reader user "read past" the modal into content that's visually obscured behind it. inert (now broadly supported) solves this in one attribute; the older approach of manually toggling aria-hidden on every sibling is more error-prone. A second common bug is trapping focus but never restoring it to the opener on close, which silently drops keyboard users back at the top of the page.
Design a strategy to integrate both automated and manual accessibility checks into a design system's CI pipeline. Cover when to run axe-like unit checks, Storybook accessibility snapshots, visual regression for focus states, lint rules, and manual sign-offs for complex components.
Sample Answer
Direct answer. Integrating accessibility checks into a design system's CI pipeline needs both automated per-component checks that run fast enough for every PR, and visual regression testing specifically for focus states, which catches a class of defect axe-style rule checks structurally cannot: a focus style that's technically present (an outline exists) but visually wrong after a CSS refactor.
When to run axe-like unit checks. Every component's story or unit test runs an axe scan on PR, catching structural issues (missing labels, invalid ARIA, insufficient contrast where computable) at the point where a component change is smallest and cheapest to fix, before it propagates into every product surface consuming that component.
Storybook accessibility snapshots. Each documented component state (default, disabled, error, focused) gets its own Storybook story, and an axe scan runs against every story variant, not just the default state, since accessibility issues specific to a non-default state (an error message not properly associated, a disabled state that's still focusable) are otherwise invisible to a check that only ever exercises the default.
Visual regression for focus states. A screenshot-diff tool (Chromatic, Percy, or a Playwright-based visual diff) captures each interactive component's focused-state appearance and flags any pixel-level change on a design-system PR; this catches the specific failure mode where a CSS refactor accidentally removes or alters a focus ring's color/offset while every axe-based check still passes, since axe checks for the computed style's presence, not whether it matches an intended design.
Lint rules. A static lint rule set (eslint-plugin-jsx-a11y or equivalent) runs at the editor and pre-commit level, before a PR is even opened, catching a class of purely structural mistakes (a missing alt prop, an interactive element with no accessible name, an invalid ARIA role/attribute combination) at the cheapest possible point, earlier and cheaper than the axe-in-CI check that catches the same class of issue on an already-open PR.
What a violation actually looks like when it fires. Concretely: a component shipped with <img src="chart.png" /> (no alt) produces this axe-core violation object: { id: 'image-alt', impact: 'critical', description: 'Ensures <img> elements have alternate text or a role of none or presentation', nodes: [{ html: '<img src="chart.png">', target: ['img'] }] }; the same mistake caught earlier by eslint-plugin-jsx-a11y's alt-text rule at commit time reads error img elements must have an alt prop, either with meaningful text, or an empty string for decorative images jsx-a11y/alt-text. In CI, the axe scan fails the PR check with that violation object attached to the job log (and, depending on the CI integration, as an inline PR comment on the offending story), so the author sees the specific missing-alt failure rather than a generic "accessibility checks failed" status.
Manual sign-offs for complex components. Some components (a rich data grid, a multi-step wizard, a custom drag-and-drop reorder list) have interaction complexity that automated tools structurally cannot judge, such as whether a keyboard flow actually feels navigable during a real task, not just whether individual attributes are present. Tag these components as requiring an explicit human accessibility reviewer's sign-off before merge, distinct from and in addition to the automated checks, so a component can't ship purely on a green CI run when its interaction model genuinely needs a person to operate it.
Trade-offs and pitfalls. Visual regression testing for every component state produces a meaningful review burden (screenshot diffs need human approval on legitimate visual changes), so it's worth scoping specifically to interactive/focus states and other accessibility-relevant visual properties (contrast-critical text) rather than blanket-applying it to every pixel of every component, which would drown real accessibility-relevant diffs in unrelated noise like anti-aliasing variance.
Your product must comply with WCAG 2.1 AA. As a PM, outline a research plan to surface accessibility issues among users with visual impairments. Include recruitment, test tasks, assistive technologies to support, and how you'd integrate fixes into the backlog while balancing feature delivery.
Sample Answer
Direct answer. A PM-led research plan to surface WCAG 2.1 AA-relevant accessibility issues among visually impaired users needs the same core research discipline (recruit real assistive-technology users, accommodate the session logistics, run it ethically) applied specifically by someone who may not be an accessibility specialist themselves, which means leaning on established methodology and specialist partners rather than improvising the research design from scratch.
Recruitment. Partner with a specialist recruiting panel or disability-community organization specifically experienced with visually-impaired participants (screen reader users and low-vision/magnification users are genuinely different populations within "visually impaired" and need to be represented as such, not treated as one homogeneous group); a PM without deep accessibility-research background should not attempt to informally recruit from a general customer panel's self-reported accessibility checkbox, which tends to under-specify and under-represent this population.
Test tasks. Realistic, end-to-end tasks on the actual product (not isolated component tests), covering the highest-traffic or highest-business-value flows first, since a PM's research budget is typically more constrained than a dedicated research team's and needs to prioritize accordingly.
Assistive technologies to support. At minimum NVDA or VoiceOver for screen reader participants and a magnification tool for low-vision participants, letting each participant use their own familiar setup rather than a study-provided one, per the general AT-research discipline.
How findings feed the AA compliance goal. Map each finding directly to the specific WCAG 2.1 AA success criterion it violates, not just a general usability note, since that mapping is what makes the findings actionable for engineering and directly traceable to the compliance target the study was commissioned to support.
Trade-offs and pitfalls. A PM running this without prior accessibility-research experience should explicitly budget for either a specialist research partner's involvement or upfront training/consultation on research ethics and methodology specific to this population, rather than assuming general product-research skills transfer directly; the accommodation and ethical considerations here are genuinely different from a typical PM-led general usability study, and treating them identically risks both poor-quality findings and a session that's actually uncomfortable or extractive for participants.
Integrating findings into the backlog. Findings that map to a specific WCAG 2.1 AA failure get filed as their own tickets, tagged with the violated success criterion, and pulled into the current or next sprint alongside feature work, since AA conformance is a compliance requirement stated up front, not optional polish that can lose every backlog-prioritization fight indefinitely. Lower-severity or best-practice findings that go beyond the AA bar get batched into a reserved per-sprint accessibility-capacity allocation instead, and the PM protects that reserved capacity explicitly in planning conversations rather than letting it get silently reabsorbed by feature scope creep.
Explain the differences between WCAG conformance levels A, AA, and AAA, and describe how you would decide which level to target for a new consumer-facing web product. As a product designer, consider business priorities, user needs, legal obligations, timelines, and risk trade-offs when recommending a conformance target.
Sample Answer
Direct answer. WCAG's three conformance levels, A, AA, and AAA, escalate in strictness and practical difficulty, and deciding which to target is a real trade-off between legal/regulatory alignment, achievable cost, business priorities, timelines, and actual user reach, converging for the large majority of organizations on AA as the practical target rather than either extreme.
Level A is the baseline: content that would otherwise be completely inaccessible to assistive technology (a totally missing text alternative, a form with zero programmatic labels anywhere) fails even this floor; it's necessary but not sufficient for a real product, since it permits genuinely poor experiences (a 3:1 contrast ratio, well below AA's 4.5:1, still technically passes level A alone).
Level AA is what nearly every real legal and regulatory framework actually references (ADA case law, EN 301 549, AODA, Section 508), making it the level that directly addresses the compliance risk driver most organizations are actually responding to, while remaining broadly achievable across a real product without extreme design constraints.
Level AAA is the strictest and is explicitly NOT recommended by the W3C itself as a full-site target, since some AAA criteria (sign-language interpretation for all video, no justified text) are genuinely difficult or impossible to satisfy for certain types of content regardless of effort invested.
How to decide. Target AA as the baseline organizational commitment; treat legal/regulatory alignment as close to a hard requirement (AA is what actually gets litigated and regulated); treat cost as a real constraint that argues against blanket AAA; treat business priorities as a reason to sequence work, not a reason to negotiate the baseline down, since letting the AA floor compete story-by-story against other roadmap priorities is how it quietly slips; treat timelines the same way, a near-term launch date is a legitimate reason to ship AA first and adopt selective AAA criteria afterward, not a legitimate reason to launch below AA, since AA is the actual floor that legal exposure is measured against; and consider individual AAA criteria selectively where they're cheap to adopt (some enhanced criteria cost little beyond the AA baseline) rather than as an all-or-nothing choice between the two levels.
Trade-offs and pitfalls. A team new to accessibility sometimes assumes "more compliant is always better" and defaults to claiming a AAA target without understanding what that actually commits them to; the more defensible, informed choice is AA as the stated organizational target, which is both what's actually verifiable and what actually addresses real legal exposure, rather than an aspirational AAA claim that's unlikely to be genuinely met and creates its own credibility risk if audited against.
Your site has thousands of legacy pages with accessibility issues (missing headings, images without alt text, tables used for layout). Design a prioritized remediation and migration strategy that minimizes disruption: tooling for scanning, heuristics for prioritizing pages, quick editorial fixes vs full rewrites, and temporary mitigations while content is remediated.
Sample Answer
Direct answer. Remediating thousands of legacy pages with accessibility issues needs a triaged, phased migration strategy rather than a single big-bang fix: prioritize by a combination of traffic and severity (fix high-traffic pages with critical issues first), fix shared templates and components before individual pages (since a template fix propagates to every page using it), and sequence the migration so users experience continuous improvement rather than the site being in an inconsistent, partially-fixed state indefinitely with no visible endpoint.
Prioritization framework. Cross a severity axis (missing headings and alt text are typically higher severity than a minor contrast issue on secondary text) against a traffic/business-criticality axis (checkout and account-management pages matter more than a rarely-visited archive page), and start in the high-severity, high-traffic quadrant.
Template-first sequencing. If the missing headings and layout tables stem from a small number of shared page templates rather than thousands of independently hand-built pages, fixing the templates first remediates every page using them in one pass, which is dramatically higher leverage than a page-by-page sweep; audit specifically to determine how much of the corpus is template-driven versus genuinely bespoke before committing to a page-by-page plan.
Minimizing disruption. Roll the fix out in tranches by page category rather than attempting the entire corpus at once, both to catch template-fix regressions on a smaller blast radius before they propagate everywhere, and to keep the visible improvement trend continuous rather than the site appearing broken in new ways mid-migration.
Tracking and communicating progress. A dashboard showing percentage of pages remediated by category, alongside metrics like violation count trend and time-to-fix gives both the team and stakeholders a visible sense of real progress on what could otherwise feel like an endless backlog.
Tooling for scanning. Run an automated crawler (axe-core driven headlessly across the full page inventory, or an equivalent like Lighthouse CI) to build a violation-count dataset per page and per template, which is what actually feeds the severity axis of the prioritization framework above rather than relying on a manual sample. Automated scanning has real, known blind spots for exactly two of the defects named here: it can flag a table's structural markup but often cannot reliably distinguish a genuine data table from a table used purely for visual layout, and it cannot judge whether existing alt text is accurate versus present but meaningless; budget a manual spot-check specifically for these two categories rather than trusting the automated violation count alone for them.
Quick editorial fixes versus full rewrites. Split remediation work by who can actually do it: a content-layer fix (adding real alt text to an image, correcting a heading level that's a CMS style choice, fixing ambiguous link text) is fixable by content editors in the CMS with a short training pass and can proceed in parallel with engineering work; a structural fix (replacing a layout table with semantic markup and CSS, restructuring a hand-built page with no underlying template) requires actual development capacity and belongs in the engineering-led, template-first track described above. Routing the editorial-fixable subset to editors directly, rather than queuing everything through engineering, is what keeps the editorial-capable majority of fixes from waiting behind the smaller set that genuinely needs a rewrite.
Temporary mitigations while content is remediated. For pages still waiting in the queue, apply a lightweight interim mitigation where one exists and is safe: a site-wide script or CSS rule adding role="presentation" to detected layout tables as a stopgap (removing them from the tab/table-navigation semantics screen readers would otherwise apply), or an automated flag surfaced to editors for any image still missing alt text. Present any interim mitigation to stakeholders explicitly as a stopgap, not a fix, since a role="presentation" patch changes how the table is announced but doesn't address why it was built as a table in the first place, and treating a mitigation as equivalent to remediation risks the underlying page never getting properly fixed.
Trade-offs and pitfalls. A purely severity-sorted backlog with no consideration of shared-template leverage risks spending significant effort fixing the same underlying pattern independently on hundreds of pages before someone notices it's actually one root cause; auditing for template-versus-bespoke structure before starting the remediation work, not after, is what avoids that waste.
Unlock Full Question Bank
Get access to all Accessibility and Inclusive Design interview questions and detailed answers.
Sign in to ContinueJoin thousands of developers preparing for their dream job.