如何从无头木偶师测试中访问剪贴板中的内容? [英] How do I access the contents of the clipboard from within a headless puppeteer test?

查看:13
本文介绍了如何从无头木偶师测试中访问剪贴板中的内容?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写一个测试,它使用Pupeteer来测试一个组件,该组件在与之交互时将某些内容复制到剪贴板。我想测试一下交互后剪贴板的内容是否正确。像this github issue这样的其他资源提到使用像clipboardy这样的工具来实现这一点。我尝试使用它,它在本地工作,但是当在我的无头CI服务器上运行时,它抱怨无法访问X环境。是否有方法可以在不启动X服务器的情况下访问剪贴板?

我正在编写一个测试,如下所示:

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://mypage.com');

await page.click('#my-component');

// This fails in a headless environment
expect(clipboardy.readSync()).toEqual("Some text");

推荐答案

向木偶操纵者添加'clipboard-read'权限并使用 剪贴板API,您可以运行navigator.clipboard.readText()从 测试中的剪贴板。即使在无头环境中也能正常工作:

const browser = await puppeteer.launch();
const context = browser.defaultBrowserContext();
context.overridePermissions(/* browser origin */, ['clipboard-read'])
const page = await browser.newPage();
await page.goto('https://mypage.com');

await page.click('#my-component');

expect(await page.evaluate(() => navigator.clipboard.readText()))
  .toEqual("Some text");

Documentation的context.overridePermission()

这篇关于如何从无头木偶师测试中访问剪贴板中的内容?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆