Fix unstable cypress test

This commit is contained in:
Michael Telatynski 2023-01-13 10:25:50 +00:00
parent fec67591e6
commit 2acf78a9e4
No known key found for this signature in database
GPG key ID: 98BC6A2B829297FE

View file

@ -82,9 +82,27 @@ function sendActionFromIntegrationManager(integrationManagerUrl: string, targetR
}); });
} }
function clickUntilGone(selector: string, attempt = 0) {
if (attempt === 11) {
throw new Error("clickUntilGone attempt count exceeded");
}
cy.get(selector)
.last()
.click()
.then(($button) => {
const exists = Cypress.$(selector).length > 0;
if (exists) {
clickUntilGone(selector, ++attempt);
}
});
}
function expectKickedMessage(shouldExist: boolean) { function expectKickedMessage(shouldExist: boolean) {
// Expand any event summaries // Expand any event summaries, we can't use a click multiple here because clicking one might de-render others
cy.get(".mx_GenericEventListSummary_toggle[aria-expanded=false]").click({ multiple: true }); // This is quite horrible but seems the most stable way of clicking 0-N buttons,
// one at a time with a full re-evaluation after each click
clickUntilGone(".mx_GenericEventListSummary_toggle[aria-expanded=false]");
// Check for the event message (or lack thereof) // Check for the event message (or lack thereof)
cy.contains(".mx_EventTile_line", `${USER_DISPLAY_NAME} removed ${BOT_DISPLAY_NAME}: ${KICK_REASON}`).should( cy.contains(".mx_EventTile_line", `${USER_DISPLAY_NAME} removed ${BOT_DISPLAY_NAME}: ${KICK_REASON}`).should(