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

Playwright中测试启动前执行自定义代码(删除allure-results文件夹)的实现方式咨询

Playwright中测试启动前执行自定义代码(删除allure-results文件夹)的实现方式咨询

嗨,我来帮你搞定这个问题!Playwright提供了几种和WebdriverIO的beforeSession类似的机制,能让你在测试启动前执行清理(比如删除allure-results文件夹)这类自定义操作,下面给你详细拆解:

1. 全局前置脚本(globalSetup)—— 对应WebdriverIO的beforeSession

这是最接近你提到的beforeSession的方案,它会在所有测试进程启动前只执行一次,非常适合做全局的初始化/清理操作,比如删除测试报告文件夹。

实现步骤:

  • 首先创建一个全局前置脚本文件,比如global-setup.ts:
import { fullConfig } from '@playwright/test';
import fs from 'fs/promises';

async function globalSetup(config: typeof fullConfig) {
  // 定义要删除的文件夹路径
  const allureResultsDir = './allure-results';
  try {
    // 递归删除文件夹,force: true表示文件夹不存在也不会报错
    await fs.rm(allureResultsDir, { recursive: true, force: true });
    console.log(`已成功删除${allureResultsDir}文件夹`);
  } catch (err) {
    console.error(`删除${allureResultsDir}文件夹时出错:`, err);
  }
}

export default globalSetup;
  • 然后在你的playwright.config.ts里配置这个脚本:
import { defineConfig } from '@playwright/test';

export default defineConfig({
  globalSetup: './global-setup.ts', // 指定全局前置脚本路径
  // 其他配置项...
});

2. 测试套件级前置钩子(test.beforeAll)

如果你需要在某个测试套件的所有用例执行前执行清理(或者全局所有用例前,只要把钩子放在全局测试入口里),可以用test.beforeAll:

示例代码:

import { test } from '@playwright/test';
import fs from 'fs/promises';

// 这个钩子会在当前测试文件的所有用例执行前运行一次
test.beforeAll(async () => {
  const allureResultsDir = './allure-results';
  await fs.rm(allureResultsDir, { recursive: true, force: true });
});

// 你的测试用例
test('示例测试', async ({ page }) => {
  await page.goto('https://example.com');
  // ...测试逻辑
});

如果要让这个钩子全局生效,可以把它放在一个被所有测试文件引入的公共测试配置文件里,或者用test.extend来扩展全局测试上下文。

补充说明:删除文件夹的实现细节

上面用的是Node.js原生的fs/promises模块(异步版本),如果你习惯用同步代码,也可以用fs.rmSync:

import fs from 'fs';

fs.rmSync('./allure-results', { recursive: true, force: true });

两种方式都能实现递归删除文件夹,force: true参数确保文件夹不存在时不会抛出错误,避免影响测试启动。

备注:内容来源于stack exchange,提问作者Aman Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 09:09:30