在 运行 时间更改 cypress 测试访问的 URL

Change which URL the cypress test visits at run time

虽然我正在开发我的网站,但 URL 变化很大,如果我需要重新启动什么的。所以一次可能是 0.0.0.0:5500 而下一次可能是 0.0.0.0:34935.

因此,如果我将:cy.visit('url) 设置为常量 URL,那么我将不得不不断更改它才能正常工作。

所以我想知道是否有办法在运行时输入 URL 并使用它。

你做错了。为什么您的应用程序端口一直在变化。与其要求您的开发人员让您的应用程序在端口 8080 或某个固定端口上可访问,不如探索其他根本不需要的选项。

您可以将 baseUrl 作为命令行选项传入。

cypress run --config baseUrl=0.0.0.0:33935
cypress run --config baseUrl=0.0.0.0:5500

如果您不想使用命令行变量,但想严格执行是否可以到达端点,则可以覆盖 cy.visit() 命令以在导航之前 ping 端点之一

Cypress.Commands.overwrite('visit', (originalFn, url, options) => {
  cy.request({ url: 'http://0.0.0.0:5500', failOnStatusCode: false}).then((res) => {
    if (res.status === 200) {
      return '0.0.0.0:5500'
    }
    return '0.0.0.0:33935'
  }).then((baseUrl) => {
    return originalFn(`${baseUrl}${url}`, options);
  });
}) 

请注意,此解决方案将在每个 cy.visit() 之前对您的端点执行 ping 操作。可能有一种更优雅的方法可以做到这一点,涉及在 cypress.json 中为您的 baseUrl 设置一个虚拟 url,并且只有在 Cypress.env('baseUrl') 仍然是虚拟 [=] 时才执行此请求24=].