STARDUSTLC666/dsh-flakefinder
DSH 测试稳定性插件:重复运行测试识别 flaky 用例,历史与隔离清单,零运行时依赖。
Bundle 已验证
未知
TypeScript
未知
Bundle 已验证
已收录
1
Dev
Bundle 已验证
★ 1
在 GitHub 查看
功能介绍
测试稳定性工具:重复运行 vitest/jest/pytest/node:test,识别 flaky 用例,历史留档与隔离清单。
适合
- 需要通过重复运行调查间歇性通过与失败测试的团队。
- 需要区分稳定通过、稳定失败与 flaky 的 Vitest、Jest、pytest 或 node:test 项目。
- 希望保留检测历史与可审查隔离清单、且不修改测试源码的仓库。
不适合
- 使用 Vitest、Jest、pytest、node:test 之外测试框架的项目。
- 只需快速运行一次测试的验证场景;重复检测默认运行五次,且至少需要三次,价值有限。
- 期望隔离操作自动跳过或改写测试的工作流;清单只记录被隔离的用例。
- 低于文档所述 Node.js 22.13 要求的环境。
README
dsh-flakefinder
让 agent 分清「代码坏了」还是「测试在抽风」。
DeepSeek Harness 测试稳定性插件:支持 vitest / jest / pytest / node:test,重复运行测试并识别 flaky 用例,历史留档、隔离清单、写操作审批门。零运行时依赖。
工具
| 工具 | 作用 | 写操作 |
|---|---|---|
flaky_detect |
重复运行测试 N 次,判定 stable-pass / stable-fail / flaky | 否(写历史) |
flaky_history |
查询检测历史,按目标过滤 | 否 |
flaky_report |
汇总隔离清单 + 历史,输出稳定性报告 | 否 |
flaky_quarantine |
把 flaky 用例写入 .flakefinder.json 隔离清单 |
是(审批门) |
flaky_clear |
从隔离清单移除已恢复的用例 | 是(审批门) |
支持框架:
- vitest:读取
node_modules/vitest/vitest.mjs,使用 JSON reporter - jest:读取
node_modules/jest/bin/jest.js,使用--json --outputFile - pytest:
python -m pytest --junitxml,解析 JUnit XML(支持 setup.cfg / pyproject / pytest.ini / tox.ini 探测与 XML 实体解码) - node:test:
node --test --test-reporter=tap,解析 TAP(含 SKIP 指令归类) -
framework: auto按 vitest → jest → pytest → node:test 自动探测
安装
dsh plugin --profile web add dsh-flakefinder
或手动安装后在 profile 的 cordis.patch.yml 插入:
- id: flakefinder
name: 'dsh-flakefinder'
config:
defaultRuns: 5
writeApproval: true
使用示例
用户:src/checkout.test.ts 最近老失败,帮我判断一下
Agent:
flaky_detect(target="src/checkout.test.ts", runs=5)
→ 判定:flaky;3/5 通过,失败集中在 useFakeTimers 用例
→ flaky_quarantine(tests=["src/checkout.test.ts > 定时器恢复"], reason="定时器竞态")
配置
| 字段 | 默认 | 说明 |
|---|---|---|
defaultRuns |
5 |
flaky_detect 默认重复次数(3-20) |
maxRuns |
20 |
单次允许的最大重复次数(3-50) |
timeoutMs |
120000 |
单轮测试运行超时 |
graceMs |
10000 |
超时后宽限 |
writeApproval |
true |
隔离清单写操作是否走审批门 |
dataDir |
DSH_HOME/.dsh-flakefinder |
历史存储目录 |
quarantineFile |
<cwd>/.flakefinder.json |
隔离清单路径 |
pythonPath |
DSH_FLAKEFINDER_PYTHON 或 python/python3
|
pytest 使用的 Python 解释器 |
隔离清单格式
{
"version": 1,
"quarantined": [
{
"file": "src/checkout.test.ts",
"name": "使用假定时器后恢复真实定时器",
"reason": "定时器竞态,见 issue #12",
"since": "2026-08-16T00:00:00.000Z"
}
]
}
隔离清单只记录,不修改测试源码;agent 跑测试前应先查阅 flaky_report。
工程
- Node >= 22.13,TypeScript,零运行时依赖
- 测试进程走 DSH 官方 subprocess 服务,argv 数组、无 shell
- 全量单测 40+:解析、判定、存储、审批门、pytest 计划、subprocess 超时、注册与 manifest
-
pnpm test:构建 +node --test
发布门禁
-
pnpm test全绿 pnpm typecheck- 危险模式扫描(eval / child_process / 密钥零容忍)
- 真实 profile 冒烟:全新临时 profile 安装插件 → 真 boot → stderr 零报错
- manifest 自检(bundle patch / exports / files 白名单)
License
MIT
常见问题常见问题
在启用了 DSH 的终端中执行已验证命令 dsh plugin --profile default add github:STARDUSTLC666/dsh-flakefinder。命令会解析公开 package 元数据,并保持插件与本页展示的目录身份一致。
兼容性以页面上展示的 bundle 与 profile 状态为准。如果某个 profile 尚未检测到,请先保持禁用,并在生产启用前阅读仓库文档。
GitHub 链接和 activity 元数据是 release 与维护状态的来源。新版本发布后重新查看本页,确认目录已经观察到最新版本。