用途
该技能用于在编写 Playwright 端到端(E2E)测试时提供统一模式与规范。资料给出的触发条件为:编写 E2E 测试时,涉及 Page Objects、选择器与 MCP 工作流。
主要能力与规范
MCP 工作流(如可用则为强制)
若具备 Playwright MCP 工具,务必在创建任何测试之前使用它们,步骤为:
- 导航到目标页面
- 拍摄快照以查看页面结构与元素
- 与表单/元素交互以验证确切的用户流程
- 截图记录预期状态
- 验证完整流程中的页面转换(加载、成功、错误)
- 从快照记录真实选择器(使用真实引用与标签)
只有在探索之后,才用已验证的选择器创建测试代码。
若 MCP 不可用:基于文档与代码分析继续创建测试。
资料说明其意义在于:精确的测试(无需假设)、准确的选择器(真实 DOM 结构而非想象)、真实流程验证、避免过度设计(针对现有功能编写最小测试)、防止不稳定测试(真实探索等于稳定测试)。并强调绝不要假设 UI“应该”如何工作。
文件结构
tests/
├── base-page.ts # Parent class for ALL pages
├── helpers.ts # Shared utilities
└── {page-name}/
├── {page-name}-page.ts # Page Object Model
├── {page-name}.spec.ts # ALL tests here (NO separate files!)
└── {page-name}.md # Test documentation
命名示例(资料给出正确与错误写法):
- 正确:
sign-up.spec.ts(所有注册测试)、sign-up-page.ts(页面对象)、sign-up.md(文档) - 错误:
sign-up-critical-path.spec.ts、sign-up-validation.spec.ts(不应拆分文件)
选择器优先级(必需)
资料给出优先级与示例代码:
- 最佳 —— 交互元素使用
getByRole;表单控件使用getByLabel - 少量使用 —— 仅静态内容使用
getByText - 最后手段 —— 以上失败时使用
getByTestId - 避免脆弱选择器:
.btn-primary、#email
范围检测(模糊时询问)
- 用户说“一个测试”“单个测试”“新测试”“添加测试” → 在现有 spec 中创建一个
test() - 用户说“全面测试”“所有测试”“测试套件”“生成测试” → 创建完整套件
示例:“为用户注册创建测试” → 仅一个测试;“为登录页生成 E2E 测试” → 完整套件;“添加一个测试验证表单校验” → 向现有 spec 添加一个测试。
Page Object 模式
所有页面继承 BasePage,公共方法(如 waitForNotification)置于其中;页面特定实现(如 LoginPage)在构造函数中定义 getByLabel、getByRole 定位器,并封装 goto、login、verifyCriticalOutcome 等方法。
Page Object 复用(关键)
创建新页面对象前务必检查已有对象,导入并复用已有页面;仅当页面不存在时才创建。若测试涉及多个页面,确保所有页面对象存在(必要时创建)。资料给出复用与重复实现的对比示例。
重构指南
移动到 BasePage:多页共用的导航辅助、通用 UI 交互(通知、模态框、主题切换)、跨页重复的验证模式、适用所有页面的错误处理、调试用截图工具。
移动到 helpers.ts:测试数据生成(generateUniqueEmail()、generateTestUser())、setup/teardown 工具、自定义断言、测试准备用 API 辅助(seedDatabase()、resetState())、时间工具(waitForCondition()、retryAction())。
带标签的测试模式
使用 test.describe 与 { tag: [...] },标签类别包括:
- 优先级:
@critical、@high、@medium、@low - 类型:
@e2e - 功能:
@signup、@signin、@dashboard - 测试 ID:
@SIGNUP-E2E-001、@LOGIN-E2E-002
测试文档格式({page-name}.md)
包含:Suite ID、Feature、Test Case ID 与标题、Priority、Tags、Description/Objective、Preconditions、Flow Steps、Expected Result、Key verification points、Notes。
文档规则:不写通用测试运行说明、不写文件结构解释、不写代码示例或教程、不写故障排查;只聚焦具体测试用例;尽量控制在 60 行以内。
使用方式
资料给出的命令:
npx playwright test # Run all
npx playwright test --grep "login" # Filter by name
npx playwright test --ui # Interactive UI
npx playwright test --debug # Debug mode
npx playwright test tests/login/ # Run specific folder
适用场景
编写 Playwright 端到端测试,包括页面对象建模、选择器选择、测试文件组织、测试标签与测试文档编写;在具备 Playwright MCP 工具时用于先探索页面再生成测试。
限制
资料未提供关于收费、价格、平台支持范围、性能指标或额外依赖的说明;缺失信息暂未提供。