Kết hợp máy quét tự động với kiểm tra thủ công — công cụ tự động chỉ bắt được một phần lỗi (thiếu alt, contrast, thiếu label, id trùng), phần còn lại là logic mà máy không đánh giá được.
Tự động:
- axe DevTools hoặc tab Lighthouse (mục Accessibility) trong Chrome — quét nhanh một trang.
- @axe-core/react hoặc jest-axe/vitest-axe để chạy trong test, chặn hồi quy ở CI.
- HTML validator: markup sai lồng nhau cũng làm hỏng accessibility tree.
Thủ công — phần quan trọng hơn:
1. Rút chuột ra: Tab qua toàn trang. Có nhìn thấy focus ring không? Thứ tự có khớp thứ tự trên màn hình không? Có bị kẹt ở đâu không?
2. Zoom 200% / co viewport xuống 320px: nội dung có bị cắt hay phải cuộn ngang không.
3. Screen reader thật: VoiceOver (macOS/iOS, Cmd+F5), NVDA (Windows, miễn phí). Nghe nhãn của nút, nghe thông báo sau khi submit.
4. Cây accessibility trong DevTools: kiểm tra role và accessible name của từng phần tử tương tác.
Điều cần nói rõ khi phỏng vấn: Lighthouse 100 điểm không đồng nghĩa trang dùng được — nút vẫn có thể không bấm được bằng bàn phím, thứ tự focus vẫn có thể lộn xộn. Điểm số là sàn, không phải trần.