我正在使用Puppeteer和Cucumber在我的Web应用程序上进行E2E测试。
在每个功能的每个“ steps.js”文件上,我在 for f in **/*
do
dn=$(basename "$(dirname "$f")")
bn=$(basename "$f")
mv -- "$f" "${dn}_${bn}"
done
方法中拥有此功能:
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
运行它时,最终发生的事情是我打开了3个Chromium浏览器。然后将其中2个转到我指定的URL,最后一个只是空白页。
打开所有浏览器后,URL也会被重定向到2个地址中的1个,然后开始执行测试。
似乎在每一个新场景中,都会打开一个新的浏览器窗口,这不好,因为我最终得到了很多浏览器窗口。有没有一种方法可以指定Puppeteer仅使用一个浏览器进行测试,或者至少基于每个功能文件?
我的项目层次结构如下:
.\node_modules\.bin\cucumber-js test\e2e\features
答案 0 :(得分:0)
您是否尝试过添加After:
After(async function() {
// Teardown browser
if (this.browser) {
await this.browser.close();
}
});