MuseMVP 文档
开发

测试与验收

Spec、Code、Verify、Test、Green 与真实平台验证边界。

非平凡行为按 Spec → Code → Verify → Test → Green 交付。先定义验收路径;影响浏览器流程时维护 tests/e2e/SCENARIOS.md。新增包行为、schema 和 bug 修复先写最小失败测试。

测试层

位置证明什么
packages/<name>/tests包工厂、纯逻辑、schema/query 行为
tests/unit应用纯逻辑、模块编排、转换、校验
tests/api对正在运行的应用发送真实 HTTP,验证鉴权、权限、校验、响应契约
tests/e2ePlaywright 的导航、认证 UX、重定向与登录后流程
tests/utils共享环境和 Better Auth plumbing,不放业务断言

packages/testing/coverage-floors.json 下限只能提高。数据库测试包含 Postgres/PGlite 与 SQLite 查询覆盖;不能用其中一个方言的通过替代另一个平台验证。

Node 本地准备

pnpm muse:init --yes --app web --database-url <postgres-url>
pnpm db:seed
pnpm dev

手动密码登录用 [email protected] / [email protected],密码取 MUSE_SEED_PASSWORD(默认 musemvp)。正常运行保持 BETTER_AUTH_ENABLE_TEST_UTILS=false。

API/E2E 测试复用 tests/utils/better-auth.ts 和 tests/e2e/utils/session.ts。测试进程启用 Better Auth testUtils,API 使用 getAuthHeaders,浏览器使用 getCookies,OTP 用捕获助手;不要每份 spec 手写登录 bootstrap。

命令与限制

命令范围
pnpm test:unit包与应用逻辑
pnpm test:unit:coverage覆盖率与下限检查
pnpm test:apiNode 本地真实 HTTP 契约
pnpm test:e2eNode Playwright;配置可启动 build/start,复用已有服务需匹配 base URL
pnpm test:e2e:cf当前配置在 3001 上 build:cf + next start,不等于真实 Wrangler Worker 绑定验证
pnpm cf:previewOpenNext Worker 预览,补查 D1/R2/邮件平台路径
pnpm apps:parity页面/内容副本一致性,不验证行为

Workers 准备 pnpm muse:init --yes --app cloudflare 和 pnpm db:seed:d1,不需要 Postgres。现有 test:e2e:cf 启动方式不能证明原生 D1/R2 运行成功;涉及平台行为时,必须在 Wrangler 预览/实际部署补查,不能仅凭脚本命名宣称覆盖完成。

按变更选择

逻辑优先 unit;路由加 API 契约;认证、计费、角色、上传和跨路由导航组合低层测试与浏览器验证。先手动走关键路径,再固定断言,包含空态、服务错误、非法输入与跨用户访问。明确报告哪些通过、未运行或延期,而不是把渲染/type-check 当成完成。

本页目录