javascript - Puppeteer - Cucumber - 使用一个浏览器进行测试
问题描述
我在我的网络应用程序上使用 Puppeteer 和 Cucumber 进行 E2E 测试。
在每个功能的每个“steps.js”文件中,我在before
方法中有这个:
Before(async function() {
this.browser = await puppeteer.launch({ headless: false });
setDefaultTimeout(60 * 1000);
this.page = await this.browser.newPage();
await this.page.emulate(GalaxyS5);
await this.page.goto(URL);
});
问题是当我cucumber-js
像这样运行它时:.\node_modules\.bin\cucumber-js test\e2e\features
最终发生的是我打开了 3 个 Chromium 浏览器。其中 2 个然后转到我指定的 URL,最后一个只是一个空白页。
打开所有浏览器后,URL 被重定向的 2 个中的 1 个也开始执行测试。
似乎每个新场景都会打开一个新的浏览器窗口,这并不好,因为我最终会得到很多浏览器窗口。有没有办法指定 Puppeteer 仅使用一个浏览器进行测试或至少基于每个功能文件?
我的项目层次结构是这样的:
e2e/
- features/
- feature1/
- feature1.feature
- steps.js (given, when, then, etc.)
- feature2/
- world.js
解决方案
您是否尝试过添加 After:
After(async function() {
// Teardown browser
if (this.browser) {
await this.browser.close();
}
});
推荐阅读
- mysql - 如何将许多组件中使用的函数转换为可以在整个应用程序中重用的自己的组件?
- ios - UICollectionView 奇怪的单元格动画当键盘的关闭模式是交互式的
- python - 当我在 Django 休息框架中使用“rest_framework.permissions.IsAuthenticated”向匿名用户请求而不是错误 401 时,我收到错误 500
- java - jpa 包含带有列表的查询
- javascript - 对象数组上的拼接函数
- python - 在 Mac 上使用 Python 上的 Tkinter 的 Hi-DPI 模式
- angular - 更改选项卡时显示块
- sass - Bootstrap & angular 8. _root.scss 中未定义的变量
- reactjs - 为什么可以将 React 元素(JavaScript 对象)指定为 React 组件的子项?
- android - 重新创建片段时 ViewModel 重新获取数据