En mi proyecto, tengo un conjunto de pruebas de extremo a extremo creadas con testcafe .
En algunos escenarios, el usuario/secuencia de comandos tiene que realizar algunas operaciones en la página, como hacer clic en un botón, que desencadena una llamada HTTP al BE para obtener algún resultado.
Dado que es una operación asíncrona (que puede llevar un poco de tiempo), me veo obligado a wait(X) para asegurarme de que la llamada HTTP haya respondido.
Por ejemplo:
test("should render result with ascending order when lowerPrice option got selected", async (t) => { const sortButton = Selector(".sortsortButton"); const lowerPriceSortSelector = Selector(".lowerPriceSortSelector"); const gridResult = Selector(".gridResult"); await t .click(sortButton) .click(lowerPriceSortSelector) .wait(5000) //<--- I want to avoid this! .expect(gridResult.exists).ok(); });Lo he comprobado pero en la documentación no he encontrado ninguna utilidad que permita esperar hasta que una determinada ruta haya respondido.
En el pasado, jugué con Cypress y tenía esta increíble función: https://docs.cypress.io/api/commands/wait#Alias
// Wait for the route aliased as 'getAccount' to respond // without changing or stubbing its response cy.intercept('/accounts/*').as('getAccount') cy.visit('/accounts/123') cy.wait('@getAccount').then((interception) => { // we can now access the low level interception // that contains the request body, // response body, status, etc }) ¿Hay algo similar en Testcafe?
Si no, ¿cómo puedo hacer para evitar esperar un período de tiempo arbitrario?