gpt4 book ai didi

javascript - 在 Cypress 测试中,如果预期的 XHR 请求未发出 : waitUntil() with click XHR condition? ,如何重试按钮单击?

转载 作者:行者123 更新时间:2023-12-02 23:03:33 30 4
gpt4 key购买 nike

在非常高的级别上,我们单击一个命令建筑物控制点的按钮;打开或关闭灯。单击应该向服务器发送 POST 请求。问题是有时单击按钮但 POST 请求不会发出。该按钮没有指示它是否已被单击的功能(小幅增强)。

目前,我想使用 Cypress 插件 waitUntil() 来解决这个问题。 .

    // define routes
cy.server();
cy.route('POST', '\*\*/pointcommands').as('sendCommand');

// setup checkFunction for cy.waitUntil()
const waitForPost200 = () => cy.wait('@sendCommand', {timeout: 10000}).then(xhr => cy.wrap(xhr).its('status').should('eq', 200));

// setup jQuery for cy.pipe()
const click = $el => $el.click();

// click the button
cy.get('.marengo-ok')
.should('be.visible')
.pipe(click);
// need to pass in a synchronous should() check so that the click is retried. How can we achieve this with waitUntil ?

// wait until checkFunction waitForPost200() returns truthy
cy.waitUntil( (): any => waitForPost200(), {
timeout: 10000,
interval: 1000,
errorMsg: 'POST not sent `enter code here`within time limit'
});

最佳答案

我认为根本问题是测试运行程序在附加事件监听器之前单击按钮。请参阅 https://www.cypress.io/blog/2019/01/22/when-can-the-test-click/ 中的讨论我的建议(除了使用 waitUntil 插件)是使用 https://github.com/NicholasBoll/cypress-pipe它提供了cy.pipe并使用jQuery方法单击按钮

// cypress-pipe does not retry any Cypress commands
// so we need to click on the element using
// jQuery method "$el.click()" and not "cy.click()"
const click = $el => $el.click()

cy.get('.owl-dt-popup')
.should('be.visible')
.contains('.owl-dt-calendar-cell-content', dayRegex)
.pipe(click)
.should($el => {
expect($el).to.not.be.visible
})

enter image description here

关于javascript - 在 Cypress 测试中,如果预期的 XHR 请求未发出 : waitUntil() with click XHR condition? ,如何重试按钮单击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57695328/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com