运行 的根挂钩插件在使用 Mocha 和 Playwright 进行所有测试之前

Root Hook Plugin to Run Before All Tests with Mocha and Playwright

我通过将 this plugin 添加到我的项目来为我的 Vuejs 项目连接一些自动化测试。

Vuejs 应用是使用 vue-cli 创建的。

一切正常,Playwright 似乎是一个非常强大的自动化库。

所以我正在尝试编写一个 Mocha root hook 插件,在所有测试之前 运行s 一次。看起来像这样:

hooks.js

const playwright = require("playwright");

export const mochaHooks = {
  beforeAll() {
    const browser = await playwright["chromium"].launch({
      headless: false
    });

    const context = await browser.newContext();

    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: 'state.json' });

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

我不确定如何将其与我的 Vuejs 项目集成。 我试图添加 --require 标志 (doco),以便测试命令看起来像这样(在 package.json 中):

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

不幸的是,这并没有成功 运行 那个 hooks.js 文件中的代码。

任何人都可以在正确的方向推动我。 干杯

好的。所以我很接近。
我不得不使用 CommonJS 语法。
我想我需要继续努力,因为我想让它在 Typescript 中工作。

无论如何,对于任何其他想要解决这个问题的人,我更改了我的 hooks.js 文件如下:

const playwright = require("playwright");


exports.mochaHooks = {
  async beforeAll() {

    const browser1 = await playwright["chromium"].launch({
      headless: false
      //devtools: true
    });

    const context1 = await browser1.newContext();
    const page = await context1.newPage();

    await page.goto("https://localhost:44392/account/login");


    await page.fill("#Username", "demokitchenadmin");
    await page.fill("#Password", "Test1234)");

    await page.click("button.btn-primary");

    await context1.storageState({ path: 'state.json' });

    await page.close();
    await context1.close();
    await browser1.close();
  }
};

在我的 package.json 中:

"scripts": {
    ...
    "test:e2e": "vue-cli-service test:e2e -r ./tests/e2e/hooks",
},

这有效,并且在我的所有测试之前验证码 运行 一次。

使用可以在 playwright.config.ts.

中定义的全局设置函数 (https://playwright.dev/docs/test-advanced#global-setup-and-teardown)