驗收清單
上線前跑一遍。每一項都能在 10 秒內驗完。
鍵盤
- 只用鍵盤能完成主要流程(建立 → 編輯 → 送出)
- Tab 順序符合視覺順序(由上到下、由左到右)
- 焦點環看得見(不要
outline: none了事) - Esc 能關掉所有浮層、退出所有編輯態
- 一組選項(分段、標籤片)只佔一個 Tab 停留點
- 對話框開啟時焦點進入、關閉時焦點還原
螢幕報讀器
- 所有圖示按鈕有
aria-label - 對話框有
DialogTitle - 排序表頭有
aria-sort - 鎖定欄位可聚焦,且
aria-label說得出鎖定原因 - 動態內容(導覽步驟、驗證訊息)有
aria-live - 表單控制項有關聯的
<Label htmlFor> - 每一個
role="img"的圖形都有文字等價(摘要aria-label,必要時加sr-only資料表) - 圖形內的資料不會被重複播報(數值已在鄰近可見文字時,圖形標
aria-hidden)
視覺
- 一般文字對比 ≥ 4.5:1(淺色與深色各驗一次)
- UI 邊界對比 ≥ 3:1
- 每個靠顏色傳達的狀態都有第二條線索
- 灰階列印一份,語意仍完整
跨裝置
- 手機上互動目標 ≥ 44px
- 表單在窄螢幕變單欄,不橫向捲動
- 提示泡泡在觸控裝置能長壓叫出來
- 表格在窄螢幕可水平捲動,且首欄凍結
動態
- 開啟「減少動態」後,動畫降級成靜態版本而不是消失
- 沒有超過 300ms 的互動轉場
- 沒有自動播放、無法停止的動畫
文案
- 錯誤訊息說得出原因與下一步,不只是「操作失敗」
- 空狀態分辨「沒資料」「篩不到」「沒權限」
- 對話框按鈕文字能單獨讀懂(不是「是/否」)
- 鎖定提示說得出怎麼解鎖
自動化
能寫成測試的就不要靠人工。範本見 漂移防護。