用途
playwright-expert 是一个面向 Playwright 的 E2E 测试专家技能,用于编写稳健、可维护的浏览器自动化测试。其核心工作流包括:分析需求并识别需要测试的用户流程;配置 Playwright 设置;使用 Page Object Model(POM)模式、合适的定位器与自动等待来编写测试;通过运行测试、查看 trace、定位问题、修复并验证的流程进行调试;最后将测试接入 CI/CD 流水线。
主要能力
技能按上下文加载详细参考资料,覆盖以下主题:
- 选择器与定位器(
references/selectors-locators.md):在编写选择器、确定定位器优先级时加载。 - 页面对象(
references/page-object-model.md):涉及 POM 模式与夹具(fixtures)时加载。 - API 模拟(
references/api-mocking.md):涉及路由拦截与 mock 时加载。 - 配置(
references/configuration.md):涉及playwright.config.ts设置时加载。 - 调试(
references/debugging-flaky.md):处理不稳定(flaky)测试与 trace viewer 时加载。
使用方式
技能规定了必须做与禁止做的约束。
必须做:
- 尽可能使用基于角色的选择器(role-based selectors)
- 利用自动等待,不要添加任意超时
- 保持测试相互独立(不共享状态)
- 使用 Page Object Model 提升可维护性
- 启用 traces/截图以便调试
- 并行运行测试
禁止做:
- 使用
waitForTimeout()(应使用正确的等待) - 依赖 CSS 类选择器(脆弱)
- 在测试之间共享状态
- 忽略 flaky 测试
- 无正当理由使用
first()、nth()
技能提供了代码级示例说明这些实践。选择器方面,推荐 page.getByRole('button', { name: 'Submit' }).click() 与 page.getByLabel('Email address').fill('user@example.com'),而非基于 CSS 类的 .btn-primary.submit-btn 或 .email-input。POM 示例展示了 LoginPage 类如何封装 page、定位器与 goto()、login() 方法,并在测试文件中通过 test.beforeEach 初始化、使用 expect(page).toHaveURL('/dashboard') 等断言。调试工作流示例展示在配置中设置 trace: 'on-first-retry' 与 screenshot: 'only-on-failure',通过 npx playwright test --retries=2 捕获 trace,使用 npx playwright show-trace 查看时间线,并将 waitForTimeout(2000) 替换为等待元素状态 waitFor({ state: 'visible' }),最后用 npx playwright test --repeat-each=10 验证稳定性。
输出模板要求实现 Playwright 测试时提供:Page Object 类、带有正确断言的测试文件、必要时提供夹具设置、以及配置建议。
适用场景
适用于需要为 Web 应用编写和维护 E2E 测试的团队与个人,尤其涉及多用户流程验证、需要降低测试脆弱性、处理 flaky 测试、将测试集成到 CI/CD、进行 API 模拟或视觉对比等场景。
限制
本技能所引用的上游文档来自特定作者与版本:源文档为 jeffallan/claude-skills/skills/playwright-expert/SKILL.md,修订版本 3bf9a24b76a7c122f1fc05e83929fbc84e1c207a,作者 Jeffallan,许可 MIT。除上述已提供内容外,关于收费、价格、平台支持范围、具体效果等事实暂未提供。
引用文档
以下为作者声明的引用来源,保留指定版本、署名和许可。
- jeffallan/claude-skills/skills/playwright-expert/SKILL.md — 署名:Jeffallan;许可:MIT;版本:
3bf9a24b76a7c122f1fc05e83929fbc84e1c207a。