首页 > 解决方案 > 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

标签: javascriptcucumberpuppeteercucumberjs

解决方案


您是否尝试过添加 After:

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

推荐阅读