Chrome Cypress:如何在Cypress中测试web扩展apis

relj7zay  于 2023-01-22  发布在  Go
关注(0)|答案(1)|浏览(214)

我们的扩展安装在cypress发布的chrome浏览器上。由于浏览器中的url是集成测试列表中的一个(以红色突出显示),无法模拟webExtension API,如browser.tab.onUpdate或browser.webRequest等。选择器Playground不支持在其上安装扩展来测试这些事件。例如,我们的扩展

的后台脚本中的侦听器

browser.webRequest.onBeforeRequest.addListener(
    (details) => {
      callback(details)
    },
    {
      urls: URLS_TO_MONITOR,
      types: ['main_frame'],
    }
  )

我们如何在cypress推出的浏览器上模拟这样的事件呢?

t98cgbkg

t98cgbkg1#

如果您在chrome中运行测试,您可以在自动化中结合使用Runtime.evaluate命令和'remote:debugger:protocol'

Cypress.automation('remote:debugger:protocol', {command: 'Runtime.enable'});
cy.wrap(
  Cypress.automation('remote:debugger:protocol', {
    command: 'Runtime.evaluate',
    params: {
      expression: `new Promise((res,rej) => {
        res('my debug value')
      }) `,
      awaitPromise: true,
    },
  }),
).then(e => {
  cy.log(JSON.stringify(e));
});

你 * 也许 * 可以把你的命令在这里。我不是一个Maven在这一领域和它几乎没有记录,但我想把它扔在这里,希望它可能会帮助你。

Cypress.automation('remote:debugger:protocol', {command: 'Runtime.enable'});
cy.wrap(
  Cypress.automation('remote:debugger:protocol', {
    command: 'Runtime.evaluate',
    params: {
      expression: `new Promise((res,rej) => {
          browser.webRequest.onBeforeRequest.addListener(
          (details) => {
            res(details)
          },
         {
           urls: URLS_TO_MONITOR,
           types: ['main_frame'],
         })
      }) `,
      awaitPromise: true,
    },
  }),
).then(e => {
  cy.log(JSON.stringify(e));
});

相关问题