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();
    }
});