用途:在修改代码后,针对当前分支改动的文件运行相关的 e2e 与单元测试,验证没有引入破坏。
测试配置:单元测试用 Jest,配置在 jest.config.js,路径别名通过 moduleNameMapper 设置。E2E 用 Playwright,配置在 playwright.config.ts,仅用 Chromium,每个测试 20 秒超时,2 次重试,2 个 worker。E2E 会由 Playwright 自动启动 pnpm dev;非 CI 下 reuseExistingServer: true,若存在其它分支的旧服务会导致误报失败。
主要步骤:先杀掉端口 3000 上的旧 dev 服务(lsof -ti:3000 | xargs kill -9 2>/dev/null; true)。再用 git diff --name-only main...HEAD、git diff --name-only(未暂存)、git diff --name-only --cached(已暂存)找出变更文件。然后按给定映射规则把源码变更关联到测试文件,例如 src/app/(sidebar)/transaction/build/** 对应 tests/e2e/buildTransaction.test.ts、savedTransactions.test.ts、urlParams.test.ts;sign/** 对应 signTransactionPage.test.ts;submit/** 对应 submitTransactionPage.test.ts;simulate/** 对应 simulateTransactionPage.test.ts;fee-bump/** 对应 feeBumpTransactionPage.test.ts;account/fund/** 或 account/create/** 对应 fundAccountPage.test.ts、createAccountPage.test.ts;xdr/** 对应 viewXdrToJsonPage.test.ts、jsonToXdrPage.test.ts;endpoints/** 对应 endpointsPage*.test.ts;smart-contracts/** 对应 contractExplorer*.test.ts。共享代码 src/components/、src/helpers/、src/hooks/、src/store/、src/constants/、src/types/、src/validate/、src/styles/、src/middleware.ts 需运行全部 e2e。tests/e2e/mock/** 运行所有引用 mock/ 的 e2e。直接改动的 tests/e2e/*.test.ts 直接运行;tests/unit/** 改动则运行单元测试。若 src/helpers/ 或 src/validate/ 变更,还需检查 tests/unit/ 中匹配的单元测试。若 XDR 编码或交易构建逻辑变更(如 ClassicTransactionXdr.tsx、SorobanTransactionXdr.tsx、src/helpers/xdr/),测试中的硬编码 hash/XDR 可能需要更新,运行前需先告知用户。
运行识别出的测试:E2E 用 npx playwright test <file1> <file2> ... --retries=0 --reporter=list;单元测试用 pnpm test:unit <file>。若未识别出具体测试,则运行完整套件:pnpm test:e2e 和 pnpm test:unit。
报告:展示通过/失败数量,列出失败项及错误信息;对失败项阅读相关测试与源码后建议修复。限制:资料未提供该技能的收费、平台支持范围或实际效果信息。