使用Playwright进行E2E测试调试截图Skill dyad:debug-with-playwright

这个技能专注于在端到端(E2E)测试中,利用 Playwright 框架在关键步骤截图,以视觉化检查应用程序状态,辅助调试和问题诊断。适用于自动化测试、软件测试和质量保证领域。关键词:E2E 测试、Playwright、截图、调试、视觉检查、应用状态、自动化测试。

测试 0 次安装 0 次浏览 更新于 3/15/2026

名称: dyad:debug-with-playwright 描述: 通过在关键点截图来视觉检查应用状态以调试 E2E 测试。

使用 Playwright 截图调试

通过在关键点截图来视觉检查应用状态以调试 E2E 测试。

参数

  • $ARGUMENTS: (可选)指定要调试的 E2E 测试文件(例如,main.spec.tse2e-tests/main.spec.ts)。如果未提供,将询问用户要调试哪个测试。

背景

Dyad 使用 Electron + Playwright 进行 E2E 测试。因为 Playwright 内置的 screenshot: "on" 选项不适用于 Electron(见 https://github.com/microsoft/playwright/issues/8208),必须通过 page.screenshot() 手动截图。

e2e-tests/helpers/fixtures.ts 中的测试夹具已经在测试失败时自动捕获截图并附加到测试报告中。但对于调试,通常需要在测试执行过程中的特定点截图。

说明

  1. 识别要调试的测试:

    如果 $ARGUMENTS 为空,询问用户要调试哪个测试文件。

    • 如果提供时没有 e2e-tests/ 前缀,添加它
    • 如果提供时没有 .spec.ts 后缀,添加它
  2. 读取测试文件:

    读取测试文件以了解其功能和可能失败的地方。

  3. 向测试添加调试截图:

    在测试的关键点添加 page.screenshot() 调用来捕获视觉状态。从 po 夹具访问页面:

    // 从 electronApp 夹具获取页面
    const page = await electronApp.firstWindow();
    
    // 或者如果只有 `po`,直接访问页面:
    // po 是一个 PageObject,它有 `page` 属性
    

    调试截图模式:

    import * as fs from "fs";
    import * as path from "path";
    
    // 创建调试截图目录
    const debugDir = path.join(__dirname, "debug-screenshots");
    if (!fs.existsSync(debugDir)) {
      fs.mkdirSync(debugDir, { recursive: true });
    }
    
    // 拍摄全页面截图
    await page.screenshot({
      path: path.join(debugDir, "01-before-action.png"),
    });
    
    // 拍摄特定元素的截图
    const element = page.locator('[data-testid="chat-input"]');
    await element.screenshot({
      path: path.join(debugDir, "02-chat-input.png"),
    });
    
    // 在某个操作后截图
    await po.sendPrompt("hi");
    await page.screenshot({
      path: path.join(debugDir, "03-after-send.png"),
    });
    

    重要: 测试夹具签名提供 { electronApp, po }。要获取页面:

    • 使用 await electronApp.firstWindow() 获取页面
    • 或者使用 po.page 如果 PageObject 暴露它

    在失败步骤前后添加截图以了解 UI 在该点的外观。

  4. 构建应用(如果需要):

    E2E 测试针对构建的二进制文件运行。如果进行了任何应用代码更改:

    npm run build
    

    如果只更改了测试文件,可以跳过此步骤。

  5. 运行测试:

    PLAYWRIGHT_RETRIES=0 PLAYWRIGHT_HTML_OPEN=never npm run e2e -- e2e-tests/<testfile>.spec.ts
    
  6. 查看截图:

    使用 Read 工具查看捕获的 PNG 截图。Claude Code 可以直接读取和显示图像:

    Read the PNG files in e2e-tests/debug-screenshots/
    

    分析截图以了解:

    • 预期的 UI 元素是否可见?
    • 是否有错误对话框或意外状态?
    • 加载微调器是否仍在显示?
    • 布局是否正确?
  7. 检查 Playwright 跟踪(用于额外上下文):

    Playwright 配置有 trace: "retain-on-failure"。如果测试失败,跟踪文件将在 test-results/ 中。可以参考此文件以获取额外调试上下文。

  8. 迭代:

    基于截图所见:

    • 如果需要,添加更多有针对性的截图
    • 修复测试或应用代码中的问题
    • 重新运行以验证
  9. 清理:

    调试完成后,删除调试截图和添加到测试中的任何临时截图代码:

    rm -rf e2e-tests/debug-screenshots/
    

    删除为调试目的添加的任何 page.screenshot() 调用。

  10. 报告发现:

    告诉用户:

    • 截图揭示了测试失败的什么信息
    • 应用了什么修复(如果有)
    • 测试现在是否通过