SuperAPI AI 工具集

testing-best-practices

测试与质量

查看项目

更新于 10-15 16:49

技能介绍

用途:为项目测试选型与编写提供规范。核心思路是问“用户会如何验证它可用”,再选最高适用的测试层级:Playwright(默认)用于 UI 交互、视觉反馈、表单校验、多步流程、受保护路由与无障碍;集成测试用于 API 响应(状态码、JSON 结构)、操作后的数据库状态、无 UI 的服务端逻辑,或 Playwright 过慢过复杂时;单元测试用于含复杂逻辑的纯函数、大量边界情况,或无外部依赖的类型收窄与断言。

运行方式:所有测试都针对隔离的、仅含架构的 Neon 分支执行,该分支 1 小时后自动删除。可用命令:bun run test(全部)、bun run test:playwright(仅浏览器)、bun run test:integration(仅集成)、bun run test:unit(仅单元)。前置条件需先完成 Playwright 浏览器测试、集成测试、Bun 单元测试的 setup recipes。

目录结构:单元测试与源码同置(src/lib/<domain>/<file>.test.ts);Playwright 与集成测试放在 tests/ 下(tests/integration/<feature>.test.ts、tests/playwright/<feature>.spec.ts,助手放 tests/playwright/lib/)。

编写要点:Playwright 用 @playwright/test 的 test 与 expect;集成测试直接导入路由处理器而非走 HTTP,例如导入 @/app/api/feature/route 的 GET;单元测试用 bun:test 与同置文件。

数据隔离:测试并行跑在共享分支上,每个套件须自持数据,为每个 spec 生成唯一用户(如 auth-test-${uuid}@example.com),避免共享资源,依赖分支 TTL 清理,绝不假设其他测试的数据存在。

调试:bunx playwright test --headed 观察浏览器,--debug 逐步执行,bunx playwright show-report 查看 HTML 报告;bun test --only "test name" 单跑,--watch 变更重跑。Playwright 失败会保存截图与 trace 到 test-results/,CI 失败时查看此处。文中还给出受保护路由重定向与错误状态的常见模式示例。