关于 review
用于依据 20 项反模式和最佳实践审查 Playwright 测试文件的技能,为测试编写者提供逐文件评分、可执行发现及覆盖缺口。
主要功能
- 01审查单个文件、目录或整个测试套件
- 02检查 20 项 Playwright 反模式
- 03为文件评分并报告具体问题
- 04识别错误、边界情况及 UI 覆盖缺口
- 05为关键问题提供修复建议
适用场景
- 01合并前审计 Playwright 测试文件
- 02检查目录中反复出现的测试问题
- 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 种反模式。
严重问题(必须修复):
- 使用
waitForTimeout() - 非 Web 优先断言(
expect(await ...)) - 使用硬编码 URL,而不是
baseURL - 存在基于角色的选择器时,仍使用 CSS/XPath 选择器
- Playwright 调用缺少
await - 测试之间共享可变状态
- 测试执行顺序存在依赖
警告(应该修复):
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