首页 > 解决方案 > Cypress.io 可以测试 chrome 扩展吗?

问题描述

我正在尝试使用 cypress.io 测试我的 chrome 扩展

我安装了https://github.com/ejoubaud/cypress-browser-extension-plugin

context('visit extension', () => {
    beforeEach(() => {
      cy.visit('chrome-extension://fmnignchafknmcleldmndpkfkdohnngn/dashboard.html')
    })

    it('does nothing', () => {
        assert(true);
    });
});

它不起作用。页面内容如下:

Sorry, we could not load: chrome-extension://fmnignchafknmcleldmndpkfkdohnngn/dashboard.html

标签: cypressend-to-end

解决方案


您不需要任何额外的插件来加载浏览器扩展,假设您正在运行 Cypress >v4,下面应该足以加载它。

// cypress/plugins/index.js
module.exports = (on, config) => {
  on('before:browser:launch', (browser, launchOptions) => {
    // supply the absolute path to an unpacked extension's folder
    // NOTE: extensions cannot be loaded in headless Chrome
    launchOptions.extensions.push('Users/jane/path/to/extension')

    return launchOptions
  })
}

在您的测试文件中,您可以访问任何“正常”网页,它应该适合您。例如:

// test.spec.js
describe('Navigation', () => {
  it('cy.visit() - visit a remote url', () => {
    cy.visit('https://en.wikipedia.org/wiki/Diabetes')
  })
})

此外,赛普拉斯无法访问诸如“chrome-extension://”之类的东西(或任何不是“http”或“https”的东西)。这是他们的设计。


推荐阅读