木偶-黄瓜-使用一个浏览器进行测试

时间:2019-04-19 17:52:30

标签: javascript cucumber puppeteer cucumberjs

我正在使用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

1 个答案:

答案 0 :(得分:0)

您是否尝试过添加After:

After(async function() {
    // Teardown browser
    if (this.browser) {
       await this.browser.close();
    }
});