dot*_*pec 8 testing metamask cypress
我想测试我的应用程序如何与 Metamask 交互(例如,钱包是否打开?)并创建一个灵活的测试配置,使我能够通过“安装”Metamask 接口来访问应用程序,方式与普通“登录”的方式类似(我使用 MM 有效登录)在 Assert JS (2018) 讲座视频中,例如:https ://www.youtube.com/watch ?v=5XQOK0v_YRE 有没有使用 Cypress 测试 Metamask 的参考材料或建议?Cypress 有以下用于加载 Chrome 扩展插件的文档:
module.exports = (on, config) => {
on('before:browser:launch', (browser, launchOptions) => {
// supply the path to an unpacked WebExtension
// NOTE: extensions cannot be loaded in headless Chrome
launchOptions.extensions.push('/path/to/webextension')
return launchOptions
})
}
Run Code Online (Sandbox Code Playgroud)
但除此之外没有其他帮助。一旦加载,我将如何与其交互以产生有意义的测试?我希望这应该是可能的。我看到其他人已经考虑过这些问题,我已经在 MM github 中发布了这个问题: https: //github.com/MetaMask/metamask-extension/issues/8605 thx ...
根据: https: //github.com/cypress-io/cypress/issues/1965
您无法轻松使用 Cypress 测试扩展或与扩展交互。
作为一种解决方法,我将 puppeteer 与 Cypress 结合使用来实现此目的。
您加载扩展的示例是正确的。您可以在这里看到我的方法,它在浏览器中加载之前下载最新的元掩码版本: https://github.com/Synthetixio/synpress/blob/16095f8eb9ad6d92e95719c903878c32991a8ab2/plugins/index.js#L56-L58
但是,在这样做之前请记住以下事项:
module.exports = (on, config) => {
on('before:browser:launch', async (browser = {}, arguments_) => {
if (browser.name === 'chrome') {
arguments_.args.push('--disable-background-timer-throttling');
arguments_.args.push('--disable-backgrounding-occluded-windows');
arguments_.args.push('--disable-renderer-backgrounding');
}
}
Run Code Online (Sandbox Code Playgroud)
"chromeWebSecurity": true在cypress.json配置中使用,否则元掩码将无法与 dapp 一起正常工作并出现连接问题。
https://github.com/Synthetixio/synpress/issues/17考虑您是否不需要长期关闭它们: https://docs.cypress.io/guides/guides/web-security.html#Limitations
cypress run --headed。Headless 无法与扩展一起使用。请随意查看 Synpress,它是 Metamask 与 Cypress 的集成: https: //github.com/Synthetixio/synpress
我认为您可以在这里找到很多适合您需求的详细信息。
干杯,雅各布。
| 归档时间: |
|
| 查看次数: |
4652 次 |
| 最近记录: |