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 apps:parity页面/内容副本一致性,不验证行为

按变更选择

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

本页目录