mcpField
E
e2e-panther-playwright

e2e-panther-playwright

github.com/dev-toolings测试与质量22771 次安装3 周前更新
代码仓库

关于 e2e-panther-playwright

面向 Symfony 的浏览器端到端测试技能,使用 Panther;对 WebKit、追踪等需求也介绍独立运行 Playwright。内容涵盖环境配置、显式等待、断言和 CI 调试。

主要功能

  1. 01Panther 真实浏览器测试
  2. 02跨浏览器需求可选 Playwright
  3. 03显式等待与状态断言
  4. 04驱动和 CI 配置指引

适用场景

  1. 01测试 JavaScript 驱动的流程
  2. 02验证登录或结账流程
  3. 03调试 CI 中的浏览器测试

安装

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

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill e2e-panther-playwright

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

附带文件reference.md

详细介绍

E2e Panther Playwright(Symfony)

使用场景

  • 流程需要真实浏览器:JavaScript、登录、结账或注册等多页面旅程。
  • 行为依赖客户端渲染,WebTestCase 无法观察到。
  • 需要 WebDriver 未覆盖的跨浏览器功能(WebKit、跟踪、视频):单独运行 Playwright。
  • 调试仅在 CI 中失败的浏览器测试。

默认工作流

  1. 选择客户端:需要真实浏览器时使用 static::createPantherClient(),不需要 JavaScript 时使用 static::createClient()。
  2. 安装 symfony/panther 和 dbrekelmans/bdi,运行 vendor/bin/bdi detect drivers,并在 phpunit.dist.xml 中注册 ServerExtension。
  3. 扩展 PantherTestCase,并通过显式等待驱动流程:waitFor()、waitForVisibility()、waitForElementToContain()。
  4. 使用 assertSelectorWillExist() 或 assertSelectorWillContain() 断言未来状态,使用 assertSelectorIsVisible() 断言当前状态。
  5. 将测试套件放在 tests/E2E 中,并在测试之间重置数据库(使用 DAMADoctrineTestBundle 或 Foundry)。
  6. 使用 PANTHER_NO_HEADLESS=1 和 --debug 调试;在 CI 中设置 PANTHER_NO_SANDBOX=1。

注意事项

  • 绝不依赖隐式时序:每个异步步骤都要使用 waitFor* 或 assertSelectorWill*。
  • 定位 data-testid 属性,而非样式类。
  • 删除 takeScreenshot() 或 PANTHER_ERROR_SCREENSHOT_DIR 写入的 PNG 文件;绝不要提交这些文件。
  • E2E 测试运行缓慢:仅覆盖关键路径,并与单元测试分开。

渐进式披露

  • 使用此文件了解执行方式和风险控制。
  • 需要深入了解实现细节时,打开参考资料。

输出约定

  • E2E 测试文件,并注明使用的客户端类型和等待策略。
  • 驱动程序设置、ServerExtension 注册,以及本地和 CI 所需的 PANTHER_* 变量。
  • 确认截图已清理。

参考资料

  • reference.md

评论

支持 Markdown