🚀 快速安装

复制以下命令并运行,立即安装此 Skill:

npx @anthropic-ai/skills install currents-dev/playwright-best-practices-skill/playwright-best-practices

💡 提示:需要 Node.js 和 NPM

Playwright 最佳实践

本技能为 Playwright 测试开发的各个方面提供全面指导,从编写新测试到调试和维护现有测试套件。

基于活动的参考指南

根据您正在执行的操作查阅这些参考资料:

编写新测试

何时使用:创建新的测试文件、编写测试用例、实现测试场景

活动 参考文件
编写端到端测试 test-organization.md, locators.md, assertions-waiting.md
编写组件测试 component-testing.md, test-organization.md
编写 API 测试 test-organization.md, assertions-waiting.md
编写视觉回归测试 test-organization.md, canvas-webgl.md
使用页面对象模型(POM)结构化测试代码 page-object-model.md, test-organization.md
设置测试数据/固件 fixtures-hooks.md, test-data.md
处理身份验证 fixtures-hooks.md, third-party.md
测试日期/时间特性 clock-mocking.md
测试文件上传/下载 file-operations.md
测试可访问性 accessibility.md
测试安全性(XSS, CSRF) security-testing.md
使用测试注解 annotations.md
测试 iFrame iframes.md
测试 Canvas/WebGL canvas-webgl.md
国际化 i18n.md
测试 Electron 应用 electron.md
测试浏览器扩展 browser-extensions.md

移动与响应式测试

何时使用:测试移动设备、触摸交互、响应式布局

活动 参考文件
设备模拟 mobile-testing.md
触摸手势(滑动、点击) mobile-testing.md
视口/断点测试 mobile-testing.md
移动特定 UI mobile-testing.md, locators.md

实时与浏览器 API

何时使用:测试 WebSocket、地理位置、权限、多标签页流程

活动 参考文件
WebSocket/实时测试 websockets.md
地理位置模拟 browser-apis.md
权限处理 browser-apis.md
剪贴板测试 browser-apis.md
摄像头/麦克风模拟 browser-apis.md
多标签页/弹窗流程 multi-context.md
OAuth 弹窗处理 third-party.md, multi-context.md

调试与故障排除

何时使用:测试失败、元素未找到、超时、意外行为

活动 参考文件
调试测试失败 debugging.md, assertions-waiting.md
修复不稳定测试 flaky-tests.md, debugging.md, assertions-waiting.md
调试不稳定的并行运行 flaky-tests.md, performance.md, fixtures-hooks.md
确保测试隔离 / 避免状态泄漏 flaky-tests.md, fixtures-hooks.md, performance.md
修复选择器问题 locators.md, debugging.md
调查超时问题 assertions-waiting.md, debugging.md
使用 Trace Viewer debugging.md
调试竞态条件 flaky-tests.md, debugging.md, assertions-waiting.md
调试控制台/JS 错误 console-errors.md, debugging.md

错误与边缘情况测试

何时使用:测试错误状态、离线模式、网络故障、验证

活动 参考文件
错误边界测试 error-testing.md
网络故障模拟 error-testing.md, network-advanced.md
离线模式测试 error-testing.md, service-workers.md
Service Worker 测试 service-workers.md
加载状态测试 error-testing.md
表单验证测试 error-testing.md

多用户与协作测试

何时使用:测试涉及多用户、角色或实时协作的功能

活动 参考文件
单个测试中的多用户 multi-user.md
实时协作 multi-user.md, websockets.md
基于角色的访问测试 multi-user.md
并发操作测试 multi-user.md

重构与维护

何时使用:改进现有测试、代码审查、减少重复

活动 参考文件
重构为页面对象模型 page-object-model.md, test-organization.md
改进测试组织 test-organization.md, page-object-model.md
提取通用设置/清理 fixtures-hooks.md
替换脆弱的选择器 locators.md
移除显式等待 assertions-waiting.md
创建测试数据工厂 test-data.md

基础设施与配置

何时使用:设置项目、配置 CI/CD、优化性能

活动 参考文件
配置 Playwright 项目 test-organization.md, projects-dependencies.md
设置 CI/CD 流水线 ci-cd.md, performance.md
全局设置与清理 global-setup.md
项目依赖 projects-dependencies.md
优化测试性能 performance.md, test-organization.md
配置并行执行 performance.md
在工作进程之间隔离测试数据 fixtures-hooks.md, performance.md
测试覆盖率 test-coverage.md

高级模式

何时使用:复杂场景、API 模拟、网络拦截

活动 参考文件
模拟 API 响应 test-organization.md, network-advanced.md
网络拦截 network-advanced.md, assertions-waiting.md
GraphQL 模拟 network-advanced.md
HAR 录制/回放 network-advanced.md
自定义固件 fixtures-hooks.md
高级等待策略 assertions-waiting.md
OAuth/SSO 模拟 third-party.md, multi-context.md
支付网关模拟 third-party.md
电子邮件/SMS 验证模拟 third-party.md
在控制台错误时失败 console-errors.md
安全测试(XSS, CSRF) security-testing.md
性能预算与 Web Vitals performance-testing.md
Lighthouse 集成 performance-testing.md
测试注解(跳过、待修复) annotations.md
用于报告的测试步骤 annotations.md

快速决策树

你在做什么?
├─ 编写新测试?
│  ├─ 端到端测试 → test-organization.md, locators.md, assertions-waiting.md
│  ├─ 组件测试 → component-testing.md
│  ├─ API 测试 → test-organization.md, assertions-waiting.md
│  ├─ 视觉/Canvas 测试 → canvas-webgl.md, test-organization.md
│  ├─ 可访问性测试 → accessibility.md
│  ├─ 移动/响应式测试 → mobile-testing.md
│  ├─ i18n/本地化测试 → i18n.md
│  ├─ Electron 应用测试 → electron.md
│  ├─ 浏览器扩展测试 → browser-extensions.md
│  └─ 多用户测试 → multi-user.md
├─ 测试特定功能?
│  ├─ 文件上传/下载 → file-operations.md
│  ├─ 日期/时间依赖 → clock-mocking.md
│  ├─ WebSocket/实时 → websockets.md
│  ├─ 地理位置/权限 → browser-apis.md
│  ├─ OAuth/SSO 模拟 → third-party.md, multi-context.md
│  ├─ 支付/邮件/SMS → third-party.md
│  ├─ iFrame → iframes.md
│  ├─ Canvas/WebGL/图表 → canvas-webgl.md
│  ├─ Service Workers/PWA → service-workers.md
│  ├─ i18n/本地化 → i18n.md
│  ├─ 安全 (XSS, CSRF) → security-testing.md
│  └─ 性能/Web Vitals → performance-testing.md
├─ 测试失败/不稳定?
│  ├─ 不稳定测试调查 → flaky-tests.md
│  ├─ 元素未找到 → locators.md, debugging.md
│  ├─ 超时问题 → assertions-waiting.md, debugging.md
│  ├─ 竞态条件 → flaky-tests.md, debugging.md
│  ├─ 仅当有多个工作进程时不稳 → flaky-tests.md, performance.md
│  ├─ 状态泄漏 / 隔离问题 → flaky-tests.md, fixtures-hooks.md
│  ├─ 控制台/JS 错误 → console-errors.md, debugging.md
│  └─ 一般调试 → debugging.md
├─ 测试错误场景?
│  ├─ 网络故障 → error-testing.md, network-advanced.md
│  ├─ 离线(意外情况) → error-testing.md
│  ├─ 离线优先/PWA → service-workers.md
│  ├─ 错误边界 → error-testing.md
│  └─ 表单验证 → error-testing.md
├─ 重构现有代码?
│  ├─ 实施页面对象模型 → page-object-model.md
│  ├─ 改进选择器 → locators.md
│  ├─ 提取固件 → fixtures-hooks.md
│  └─ 创建数据工厂 → test-data.md
├─ 设置基础设施?
│  ├─ CI/CD → ci-cd.md
│  ├─ 全局设置/清理 → global-setup.md
│  ├─ 项目依赖 → projects-dependencies.md
│  ├─ 测试性能 → performance.md
│  ├─ 测试覆盖率 → test-coverage.md
│  └─ 项目配置 → test-organization.md, projects-dependencies.md
└─ 组织测试?
   ├─ 跳过/待修复/慢速测试 → annotations.md
   ├─ 测试步骤 → annotations.md
   └─ 条件执行 → annotations.md

测试验证循环

编写或修改测试后:

  1. 运行测试npx playwright test --reporter=list
  2. 如果测试失败
    • 查看错误输出和跟踪(npx playwright show-trace
    • 修复选择器、等待或断言
    • 重新运行测试
  3. 只有当所有测试通过时才继续
  4. 对关键测试多次运行npx playwright test --repeat-each=5

📄 原始文档

完整文档(英文):

https://skills.sh/currents-dev/playwright-best-practices-skill/playwright-best-practices

💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。