Playwright 端到端测试 Runner
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_23af92d1/xjy。
技能介绍
为什么需要专门的 E2E 思路
Playwright 自带自动等待,但测试仍容易在动态 DOM、网络时序和共享状态上翻车。用 CSS/XPath 硬选元素、到处 waitForTimeout,会让套件变慢且一改 UI 就红一片。这个技能把「旅程怎么拆、元素怎么找、失败怎么查」收成一套可重复的做法,面向可维护、可 CI 复跑的端到端测试。
技能如何组织测试
Test Journey 按真实用户流写:登录 → 操作 → 断言;一个逻辑域一个文件(如 auth.spec.ts、checkout.spec.ts),单测内用 Arrange-Act-Assert。
定位优先级(语义优先):
getByRole('button', { name: 'Submit' })getByLabel/getByPlaceholder/getByTextgetByTestId仅作兜底;避免getByCss、getByXPath绑死样式结构
等待:用 expect(...).toBeVisible()、toBeEnabled() 等条件断言;网络用 page.waitForResponse() / waitForRequest(),而不是固定 sleep。
Flaky 对照表涵盖时序、竞态、共享状态、动画、外部依赖与用例顺序——对应隔离页面/数据、Mock、fixture、并行与串行策略。
产物:Trace(npx playwright show-trace)、失败截图与可选失败录像,便于 CI 里 --retries=2 仍失败时的定位。
适用边界
它指导测试设计与 Playwright 用法,不替代你编写业务断言或搭建测试环境(DB、鉴权 fixture)。动画-heavy 页面可能仍需在测试配置里关动画或等终态;外部 API 仍建议 Mock 而非依赖不稳定联调。
使用场景
- 新功能上线前,要把「登录→下单→支付结果」拆成独立 spec,并用 role/label 写断言而非 CSS 选择器
- CI 里间歇失败,需要把 waitForTimeout 改成 toBeVisible 等条件等待,并核对竞态与共享数据
- 发布前回归:为 auth、checkout 分文件维护 Arrange-Act-Assert 旅程,保证用例互不依赖
- 某条流水线失败后,用 trace.zip 与失败截图对照网络 waitForResponse 与页面终态
适合人员
- 负责 Web 应用在 GitHub Actions 里跑 Playwright、需要控制 flaky 率的前端工程师
- 从 Selenium/CSS 定位迁移到 Playwright,希望统一 getByRole 与 POM 结构的测试开发
- 每次发版要做完整用户旅程回归、但不想用例顺序绑死的 QA 自动化同学
- 调试 E2E 失败时依赖 Trace 与失败录像、而非盲目加长 sleep 的全栈或 SDET