You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Playwright Percy测试在快照不匹配时失败?附示例

Playwright Percy 测试配置:等待快照对比完成并在不匹配时失败

1. 安装依赖

确保项目中已安装必要的Percy与Playwright集成包:

npm install --save-dev @percy/cli @percy/playwright

2. 测试代码配置

在Playwright测试文件中,完成快照捕获后,调用percy.waitForSnapshots()等待对比完成,并根据结果判断是否让测试失败:

const { test } = require('@playwright/test');
const percySnapshot = require('@percy/playwright');
const { waitForSnapshots } = require('@percy/cli');

test('页面快照对比测试', async ({ page }) => {
  // 访问目标页面
  await page.goto('https://your-test-page.com');
  
  // 执行页面操作(如点击、输入等)
  await page.click('#some-button');
  
  // 捕获快照
  await percySnapshot(page, '操作后的页面快照');
  
  // 等待所有快照对比完成
  const snapshotResult = await waitForSnapshots();
  
  // 检查对比结果,若存在未匹配的快照则抛出错误
  if (snapshotResult.failures.length > 0) {
    throw new Error(`快照对比失败:共 ${snapshotResult.failures.length} 个快照与基线不匹配`);
  }
});

3. 运行测试的正确命令

必须使用percy exec包裹Playwright测试命令,确保Percy能正确处理快照的上传与对比流程:

percy exec -- npx playwright test

关键说明

  • waitForSnapshots()方法会阻塞测试流程,直到所有快照的对比操作完成
  • 当快照与基线存在未被批准的差异时,snapshotResult.failures会包含对应的快照信息,此时主动抛出错误会让Playwright测试标记为失败
  • 若希望自动批准所有变更,可在Percy项目设置中开启相关选项,但这会导致测试始终通过,不符合需求,需确保该选项处于关闭状态

内容的提问来源于stack exchange,提问作者Arun Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:31:04