用途:这是 Kortix/Suna 单体仓库的强制测试纪律,适用于 apps/** 或 packages/** 下任何代码的编写、修改、重构或删除。核心规则是“无测试不提交”:任何影响行为的改动都必须在同一次变更中附带测试,否则 PR 视为不完整、无法通过评审。
主要能力与分工:新增导出(函数/类/hook/组件/schema)需在同目录添加 *.test.ts;行为变更需更新测试并补充用例;修 bug 先写复现失败的测试再修复;新增或修改 HTTP 路由需在 tests/src/flows/ 添加/更新 ke2e 流程并同步 meta.routes;删除代码需同步删除其测试。测试类型按改动对象选择:纯函数用 bun:test 单元测试;React 组件/hook 用单元测试;DB schema 用 schema 形状单元测试;服务边界用 Vitest + Testcontainers 集成测试;HTTP 路由用 ke2e;API 契约用 Pact;关键用户旅程用 Playwright e2e;UI 可访问性用 axe-core;营销页面用视觉快照;热路径性能用 k6;安全面用 Semgrep 或渗透探针。
使用方式:运行 pnpm test 执行全部同目录 bun:test 套件,pnpm --filter <name> test 只跑改动包,make fast 为推送前循环(lint + typecheck + 单元 + 冒烟),make <lane> 运行指定测试通道,make gates 评估质量门禁。合并门禁由 package-tests.yml 与 qa-pr.yml 执行,含 80% 产品代码覆盖率与 ke2e 路由覆盖要求。
限制与约定:测试须确定性、隔离、无真实时钟/网络/时区依赖;禁止提交 .only,.skip 需有跟踪原因;测试文件不写注释;测试须通过类型检查;不得使用生产数据或真实凭据。纯格式、注释文档、无行为重命名与生成文件可豁免。具体配置细节以仓库内 TESTING.md、docs/TEST_ARCHITECTURE.md、docs/CI_CD.md、CONTRIBUTING.md 为准。