macos-web/tests/README.md
2026-07-17 16:52:13 +08:00

51 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# macos-web 回归测试
可复现的 Playwright 端到端测试。**生产页面不依赖 Node**;仅测试代码依赖 Node 与 Playwright。
## 环境要求
- Node.js ≥ 18
- Playwright本环境为全局安装`/home/kimi/.npm-global/lib/node_modules/playwright`helpers.js 按此绝对路径 require如安装位置不同请修改 helpers.js 第 9 行)
- Chromium`npx playwright install chromium`
## 运行
```bash
cd macos-web
# 全部用例16 组)
node tests/run.js
# 按名称/标题过滤,例如:
node tests/run.js 07 # 只跑 07-notify
node tests/run.js 锁屏 # 按标题关键字过滤
```
测试自带静态文件服务器(端口 8177占用时自动递增HTTP 与 file:// 两种冷启动均覆盖每个用例独立浏览器上下文localStorage 隔离)。
## 用例清单(对应修复任务书编号)
| 文件 | 覆盖 |
|---|---|
| 01-boot | file:// / HTTP 冷启动到锁屏并解锁;控制台无未捕获异常(任务书测试 1/2/3 |
| 02-wm-close | ①WM.close 重入不连删、confirmClose 防重入、取消保留;②锁屏/睡眠保留窗口与内容、关机脏文档确认可中止(任务书测试 7/8 |
| 03-menus | ③首次打开 App 菜单可用;选择变化后重开菜单状态同步 |
| 04-finder | ④历史前进后退/index 语义;⑤双击进入/打开、Cmd/Shift 多选、重命名、复制移动、废纸篓还原;⑥桌面重绘限制(任务书测试 4 |
| 05-terminal | ⑦引号/转义 tokenizer、cp/mv 目标语义、rm -r、touch mtime、错误不重复 |
| 06-appstore | ⑧安装前三处不可见、安装后出现、旧数据迁移不删用户文件、tv.png任务书测试 9 |
| 07-notify | ⑨总开关/App 开关/专注模式/未读语义/Dock 局部更新/Esc 与点外关闭(任务书测试 10 |
| 08-media | ⑩切源后全局音量仍生效、关闭注销、App 内滑块与全局一致(任务书测试 11 |
| 09-preview | ⑪画廊点击开大图、无无限画廊、标题/缩放/alt/加载错误(任务书测试 12 |
| 10-datetime | ⑫localDateKey、世界时钟 IANA 夏令时、时区设置保存生效 |
| 11-clock | ⑬秒表/计时器跨标签恢复、endAt 唯一基准、只通知一次、关闭前提示(任务书测试 13 |
| 12-settings | ⑭全部 pane 无异常加载、模拟状态持久化恢复、switch 完整 aria、搜索可达 |
| 13-responsive | ⑮四视口截图tests/shots/、窗口不越界、Dock 收窄、英文不断行(任务书测试 15 |
| 14-textedit | 文本编辑保存/另存为/取消关闭不落盘/跨 App 同步(任务书测试 5 |
| 15-persistence | 刷新后文件/图标位置/主题/便笺恢复localStorage 损坏回退(任务书测试 14 |
| 16-assets | 本地 assets 引用缺失数 = 0任务书测试 16 |
## 注意
- headless Chromium 无 H.264 解码,视频用例依赖 WebM 回退源。
- `evaluate` 调用会 await 返回的 Promise对会弹出对话框的 API`WM.close``Sys.powerOff``appState.save`),测试中必须以语句形式调用(`() => { ... }`),不可直接返回其 Promise否则 Playwright 会挂起等待用户点击。