mcpField
P
playwright-best-practices

playwright-best-practices

github.com/currents-dev测试与质量41299.4k 次安装14 周前更新
代码仓库

关于 playwright-best-practices

为编写、调试和维护 Playwright 测试的开发者提供参考指南。按活动整理的内容涵盖测试类型、浏览器场景、架构和项目配置。

主要功能

  1. 01E2E、组件和 API 测试指南
  2. 02移动端与浏览器 API 参考
  3. 03调试及不稳定测试建议
  4. 04测试架构与维护指导
  5. 05CI、配置和性能参考

适用场景

  1. 01规划新的 Playwright 测试套件
  2. 02排查不稳定测试和超时
  3. 03选择测试架构模式
  4. 04配置 CI 和并行执行

安装

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

$npx skills add https://github.com/currents-dev/playwright-best-practices-skill --skill playwright-best-practices

安装后在 Claude Code 中输入/playwright-best-practices确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

advanced/
authentication-flows.md
authentication.md
clock-mocking.md
mobile-testing.md
multi-context.md
multi-user.md
network-advanced.md
third-party.md
architecture/
pom-vs-fixtures.md
test-architecture.md
when-to-mock.md
browser-apis/
browser-apis.md
iframes.md
service-workers.md
websockets.md
core/
annotations.md
assertions-waiting.md
configuration.md
fixtures-hooks.md
global-setup.md
locators.md
page-object-model.md
projects-dependencies.md
test-data.md
test-suite-structure.md
test-tags.md
debugging/
console-errors.md
debugging.md
error-testing.md
flaky-tests.md

详细介绍

Playwright 最佳实践

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

按活动分类的参考指南

根据当前任务查阅以下参考内容:

编写新测试

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

活动参考文件
编写端到端测试test-suite-structure.md, locators.md, assertions-waiting.md
编写组件测试component-testing.md, test-suite-structure.md
编写 API 测试api-testing.md, test-suite-structure.md
编写 GraphQL 测试graphql-testing.md, api-testing.md
编写视觉回归测试visual-regression.md, canvas-webgl.md
使用 POM 组织测试代码page-object-model.md, test-suite-structure.md
设置测试数据/夹具fixtures-hooks.md, test-data.md
处理身份验证authentication.md, authentication-flows.md
测试日期/时间功能clock-mocking.md
测试文件上传/下载file-operations.md, file-upload-download.md
测试表单/验证forms-validation.md
测试拖放操作drag-drop.md
测试无障碍功能accessibility.md
测试安全性(XSS、CSRF)security-testing.md
使用测试注解annotations.md
使用测试标签test-tags.md
测试 iframeiframes.md
测试 canvas/WebGLcanvas-webgl.md
国际化(i18n)i18n.md
测试 Electron 应用electron.md
测试浏览器扩展browser-extensions.md
移动端与响应式测试

使用场景:测试移动设备、触控交互和响应式布局

活动参考文件
设备模拟mobile-testing.md
触控手势(滑动、轻触)mobile-testing.md
视口/断点测试mobile-testing.md
移动端专属 UImobile-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
使用跟踪查看器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
架构决策

适用场景:选择测试模式、决定采用哪种方案或规划测试架构

活动参考文件
POM 与 fixtures 的取舍pom-vs-fixtures.md
选择测试类型test-architecture.md
模拟服务与真实服务的取舍when-to-mock.md
测试套件结构test-suite-structure.md
特定框架的测试

适用场景:测试 React、Angular、Vue 或 Next.js 应用

活动参考文件
测试 React 应用react.md
测试 Angular 应用angular.md
测试 Vue/Nuxt 应用vue.md
测试 Next.js 应用nextjs.md
重构与维护

适用场景:改进现有测试、进行代码审查、减少重复

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

适用场景:搭建项目、配置 CI/CD、优化性能

活动参考文件
配置 Playwright 项目configuration.md, projects-dependencies.md
设置 CI/CD 流水线ci-cd.md, github-actions.md
GitHub Actions 设置github-actions.md
GitLab CI 设置gitlab.md
其他 CI 提供商other-providers.md
Docker/容器设置docker.md
全局设置与清理global-setup.md
项目依赖项projects-dependencies.md
优化测试性能performance.md, test-suite-structure.md
配置并行执行parallel-sharding.md, performance.md
隔离不同工作进程之间的测试数据fixtures-hooks.md, performance.md
测试覆盖率test-coverage.md
测试报告/制品reporting.md
高级模式

适用场景:复杂场景、API 模拟、网络拦截

活动参考文件
模拟 API 响应test-suite-structure.md, network-advanced.md
网络拦截network-advanced.md, assertions-waiting.md
GraphQL 模拟network-advanced.md
HAR 录制/回放network-advanced.md
自定义 fixturesfixtures-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 Vitalsperformance-testing.md
Lighthouse 集成performance-testing.md
测试注解(skip、fixme)annotations.md
测试标签(@smoke、@fast)test-tags.md
用于报告的测试步骤annotations.md

快速决策树

What are you doing?
│
├─ Writing a new test?
│  ├─ E2E test → core/test-suite-structure.md, core/locators.md, core/assertions-waiting.md
│  ├─ Component test → testing-patterns/component-testing.md
│  ├─ API test → testing-patterns/api-testing.md, core/test-suite-structure.md
│  ├─ GraphQL test → testing-patterns/graphql-testing.md
│  ├─ Visual regression → testing-patterns/visual-regression.md
│  ├─ Visual/canvas test → testing-patterns/canvas-webgl.md, core/test-suite-structure.md
│  ├─ Accessibility test → testing-patterns/accessibility.md
│  ├─ Mobile/responsive test → advanced/mobile-testing.md
│  ├─ i18n/locale test → testing-patterns/i18n.md
│  ├─ Electron app test → testing-patterns/electron.md
│  ├─ Browser extension test → testing-patterns/browser-extensions.md
│  ├─ Multi-user test → advanced/multi-user.md
│  ├─ Form validation test → testing-patterns/forms-validation.md
│  └─ Drag and drop test → testing-patterns/drag-drop.md
│
├─ Testing specific features?
│  ├─ File upload/download → testing-patterns/file-operations.md, testing-patterns/file-upload-download.md
│  ├─ Date/time dependent → advanced/clock-mocking.md
│  ├─ WebSocket/real-time → browser-apis/websockets.md
│  ├─ Geolocation/permissions → browser-apis/browser-apis.md
│  ├─ OAuth/SSO mocking → advanced/third-party.md, advanced/multi-context.md
│  ├─ Payments/email/SMS → advanced/third-party.md
│  ├─ iFrames → browser-apis/iframes.md
│  ├─ Canvas/WebGL/charts → testing-patterns/canvas-webgl.md
│  ├─ Service workers/PWA → browser-apis/service-workers.md
│  ├─ i18n/localization → testing-patterns/i18n.md
│  ├─ Security (XSS, CSRF) → testing-patterns/security-testing.md
│  └─ Performance/Web Vitals → testing-patterns/performance-testing.md
│
├─ Architecture decisions?
│  ├─ POM vs fixtures → architecture/pom-vs-fixtures.md
│  ├─ Test type selection → architecture/test-architecture.md
│  ├─ Mock vs real services → architecture/when-to-mock.md
│  └─ Test suite structure → core/test-suite-structure.md
│
├─ Framework-specific testing?
│  ├─ React app → frameworks/react.md
│  ├─ Angular app → frameworks/angular.md
│  ├─ Vue/Nuxt app → frameworks/vue.md
│  └─ Next.js app → frameworks/nextjs.md
│
├─ Authentication testing?
│  ├─ Basic auth patterns → advanced/authentication.md
│  └─ Complex flows (MFA, reset) → advanced/authentication-flows.md
│
├─ Test is failing/flaky?
│  ├─ Flaky test investigation → debugging/flaky-tests.md
│  ├─ Element not found → core/locators.md, debugging/debugging.md
│  ├─ Timeout issues → core/assertions-waiting.md, debugging/debugging.md
│  ├─ Race conditions → debugging/flaky-tests.md, debugging/debugging.md
│  ├─ Flaky only with multiple workers → debugging/flaky-tests.md, infrastructure-ci-cd/performance.md
│  ├─ State leak / isolation → debugging/flaky-tests.md, core/fixtures-hooks.md
│  ├─ Console/JS errors → debugging/console-errors.md, debugging/debugging.md
│  └─ General debugging → debugging/debugging.md
│
├─ Testing error scenarios?
│  ├─ Network failures → debugging/error-testing.md, advanced/network-advanced.md
│  ├─ Offline (unexpected) → debugging/error-testing.md
│  ├─ Offline-first/PWA → browser-apis/service-workers.md
│  ├─ Error boundaries → debugging/error-testing.md
│  └─ Form validation → testing-patterns/forms-validation.md, debugging/error-testing.md
│
├─ Refactoring existing code?
│  ├─ Implementing POM → core/page-object-model.md
│  ├─ Improving selectors → core/locators.md
│  ├─ Extracting fixtures → core/fixtures-hooks.md
│  ├─ Creating data factories → core/test-data.md
│  └─ Configuration setup → core/configuration.md
│
├─ Setting up infrastructure?
│  ├─ CI/CD → infrastructure-ci-cd/ci-cd.md
│  ├─ GitHub Actions → infrastructure-ci-cd/github-actions.md
│  ├─ GitLab CI → infrastructure-ci-cd/gitlab.md
│  ├─ Other CI providers → infrastructure-ci-cd/other-providers.md
│  ├─ Docker/containers → infrastructure-ci-cd/docker.md
│  ├─ Sharding/parallel → infrastructure-ci-cd/parallel-sharding.md
│  ├─ Reporting/artifacts → infrastructure-ci-cd/reporting.md
│  ├─ Global setup/teardown → core/global-setup.md
│  ├─ Project dependencies → core/projects-dependencies.md
│  ├─ Test performance → infrastructure-ci-cd/performance.md
│  ├─ Test coverage → infrastructure-ci-cd/test-coverage.md
│  └─ Project config → core/configuration.md, core/projects-dependencies.md
│
├─ Organizing tests?
│  ├─ Skip/fixme/slow tests → core/annotations.md
│  ├─ Test tags (@smoke, @fast) → core/test-tags.md
│  ├─ Filtering tests (--grep) → core/test-tags.md
│  ├─ Test steps → core/annotations.md
│  └─ Conditional execution → core/annotations.md
│
└─ Running subset of tests?
   ├─ By tag (@smoke, @critical) → core/test-tags.md
   ├─ Exclude slow/flaky tests → core/test-tags.md
   ├─ PR vs nightly tests → core/test-tags.md, infrastructure-ci-cd/ci-cd.md
   └─ Project-specific filtering → core/test-tags.md, core/configuration.md

测试验证循环

编写或修改测试后:

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

评论

支持 Markdown