【问题标题】:Cypress timeout when response size is too large响应大小过大时赛普拉斯超时
【发布时间】:2020-05-15 21:02:30
【问题描述】:

问题

赛普拉斯在 GET 请求完成时返回超时。

说明

GET 使用 Cypress.io 请求

我应该从 API 收到大的(超过 15Mb)响应正文,但我有这个: “CypressError: cy.request() 超时等待来自服务器的响应 300000 毫秒。”

增加“responseTimeout”没有帮助......

我还在 POSTMAN 中检查了相同的请求,它以成功告终,总是最多 50 秒。

日志显示cypress中超时的请求实际上已经完成,所以我想这是cypress的问题

编辑:有我的代码示例,我已经尝试使用“异步”做一些事情,但仍然发生超时。通常每第二次测试都会因超时而失败,但这不是规则。

commands.js:

Cypress.Commands.add('getRequestLimit', (token, limit) => {
    cy.request({
        failOnStatusCode: false,
        url: '/endpoint',
        headers: {
            'Authorization': 'Bearer '+token
        },
        qs: {
            'limit' : limit,
        }
    })
});

cypress.json:

{  
    "baseUrl": "url",
    "chromeWebSecurity": false,
    "video": false,
    "numTestsKeptInMemory": 0,
    "responseTimeout": 500000,
    "pageLoadTimeout": 500000
}

测试文件:

it('Check query param "limit"', () => {
    const limit = 3;
    cy.getRequestLimit(token, limit)
        .then((response) => {
            expect(response.status).to.eq(200);
        });
});

it('Check query param "offset"', () => {
    const offset = 3;
    cy.getRequestOffset(token, offset)
        .then((response) => {
            expect(response.status).to.eq(200);
        });
});

【问题讨论】:

    标签: npm cypress


    【解决方案1】:

    尝试对您的 api 调用使用 async/await,这可以解决您的问题。

    文档在这里:async function MDN web docs

    如果不查看您的代码,很难确定。

    【讨论】:

      【解决方案2】:

      这是柏树问题,https://github.com/cypress-io/cypress/issues/6385

      现在它在 3.3.1 版本中运行良好

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多