SuperAPI AI 工具集

e2e-testing

测试与质量

查看项目

更新于 10-16 05:10

技能介绍

用途

该技能用于构建稳定、快速且易于维护的端到端(E2E)测试套件,基于 Playwright 提供一整套测试模式与配置参考。内容覆盖从测试文件组织、页面对象模型、配置、CI/CD 集成到产物管理与不稳定测试处理的完整流程。

主要能力

测试文件组织

给出推荐的目录结构,将测试按领域划分:

tests/
├── e2e/
│   ├── auth/
│   │   ├── login.spec.ts
│   │   ├── logout.spec.ts
│   │   └── register.spec.ts
│   ├── features/
│   │   ├── browse.spec.ts
│   │   ├── search.spec.ts
│   │   └── create.spec.ts
│   └── api/
│       └── endpoints.spec.ts
├── fixtures/
│   ├── auth.ts
│   └── data.ts
└── playwright.config.ts

页面对象模型(Page Object Model)

提供页面对象类的写法示例,将定位器与操作封装为类,例如 ItemsPage 包含 searchInput、itemCards、createButton 等定位器,以及 goto()、search()、getItemCount() 等方法。

测试结构

展示使用 test.describe、test.beforeEach 组织测试,结合页面对象进行断言与截图。

Playwright 配置

给出 defineConfig 示例,包含 testDir、fullyParallel、forbidOnly、retries、workers、多格式 reporter(html、junit、json)、use 中的 baseURL、trace、screenshot、video、超时设置,以及 chromium、firefox、webkit、mobile-chrome 多项目配置和 webServer 配置。

不稳定测试模式

  • 隔离:使用 test.fixme(true, 'Flaky - Issue #123') 或 test.skip(process.env.CI, ...)。
  • 识别不稳定:npx playwright test tests/search.spec.ts --repeat-each=10、--retries=3。
  • 常见原因与修复:竞态条件(使用自动等待的 locator 而非直接 click)、网络时机(等待特定响应而非任意超时)、动画时机(等待元素稳定后再点击)。

产物管理

  • 截图:page.screenshot(),支持全页截图与元素截图。
  • 追踪:browser.startTracing() 与 browser.stopTracing()。
  • 视频:在配置中设置 video: 'retain-on-failure' 与 videosPath。

CI/CD 集成

提供 GitHub Actions 工作流示例(.github/workflows/e2e.yml),包含 checkout、setup-node、npm ci、npx playwright install --with-deps、npx playwright test 以及上传产物步骤。

测试报告模板

给出 E2E 测试报告模板,包含日期、耗时、状态、摘要、失败测试详情、产物列表等字段。

特殊场景

  • 钱包 / Web3 测试:通过 context.addInitScript 模拟钱包提供者(如 MetaMask),验证钱包连接与地址显示。
  • 金融 / 关键流程测试:在生产环境跳过,验证交易预览、确认交易并等待区块链处理响应。

使用方式

资料中提供了各模式的代码示例与命令,例如运行测试使用 npx playwright test,识别不稳定测试使用 --repeat-each 与 --retries 参数。具体安装与初始化步骤资料中暂未提供。

适用场景

适用于需要编写和维护 Playwright E2E 测试的团队,尤其是涉及多浏览器、移动端、CI/CD 流水线、产物归档,以及 Web3 钱包或金融交易等关键流程测试的项目。

限制

资料未说明该技能对 Playwright 版本、Node 版本的具体要求,也未提供安装命令、收费信息或平台限制,这些内容暂未提供。