Puppeteer - Cucumber - 使用一个浏览器进行测试
Puppeteer - Cucumber - Use one browser for the tests
我在我的网络应用程序上使用 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 个也被重定向,然后开始执行测试。
似乎每个新场景都会打开一个新浏览器 window,这并不好,因为我最终得到了很多浏览器 windows。有没有办法指定 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();
}
});
我在我的网络应用程序上使用 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 个也被重定向,然后开始执行测试。
似乎每个新场景都会打开一个新浏览器 window,这并不好,因为我最终得到了很多浏览器 windows。有没有办法指定 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();
}
});