背景与意图
前端现有 86 个测试文件、302 个用例,但均为单元/组件级(vitest + Testing Library),无法验证跨组件、跨路由与真实 API 交互的集成行为。核心闭环"规划任务 → 时间记录 → 复盘/洞察"依赖多个页面与 cache 状态,适合用 E2E 测试兜底。
目标是引入最小 Playwright 基线,覆盖本地 Web UI 的核心用户闭环,并接入 web_validate.sh。
实施范围
- 引入 Playwright 与浏览器 runner,固定浏览器版本或使用 CI 缓存避免漂移。
- 选择一条稳定核心流程做端到端覆盖,例如:创建 vision → 添加 task → 记录 timelog → 查看 insights 统计。
- 本地开发可用 mock API 或
lifeos web serve 实际服务两种模式;CI 建议使用真实 FastAPI + 临时 SQLite,避免 mock 与后端漂移。
- 增加确定性 selector 约定(优先 role/label/text,避免依赖生成的 class)。
- 纳入
bash ./scripts/web_validate.sh,失败时产出可读 report/artifact。
非目标
- 不追求全页面 E2E 覆盖;以核心闭环与高回归风险路径为限。
- 不替代现有单元/组件测试。
- 不改变前端生产代码或页面结构以满足测试。
验收标准
- 至少一条端到端流程在 CI 稳定通过(含并行/重试策略)。
- 本地可一键运行 E2E 并给出失败定位。
bash ./scripts/web_validate.sh 通过;bash ./scripts/doctor.sh 通过。
交付说明
PR 描述需说明测试模式(mock vs real API)、浏览器矩阵、稳定性策略,并使用 Closes #<本 issue>。
背景与意图
前端现有 86 个测试文件、302 个用例,但均为单元/组件级(vitest + Testing Library),无法验证跨组件、跨路由与真实 API 交互的集成行为。核心闭环"规划任务 → 时间记录 → 复盘/洞察"依赖多个页面与 cache 状态,适合用 E2E 测试兜底。
目标是引入最小 Playwright 基线,覆盖本地 Web UI 的核心用户闭环,并接入
web_validate.sh。实施范围
lifeos web serve实际服务两种模式;CI 建议使用真实 FastAPI + 临时 SQLite,避免 mock 与后端漂移。bash ./scripts/web_validate.sh,失败时产出可读 report/artifact。非目标
验收标准
bash ./scripts/web_validate.sh通过;bash ./scripts/doctor.sh通过。交付说明
PR 描述需说明测试模式(mock vs real API)、浏览器矩阵、稳定性策略,并使用
Closes #<本 issue>。