Testing 使用Metamask进行测试的Cypress测试方法

Testing 使用Metamask进行测试的Cypress测试方法,testing,cypress,metamask,Testing,Cypress,Metamask,我想测试我的应用程序如何与Metamask交互(例如钱包打开了吗?),并创建一个灵活的测试配置,使我能够通过“挂载”Metamask界面访问应用程序,其方式与Assert JS(2018)讲座视频中普通的“登录”方式类似(我使用MM有效登录),如: 使用Cypress测试Metamask是否有参考资料或建议?Cypress提供了以下用于加载Chrome扩展插件的文档: module.exports = (on, config) => { on('before:brows

我想测试我的应用程序如何与Metamask交互(例如钱包打开了吗?),并创建一个灵活的测试配置,使我能够通过“挂载”Metamask界面访问应用程序,其方式与Assert JS(2018)讲座视频中普通的“登录”方式类似(我使用MM有效登录),如: 使用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
      })
    }
但除此之外没有其他帮助。一旦加载,我将如何与之交互以生成有意义的测试? 我希望这是可能的。我看到其他人已经考虑了这些问题,我已经在MM github上发布了这个问题: thx…

根据:

您无法轻松地使用Cypress测试扩展或与扩展交互

作为一种解决方法,我使用了木偶演员和Cypress来实现这一点

您加载扩展的示例是正确的。您可以在此处看到我的方法,它在加载到浏览器之前下载最新的元掩码版本:

但是,在这样做之前,请记住以下几点:

  • 由于metamask在运行浏览器后的初始安装时作为新选项卡打开,Cypress测试不会以默认设置启动,因为Cypress后台选项卡将处于“非活动”状态。要解决此问题,您需要使用以下各项:
  • 始终在
    cypress.json
    config中使用
    “chromeWebSecurity”:true
    ,否则metamask将无法与DAPP一起正常工作,并且存在连接问题。
  • 如果您不需要长期关闭它们,请考虑:

  • 始终在标题模式下运行Cypress(
    Cypress run--headed
    )。Headless不适用于扩展
  • 请随意查看Synpress,它是metamask与Cypress的集成:

    我想你可以在这里找到很多适合你需要的细节

    干杯, 雅库布

    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');
        }
    }