documented and measurable now测试金字塔不是“测试多不多”的漂亮话。
它更像盖楼时的检测顺序:
如果顺序反过来,项目就会很痛。
位置示例:
tests/unit/**它们负责:
位置示例:
tests/integration/**它们负责:
位置示例:
tests/e2e/**它们负责:
命令:
pnpm run test:docs-frontdoor它们负责:
llms.txt 的 truth surface 不被悄悄改坏planned 和 supported 的说法继续对齐命令:
pnpm run verify:gemini-livepnpm run verify-web-login-livepnpm run verify:service-livepnpm run reality:gate这层不是普通自动测试,而是更接近真人验收。
这里要再加一条边界,不然很容易把它们误读成“云端 CI 也该跑”:
Cloud-safe
pnpm typecheckpnpm testpnpm buildLocal credentialed only
pnpm run verify:gemini-livepnpm run verify-web-login-livepnpm run verify:service-livepnpm run reality:gatepnpm run diagnose:web-login-browserpnpm run capture:web-debug-bundleOptional local isolated fallback
更直白一点说:
GitHub Hosted Runner 负责验“仓里的代码和合同有没有坏”。 真实登录态 / 真实 Chrome Profile / 已登录浏览器会话,只能在 credentialed workstation 上验。
这里的“真实 Chrome Profile”现在要具体理解成:
isolated-chrome-root~/.cache/switchyard/browser/chrome-user-data9338typecheck
test
build
verify:*
当前仓继续只用 GitHub Hosted Runner。
self-hosted如果在 CI 环境中误触发 live gate,当前脚本应该 fail-closed,直接说明:
credentialed-workstation only而不是假装还能在云端复现本地 credentialed 路径。
如果把这仓的验证链理解成 5 道安检门,当前 SSOT 是:
| Layer | Current role | Current default surface |
|---|---|---|
pre-commit |
最早拦截 secrets 与 focused hygiene drift | pnpm run hook:pre-commit |
pre-push |
本地提交前总闸 | pnpm run hook:pre-push |
hosted |
GitHub Actions on push/pull_request |
ci.yml / security.yml / workflow-hygiene.yml |
nightly |
hosted-safe scheduled recheck | scheduled workflow + nightly-timed dependency automation |
manual |
credentialed workstation realism | verify:* / reality:gate / browser diagnosis / runtime hygiene |
说得更直白一点:
前四层是“仓里的合同和代码有没有坏”。 第五层才是“真人浏览器、真人登录态、真人账号动作有没有真的过关”。
这仓当前更重视的是:
而不是只追一个好看的 coverage 数字。
现在仓里已经有一个 committed coverage 入口:
pnpm run test:coverage它会产出:
text-summarycoverage/coverage-summary.json如果你还需要本地 HTML 报告,走单独的辅助入口:
pnpm run test:coverage:htmlcoverage/index.html更直白一点说:
以后接手的人不需要再临时拼一长串
vitest --coverage参数,
直接跑这一条命令,就能拿到可复验的 coverage 报告。
更直白一点说:
一张 95% 的 coverage 报表,如果 live gate 全是假绿,意义不大。
一张稍低一点但结构 honest 的测试网,反而更值钱。
所以这仓对 coverage 的态度是: