# M14-04H:Chromium keyboard-only, accessible names/roles and focus restoration - `task`: `M14-04H` - `parent`: `M14-04G` - `status`: `done` ## 目标 在 Chromium 中验证不依赖 pointer 的核心菜单与操作搜索流程:键盘可以到达并激活入口,打开 modal/menu 后焦点落在可操作项,Escape/提交后焦点回到触发器,交互元素具备可计算名称和正确 角色。Firefox/WebKit 不在本项目范围内。 ## 输入 - 上一个 manifest:`tests/golden/M14-04G/manifest.json` - 生产入口:`web/app/src/app/App.tsx` - 样式入口:`web/app/src/app/app-shell.css` - 既有参考 e2e:`web/tests/e2e/keyboard-accessibility.spec.ts` ## 范围 做: - main/offscreen 两个 Chromium 页面配置。 - Tab/Shift+Tab 到文件菜单、Enter 打开、Escape 关闭并恢复触发器焦点。 - F3 打开操作搜索、输入框自动聚焦、Escape 关闭并恢复 F3 触发器焦点。 - 扫描可见 button/input/select/textarea/canvas/[role],检查可计算名称、禁用状态和合法角色。 - 记录焦点轨迹、角色/名称缺口和稳定报告 hash。 不做: - Firefox/WebKit 或特定屏幕阅读器的兼容性声明。 - 重新设计所有快捷键或引入新的 operator。 - 用 axe 的单一静态结果替代真实键盘路径。 ## 验收 ```text npm --prefix web run test:chromium-accessibility ``` 必要的补充门: ```text npm --prefix web run typecheck npm --prefix web run build git diff --check ``` ## 产物和交接 - 报告:`tests/golden/M14-04H/chromium-accessibility-report.json` - manifest:`tests/golden/M14-04H/manifest.json` - 状态页:`docs/status/M14-04H.md` - 下一任务:由 manifest 的 `nextTask` 决定 ## 回滚 删除 accessibility checker、报告、manifest、package 命令和本任务状态页;恢复 `M14-04G` 作为队列尾, 不得修改 M14-04G 的布局证据。