如何在 Puppeteer 中测试 navigator.share()?

How to get navigator.share() tested in puppeteer?

提问人:LuisF 提问时间:7/18/2023 更新时间:7/18/2023 访问量:43

问:

我正在使用 puppeteer 完成一些自动化测试,但无法弄清楚如何在用户单击后测试 navigator.share() 函数是否正常运行。

Google-Chrome Puppeteer 分享 Chromium Navigator

评论


答:

0赞 Yaroslavm 7/18/2023 #1

如果要测试该函数被调用,则可以在浏览器上下文中模拟它,并检查是否在操作后调用了模拟函数,例如navigator.share()

  await page.evaluateOnNewDocument(() => {
    window['isNavigatorShareCalled'] = false;
    window.navigator.share = async (data) => {
      window['isNavigatorShareCalled'] = true;
      window['shareData'] = data;
    };
  });

  await page.goto(yourSite);

  await page.waitForSelector(trigger).then(el => el.click());

  const isShareCalled = await page.evaluate(() => {
    return window['isNavigatorShareCalled'];
  });

  expect(isShareCalled).toBe(true);
  // check data if needed

如果你需要调用原生共享,你可以在 mock 中完成。