2026-07-23 15:16:57 +08:00
..
2026-07-23 15:16:57 +08:00
2026-07-23 15:16:57 +08:00
2026-07-17 16:52:13 +08:00
2026-07-17 16:52:13 +08:00
2026-07-23 15:16:57 +08:00
2026-07-17 16:52:13 +08:00
2026-07-23 15:16:57 +08:00

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)

运行

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 会挂起等待用户点击。