在Chrome中运行时如何使用赛普拉斯测试文件下载

Und*_*ion 5 javascript testing google-chrome download cypress

我进行了以下测试,需要验证单击链接是否可以下载PDF。这一点特别重要,因为我们正在使用Gatsby,而后者又使用Reach Router的链接组件,并且配置错误相对容易,以便路由器接管链接并导航到404页面而不是启动下载。

describe.skip(`Downloads`, () => {
  it(`Downloads the expected file`, () => {
    cy.visit(pagePath)
    cy.getByHref(downloadPath)
      .should(`have.attr`, `target`, `_blank`)
      .click()
    cy.location(`pathname`).should(`eq`, pagePath)
  })
})
Run Code Online (Sandbox Code Playgroud)

虽然这并不完美,但它至少会检查单击链接后是否没有导航。

问题在于,当使用cy run进行运行此测试(在Chrome中运行测试)时,由于Chrome的下载对话框,该测试将挂起。

如何防止测试挂起?

请注意,downloadPath解析为静态目录中的pdf,例如/static/example.pdf。没有服务器组件。

还要注意,这是一个不同的问题:我如何使用Cypress.io断言文件下载已经启动而没有实际下载?

cha*_*ner 1

实际上我搜索了很多,发现安装了浏览器扩展后不可能在无头模式下运行测试,因为无头模式下唯一支持的浏览器是 Electron,而 Electron 不支持文档中所述的扩展。

尚不支持运行无头 Chrome。请参阅此问题:#488 https://github.com/cypress-io/cypress/issues/488

这是一个不太老的问题,2019 年 2 月就被标记了

https://github.com/cypress-io/cypress/issues/832 https://github.com/cypress-io/cypress/issues/1235

  • 感谢您的回复,但是我没有提到浏览器扩展 - 这只是当链接设置了“下载”属性时 Chrome 的默认下载行为。 (3认同)