SuperAPI AI 工具集

playwright

测试与质量

查看项目

更新于 10-15 15:17

技能介绍

用途

该技能用于在编写 Playwright 端到端(E2E)测试时提供统一模式与规范。资料给出的触发条件为:编写 E2E 测试时,涉及 Page Objects、选择器与 MCP 工作流。

主要能力与规范

MCP 工作流(如可用则为强制)

若具备 Playwright MCP 工具,务必在创建任何测试之前使用它们,步骤为:

  1. 导航到目标页面
  2. 拍摄快照以查看页面结构与元素
  3. 与表单/元素交互以验证确切的用户流程
  4. 截图记录预期状态
  5. 验证完整流程中的页面转换(加载、成功、错误)
  6. 从快照记录真实选择器(使用真实引用与标签)

只有在探索之后,才用已验证的选择器创建测试代码。

若 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(不应拆分文件)

选择器优先级(必需)

资料给出优先级与示例代码:

  1. 最佳 —— 交互元素使用 getByRole;表单控件使用 getByLabel
  2. 少量使用 —— 仅静态内容使用 getByText
  3. 最后手段 —— 以上失败时使用 getByTestId
  4. 避免脆弱选择器:.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 工具时用于先探索页面再生成测试。

限制

资料未提供关于收费、价格、平台支持范围、性能指标或额外依赖的说明;缺失信息暂未提供。