MuseMVP
MuseMVP 文档
开发指南

测试

分层执行契约、单元、Workers、API 和桌面/移动 E2E,验证编译后的 Worker。

分清验证层级

类型通过不代表接口可用;本地 Worker 通过不代表真实支付或邮件已经验收。记录每次运行对应的源码提交、命令、结果和未验证项,不能沿用旧提交的通过数字证明新版本。

本地准备

使用 Node 22.12+、pnpm 10.26.2,先执行:

pnpm install --frozen-lockfile
pnpm muse:init

API 与浏览器测试使用初始化后的本地应用,测试配置默认 http://localhost:3000。已有本地开发服务可以被复用;确认它来自当前仓库与提交。单元和 Workers 测试不应偷偷请求真实支付或远程 AI。

按顺序执行

pnpm check:contracts
pnpm check:error
pnpm test:unit
pnpm test:workers
pnpm build
pnpm type-check
pnpm test:api
pnpm test:e2e
命令证明什么
check:contracts受保护合约和仓库约束未被意外破坏
check:errorBiome 规范检查
test:unit配置、业务函数及边界行为
test:workers本地 Worker runtime 与隔离 D1 行为
buildVite / TanStack / Cloudflare 编译及生成产物
type-checkTypeScript;首次拉取时先 build 生成路由与 Paraglide
test:apiHTTP、权限与服务响应
test:e2eDesktop 与 Chromium 移动视口交互

首次 type-check 缺生成模块时先完成 build,而不是手工补一份空文件。Workers 测试使用隔离数据库,不应指向生产 D1。

验证编译后的 Worker

停止自己启动的 3000 端口开发服务,构建后在 PowerShell 执行:

$env:FLARE_TEST_PREVIEW = '1'
pnpm exec playwright test
Remove-Item Env:FLARE_TEST_PREVIEW

测试配置会启动 pnpm preview,并禁用复用普通 dev 服务。不要占着同一端口再运行 preview,也不要误把 dev 的通过记录成编译产物通过。若显式设置 FLARE_TEST_URL,则测试使用该地址而不启动服务;除非有明确验收授权,不要将测试指向公共演示或真实生产。

必测交互

  • 默认邮箱验证码登录、新邮箱注册、密码入口、重置、OAuth 和两步验证。
  • 两个用户的文件/订单/任务隔离,Key 创建、调用及删除后失效。
  • 文件上传、下载、删除、大小/MIME/配额失败。
  • AI 逐段输出、余额不足、摘要任务、失败补偿与重复投递。
  • 管理员表格在已加载范围内筛选分页,角色、退款、重放与确认对象。
  • 中英文、浅色/深色/系统、键盘操作、移动抽屉与整页溢出。

场景定义见源码 tests/e2e/SCENARIOS.md;修改行为时同步场景与断言,不写只复述组件实现的测试。

真实服务验收

单独记录自己的部署 origin、health 环境、HTTPS 回调、真实邮件收件、每个已启用网关的 sandbox 支付和 Webhook、真实 AI 与队列结果。CLI smokePassed 与人工 verified 是不同字段。

失败时保留相关错误、trace 和目标信息,移除 token、验证码与个人数据后再共享。继续阅读 部署 与 排障。

本页目录