Problem
e2e/accessibility.spec.ts is 23 lines with 3 tests, and only checks that a skip-link exists and that an h1 is visible on the page. There is no automated accessibility scanner (e.g. @axe-core/playwright), no keyboard-navigation test, and no focus-trap test for any of the app's modal dialogs (components/ui/dialog.tsx, tx-preview-dialog.tsx, fee-estimate-dialog.tsx).
Impact
The accessibility test suite gives a false sense of coverage — "we have an accessibility spec file" — while catching almost nothing an actual a11y regression would trigger: missing aria-labels, insufficient color contrast, keyboard traps in dialogs, or unreachable interactive elements. For a financial app where users interact with modals for irreversible actions (cancel stream, confirm transaction), this is a real user-facing risk, not just a compliance checkbox.
Suggested fix
Add @axe-core/playwright (or similar) and run it against key pages/flows (dashboard, create-stream, stream-detail with dialogs open). Add explicit keyboard-navigation tests (tab order, Escape closes dialogs, focus returns to the trigger element) for at least the cancel-stream and transaction-preview dialogs.
Location
e2e/accessibility.spec.ts
components/ui/dialog.tsx, tx-preview-dialog.tsx, fee-estimate-dialog.tsx
Problem
e2e/accessibility.spec.tsis 23 lines with 3 tests, and only checks that a skip-link exists and that anh1is visible on the page. There is no automated accessibility scanner (e.g.@axe-core/playwright), no keyboard-navigation test, and no focus-trap test for any of the app's modal dialogs (components/ui/dialog.tsx,tx-preview-dialog.tsx,fee-estimate-dialog.tsx).Impact
The accessibility test suite gives a false sense of coverage — "we have an accessibility spec file" — while catching almost nothing an actual a11y regression would trigger: missing
aria-labels, insufficient color contrast, keyboard traps in dialogs, or unreachable interactive elements. For a financial app where users interact with modals for irreversible actions (cancel stream, confirm transaction), this is a real user-facing risk, not just a compliance checkbox.Suggested fix
Add
@axe-core/playwright(or similar) and run it against key pages/flows (dashboard, create-stream, stream-detail with dialogs open). Add explicit keyboard-navigation tests (tab order, Escape closes dialogs, focus returns to the trigger element) for at least the cancel-stream and transaction-preview dialogs.Location
e2e/accessibility.spec.tscomponents/ui/dialog.tsx,tx-preview-dialog.tsx,fee-estimate-dialog.tsx