2

在我想使用自定义浏览器进行故事拍摄时遇到问题,但我很难找到有关管理浏览器生命周期的任何示例或文档 - 它只是随便提到的。我的 initStoryshots 看起来像这样

initStoryshots({
  suite: 'Image storyshots',
  storyKindRegex: /^((?!.*?skipImageSnapshot).)*$/,
  test: imageSnapshot({
    storybookUrl,
    getMatchOptions,
    getCustomBrowser: async () => {
      let browser = await puppeteer.launch({
        args: [
          '--no-sandbox ',
          '--headless',
          '--disable-setuid-sandbox',
          '--disable-dev-shm-usage',
          '--disable-lcd-text',
        ],
      });

      return browser
    }
  }),
});

所以我不清楚我可以在哪里添加 afterAll 或其他方式来获取浏览器和.close()它?

希望在这里找到一些指导。请让我知道我可以添加哪些细节。

4

1 回答 1

1

好的,解决了。在这里为下一个人留下记录:

解决方案是捕获由返回的 testFnimageSnapshot并覆盖afterAll它。

let browser;

let afterAll = () => {
  if (browser) {
    browser.close();
  }
};

let testFn = imageSnapshot({
  storybookUrl,
  getMatchOptions,
  getCustomBrowser: async () => {
    browser = await puppeteer.launch({
      args: [
        '--no-sandbox ',
        '--headless',
        '--disable-setuid-sandbox',
        '--disable-dev-shm-usage',
        '--disable-lcd-text',
      ],
    });
    return browser;
  },
});

testFn.afterAll = afterAll;

initStoryshots({
  suite: 'Image storyshots',
  storyKindRegex: /^((?!.*?skipImageSnapshot).)*$/,
  test: testFn,
});
于 2019-10-03T14:45:32.307 回答