我想测试我的应用程序如何与Metamask交互(例如,钱包是否打开?),并创建一个灵活的测试配置,使我能够通过“安装” Metamask接口以类似于普通“登录”的方式来访问应用程序。已在Assert JS(2018)讲座视频中完成(我使用MM进行有效登录),例如:https://www.youtube.com/watch?v=5XQOK0v_YRE 是否有任何参考材料或建议用于使用赛普拉斯测试Metamask?赛普拉斯具有以下用于加载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
})
}
,但除此之外没有其他帮助。加载后,我将如何与之交互以产生有意义的测试? 我希望这是可能的。我看到其他人已经考虑了这些问题,并将这个问题发布在MM github中: https://github.com/MetaMask/metamask-extension/issues/8605 谢谢...
答案 0 :(得分:0)
按照: https://github.com/cypress-io/cypress/issues/1965
您无法使用赛普拉斯轻松测试扩展或与扩展交互。
作为一种解决方法,我将puppeteer与赛普拉斯结合使用以实现这一目标。
您加载扩展程序的示例是正确的。您可以在这里看到我的方法,该方法会在将其下载到浏览器之前先下载最新的metamask版本: 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');
}
}
"chromeWebSecurity": true
配置中使用cypress.json
,否则metamask将无法与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
我认为您可以在这里找到很多适合您需求的细节。
干杯, 雅各布。