mcpField
R
review

review

github.com/alirezarezvani测试与质量28.9k1.7k 次安装3 天前更新
代码仓库

关于 review

用于依据 20 项反模式和最佳实践审查 Playwright 测试文件的技能,为测试编写者提供逐文件评分、可执行发现及覆盖缺口。

主要功能

  1. 01审查单个文件、目录或整个测试套件
  2. 02检查 20 项 Playwright 反模式
  3. 03为文件评分并报告具体问题
  4. 04识别错误、边界情况及 UI 覆盖缺口
  5. 05为关键问题提供修复建议

适用场景

  1. 01合并前审计 Playwright 测试文件
  2. 02检查目录中反复出现的测试问题
  3. 03找出尚未测试的页面或功能

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alirezarezvani/claude-skills --skill review

安装后在 Claude Code 中输入/review确认已加载。

附带文件anti-patterns.md

详细介绍

审查 Playwright 测试

系统地审查 Playwright 测试文件,找出反模式、遗漏的最佳实践和覆盖缺口。

输入

$ARGUMENTS 可以是:

  • 文件路径:审查指定的测试文件
  • 目录:审查目录中的所有测试文件
  • 留空:审查项目 testDir 中的所有测试

步骤

1. 收集上下文
  • 读取 playwright.config.ts 了解项目设置
  • 列出范围内所有 *.spec.ts / *.spec.js 文件
  • 如果审查单个文件,也检查相关页面对象和夹具
2. 根据反模式检查每个文件

从此技能目录加载 anti-patterns.md。检查全部 20 种反模式。

严重问题(必须修复):

  1. 使用 waitForTimeout()
  2. 非 Web 优先断言(expect(await ...))
  3. 使用硬编码 URL,而不是 baseURL
  4. 存在基于角色的选择器时,仍使用 CSS/XPath 选择器
  5. Playwright 调用缺少 await
  6. 测试之间共享可变状态
  7. 测试执行顺序存在依赖

警告(应该修复): 8. 测试超过 50 行(考虑拆分) 9. 魔法字符串没有命名常量 10. 缺少错误/边界情况测试 11. 使用 page.evaluate() 实现定位器可以完成的操作 12. 嵌套的 test.describe() 超过 2 层 13. 测试名称过于笼统(如“应该能正常运行”“测试 1”)

提示(建议考虑): 14. 定位器达到 5 个或更多的页面没有页面对象 15. 内联测试数据,而不是使用工厂/夹具 16. 缺少无障碍断言 17. UI 密集型页面没有视觉回归测试 18. 未检查控制台错误断言 19. 等待网络空闲,而不是使用具体断言 20. 缺少 test.describe() 分组

3. 为每个文件评分

根据以下标准评分,范围为 1 到 10:

  • 9-10:可用于生产,遵循所有黄金规则
  • 7-8:良好,仍有少量改进空间
  • 5-6:功能正常,但存在反模式
  • 3-4:问题明显,很可能不稳定
  • 1-2:需要重写
4. 生成审查报告

对于每个文件:

## <filename> — Score: X/10

### Critical
- Line 15: `waitForTimeout(2000)` → use `expect(locator).toBeVisible()`
- Line 28: CSS selector `.btn-submit` → `getByRole('button', { name: "submit" })`

### Warning
- Line 42: Test name "test login" → "should redirect to dashboard after login"

### Suggestions
- Consider adding error case: what happens with invalid credentials?
5. 项目范围审查

如果审查整个测试套件:

  • 按文件启动子 Agent 并行审查(最多同时运行 5 个)
  • 或者对非常大的测试套件使用 /batch
  • 将结果汇总到摘要表格中
6. 提供修复方案

对于每个严重问题,提供修正后的代码。询问用户:“应用这些修复吗?[是/否]”

如果用户回答是,使用 Edit 工具应用所有修复。

输出

  • 逐文件审查及评分
  • 摘要:文件总数、平均分、严重问题数量
  • 可执行的修复清单
  • 已识别的覆盖缺口(没有测试的页面/功能)

评论

支持 Markdown