用途:为项目提供统一的测试策略与工作流。测试并行执行,每个套件使用相互隔离的数据,并运行在隔离的 Neon 数据库分支上,分支 1 小时后自动删除,因此无需手动清理,也不会干扰生产数据。
选择测试类型的优先级:Playwright(浏览器)优先用于大多数功能;当 Playwright 不实用时改用集成测试(API);单元测试仅用于复杂的孤立逻辑。用户交互、视觉反馈、表单提交与校验、多步 UI 流程、受保护路由与重定向、无障碍行为适合 Playwright。直接验证 API 响应(状态码、JSON 结构)、操作后的数据库状态、无 UI 的服务端逻辑适合集成测试。纯函数复杂逻辑、大量边界情况、类型收窄与错误信息、无外部依赖的函数适合单元测试。
运行命令:bun run test 运行全部测试(隔离 Neon 分支);bun run test:playwright 仅浏览器测试;bun run test:integration 仅集成测试;bun run test:unit 仅单元测试。
目录约定:单元测试与被测文件同目录并命名为 *.test.ts;集成测试放在 tests/integration/;Playwright 测试放在 tests/playwright/ 并命名为 *.spec.ts,辅助文件可放 tests/playwright/lib/。集成测试建议直接导入路由处理器以获得更快更可靠的测试。
并行隔离:每个 spec 文件创建独立测试用户(如带 uuid 的唯一邮箱),各自使用独立资源,不依赖共享状态或全局状态,也不依赖其他测试留下的数据库内容。
调试:Playwright 可用 bunx playwright test --headed 观察浏览器、--debug 单步调试、bunx playwright show-report 查看 HTML 报告;集成/单元测试可用 bun test --only "test name" 运行单个测试、--watch 在改动后重跑;失败的 Playwright 测试会把截图与 trace 保存到 test-results/。具体价格、平台限制等资料未提供。