vue.js - 在 Mocha 和 Playwright 的所有测试之前运行的 Root Hook 插件
问题描述
通过将这个插件添加到我的项目中,我为我的 Vuejs 项目连接了一些自动化测试。
Vuejs 应用程序是使用 vue-cli 创建的。
一切正常,Playwright 似乎是一个非常强大的自动化库。
所以我正在尝试编写一个 Mocha 根钩子插件,它在所有测试之前运行一次。看起来像这样:
钩子.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),以便测试命令看起来像这样(in 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",
},
这很有效,并且该身份验证代码在我所有的测试之前运行了一次。
推荐阅读
- java - 从逻辑上讲,double sumOfList(List list) 会使函数变为只读模式,为什么list.remove() 可以编译成功
- python - 简化日期输入以过滤系列数据框
- python - 为什么在这里使用 `any` 会导致该程序超出递归深度,但使用 `for` 循环不会?
- ios - 使用 CDN 链接到 HTML 的 Apex 图表不显示
- docker - pihole 未在 docker 中使用 traefik 正确路由
- haskell - 如何编译第一个haskell程序
- python - 字典按键的子串分组
- data-structures - 对于任何输入顺序的键,具有抢先分裂的 B 树是否总是具有相同的高度?
- python - `python`:将返回类实例的类方法放入单独的文件中
- proxy - Postman 代理不适用于 HTTPS 请求