通过 Cypress 的 Web 网关登录超时

Dav*_*rín 7 javascript testing automation cypress

我正在尝试对我的网络应用程序执行一些测试,但要做到这一点,我必须登录到外部网站,为了做到这一点,我的 beforeEach 语句是:

beforeEach(()=>{
    cy.visit('http://localhost:3001/')
    cy.get('#username')
        .type('user');
    cy.get('#password')
        .type('pass');
    cy.get('#fm1 > div > section.row.btn-row > input.btn.btn-submit.btn-block')
        .click();
})
Run Code Online (Sandbox Code Playgroud)

预期的行为是,当我转到 localhost:3001 时,它会将我重定向到另一个网站,我在其中设置登录凭据,单击登录后,它会将我重定向到原始站点。

问题是在外部网站上我收到了这个

CypressError:等待“60000ms”远程页面加载后超时。

您的页面未在“60000 毫秒”内触发其“加载”事件。

您可以尝试增加“cypress.json”中的“pageLoadTimeout”值以等待更长时间。

在所有样式表和脚本下载完毕之前,浏览器不会触发“load”事件。

当发生此“加载”事件时,赛普拉斯将继续运行命令。

由于此错误发生在“before every”挂钩期间,我们将跳过当前套件中的剩余测试:“Test Drag and Drop, in cypr...”

我尝试增加 pageLoadTimeout 但它不起作用。

小智 10

如果您的页面上存在无法在 cypress 浏览器内部解析的外部资源,则可能会发生这种情况。也许您的环境就是这种情况?在更新企业应用程序中的标头组件后,我遇到了类似的问题。突然间,所有 e2e 测试都因“加载事件未触发”错误而失败。

在做了一些广泛的研究后,我偶然发现新插入的公司徽标是通过绝对外部 URL 包含的。通过在我们的 CI 中执行 cypress,该 URL 由于防火墙规则而被阻止。这导致页面加载事件被阻止,从而导致测试失败。将图像 URL 更改为相对路径后,一切又正常了。

那么,也许您的“外部”网站也有类似的案例?!