🚀 快速安装
复制以下命令并运行,立即安装此 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
测试验证循环
编写或修改测试后:
- 运行测试:
npx playwright test --reporter=list - 如果测试失败:
- 查看错误输出和跟踪(
npx playwright show-trace) - 修复选择器、等待或断言
- 重新运行测试
- 查看错误输出和跟踪(
- 只有当所有测试通过时才继续
- 对关键测试多次运行:
npx playwright test --repeat-each=5
📄 原始文档
完整文档(英文):
https://skills.sh/currents-dev/playwright-best-practices-skill/playwright-best-practices
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)