运行 的根挂钩插件在使用 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)
我通过将 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)