00 / 00

测试与验收

01MVP Desktop 模板的代码检查、浏览器预览、Tauri 原生窗口和发布前验收清单

桌面端验收分四层,每一层验证的东西不一样:

代码契约

运行:

vpr @01mvp/desktop#type-check
vpr @01mvp/desktop#lint
vpr @01mvp/desktop#test
vpr @01mvp/desktop#build
vpr @01mvp/desktop#tauri:check

当前测试覆盖:

测试证明什么
desktop-env.test.ts桌面公开 env 有默认值,非法 URL 会失败
api-client.test.tsoRPC 和 auth URL 拼接正确
preferences.test.ts本地偏好能规范化,空值会回落到默认值

改了 env、API base URL、auth cookie、runtime adapter 或偏好结构的话,先更新对应测试。

后端契约

桌面端依赖 01MVP Web/API。改了后端 origin、auth 或 oRPC 边界时,跑:

vpr @01mvp/product#test

这会覆盖 config、auth、api、web 等产品级测试。纯桌面 UI 改动不需要每次跑产品级测试,跨到后端配置时再跑就行。

浏览器预览

启动:

vpr @01mvp/product#dev
vpr @01mvp/desktop#dev

浏览器打开:

http://localhost:7410

检查:

  • 页面不是空白
  • API status 能显示
  • 登录表单能输入和提交
  • settings 能保存和重置
  • 窗口宽度接近桌面使用场景时布局合理

浏览器预览适合快速看 UI,但不能代替 native 验收。

Tauri 原生窗口

启动:

vpr @01mvp/desktop#tauri:dev

检查:

  • 原生窗口能打开
  • 托盘菜单能显示 Open 和 Quit
  • app data 目录能打开
  • 本地偏好保存到 app data 后,重启仍存在
  • 外部 URL 能通过系统默认浏览器打开
  • 未配置 updater 时,检查更新不会导致应用崩溃

涉及 Tauri command、plugin、文件系统、托盘、系统权限和签名时,必须在这个模式验收。

构建烟测

运行:

vpr @01mvp/desktop#tauri:build

构建成功后,打开生成的安装包或 .app,检查:

  • 应用名、图标、版本号正确
  • 首页能打开
  • API URL 指向预期环境
  • 登录和 profile API 可用
  • app data 目录使用正式 identifier

发行包验收

准备发给真实测试用户前,再检查这一组:

项目怎么验
macOS 签名codesign 检查签名身份,确认不是 ad-hoc
macOS 公证在干净机器安装打开,不需要用户手动绕过 Gatekeeper
Windows 签名检查安装包签名和发布者名称
自动更新用旧版本安装包验证“检查更新 -> 下载 -> 安装”
生产配置安装包里的 API / Web URL 指向 production
本地数据覆盖安装后偏好、缓存、账号状态符合预期
反馈入口用户遇到问题时能找到联系方式

如果 updater 还没启用,检查更新按钮应该显示清楚的不可用或已关闭状态,不能抛错或停在 loading。

文档链接检查

新增、删除或改名 desktop 文档时跑:

vpr @01mvp/web#docs:check-links

它会检查 sidebar、Card 和 MDX 内部链接。

发布前人工清单

  • 干净机器能安装和打开
  • 旧版本覆盖安装后用户偏好还在
  • 没有把本地 localhost API 打进生产包
  • macOS 签名和公证状态符合预期
  • Windows 安装包不会被安全软件直接拦下
  • 自动更新 endpoint 返回正确版本
  • updater 签名产物和 endpoint 返回的签名匹配
  • 下载页、文档和安装包版本一致
  • 退出、重启、托盘行为符合产品预期
  • 反馈、联系作者、版本号、检查更新这些设置入口可用

常见遗漏

遗漏后果
只跑浏览器预览Tauri command、tray、文件写入可能在真实窗口才失败
只改前端 env后端 CORS 或 trusted origins 仍然拒绝登录
随意改 identifier用户本地数据和 macOS 权限记录像换了一个应用
没跑 docs link checksidebar 或 Card 链接会断
没验证安装包build 通过,但用户下载后打不开

这篇文档有问题?