Accessibility

A Studio screen is accessible out of the box, because it is built from the grid and the edit form - both designed to the WAI-ARIA patterns. This page is what you get for free, what you own, and how to verify it.

What you get for free

What you own

The generated code is yours, so a few things are on you to keep accessible:

Keyboard reference

Key Action
Tab Move into / out of the grid (one stop), then to the toolbar and pager
Arrow keys Move the active cell
Enter / F2 Start editing the active cell (inline mode)
Esc Cancel the current edit or close the modal
Space Toggle a row checkbox (when selection is on)
Home / End, PageUp / PageDown Jump within the grid

Verify it

Automated checks catch the regressions. Run axe against the running screen in a Playwright test:

import { test, expect } from '@playwright/test'
import { injectAxe, checkA11y } from 'axe-playwright'

test('customers screen has no a11y violations', async ({ page }) => {
  await page.goto('/customers')
  await injectAxe(page)
  await checkA11y(page, undefined, { detailedReport: true })
})

Automated tools find roughly half of issues - also tab through the screen with no mouse, and try it with a screen reader (VoiceOver / NVDA) once. Both take a couple of minutes and catch what axe cannot.

See also