You need to enable JavaScript to run this app. 如何在Mocha+Playwright的Vue项目中配置测试前置全局根钩子插件
优惠活动
大模型
产品
解决方案
定价
更多

如何在Mocha+Playwright的Vue项目中配置测试前置全局根钩子插件

问题排查与解决方案

1. 先修正hooks.js的代码错误

你的原始钩子代码存在3个直接导致无法运行的问题:

  • beforeAll内部用了await但没有声明async
  • 未初始化page变量直接调用
  • Node默认CommonJS模块环境下不兼容export导出语法,需要调整导出方式
    修正后的代码:
// tests/e2e/hooks.js
const playwright = require("playwright");

module.exports.mochaHooks = {
  async beforeAll() {
    const browser = await playwright["chromium"].launch({
      headless: false
    });
    const context = await browser.newContext();
    // 初始化page实例
    const page = await context.newPage();

    await page.goto("https://localhost:44392/");
    await page.fill("#Username", "demokitchenadmin");
    await page.fill("#Password", "Test1234)");
    await page.click("button.btn-primary");

    await context.storageState({ path: 'tests/e2e/state.json' });

    await page.close();
    await context.close();
    await browser.close();
  }
};

2. 调整Mocha参数传递方式

你直接在命令后加--require的方式无法生效,因为vue-cli-service test:e2e会先消费自身参数,需要确保参数正确传递给底层的Mocha,两种可选方案:

方案A:调整package.json脚本

{
  "scripts": {
    "test:e2e": "vue-cli-service test:e2e --require tests/e2e/hooks.js"
  }
}

注意去掉路径外层的单引号,Windows环境下单引号会被识别为路径的一部分导致文件找不到

方案B:新增Mocha配置文件(更稳定)

在项目根目录新建.mocharc.js文件,内容如下:

module.exports = {
  require: [
    './tests/e2e/hooks.js'
  ]
}

这种方式不需要修改scripts命令,Mocha会自动读取根目录的配置文件。

3. 额外注意事项

如果后续测试需要复用登录态,在测试用例初始化context的时候要加载保存的state.json:

const context = await browser.newContext({
  storageState: 'tests/e2e/state.json'
})

如果测试启动的前端服务是动态端口,不要写死地址,可通过环境变量读取测试服务地址。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 04:36:01