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

Playwright中能否修改toHaveScreenshot()的截图存储路径?

修改Playwright中toHaveScreenshot的快照存储目录

问题描述

使用toHaveScreenshot方法时,快照文件默认存放在测试文件同级目录下,能否修改其存储目录?

当前调用方式:

await expect( page ).toHaveScreenshot( 'image.png' );

实际生成的路径结构:

/dashboard
  /test.spec.ts-snapshots
    image.png
  test.spec.ts

期望的路径结构:

/dashboard
  /snapshots
    /test.spec.ts-snapshots
      image.png
  test.spec.ts

解决方案

当然可以修改,有两种常用方式:

1. 全局配置(推荐)

通过Playwright的测试配置文件(如playwright.config.ts)中的snapshotDir参数,统一指定所有快照的根目录,自动保留原测试文件命名的子目录结构,无需修改测试用例代码。

配置示例:

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  // 其他配置项...
  snapshotDir: './snapshots', // 指定根目录为项目下的snapshots文件夹
  use: {
    // 其他使用配置...
  },
});

配置后重新运行测试,快照就会自动生成到你期望的路径下。

2. 单个快照自定义路径

如果需要针对特定快照单独设置路径,可以在调用toHaveScreenshot时传入path参数指定完整路径:

await expect(page).toHaveScreenshot({
  path: './snapshots/test.spec.ts-snapshots/image.png'
});

这种方式需要逐个修改测试用例,适合特殊场景,一般优先使用全局配置保持一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:11:58