Fix flakiness of cypress crypto tests (#8731)

This commit is contained in:
Faye Duxovni 2022-06-01 04:57:53 -04:00 committed by GitHub
parent e11dbae89b
commit 23cc1aff73
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -19,13 +19,17 @@ limitations under the License.
import type { MatrixClient } from "matrix-js-sdk/src/matrix"; import type { MatrixClient } from "matrix-js-sdk/src/matrix";
import { SynapseInstance } from "../../plugins/synapsedocker"; import { SynapseInstance } from "../../plugins/synapsedocker";
function waitForEncryption(cli: MatrixClient, roomId: string, win: Cypress.AUTWindow, resolve: () => void) { function waitForEncryption(cli: MatrixClient, roomId: string, win: Cypress.AUTWindow): Promise<void> {
cli.crypto.cryptoStore.getEndToEndRooms(null, (result) => { return new Promise<void>(resolve => {
if (result[roomId]) { const onEvent = () => {
resolve(); cli.crypto.cryptoStore.getEndToEndRooms(null, (result) => {
} else { if (result[roomId]) {
cli.once(win.matrixcs.RoomStateEvent.Update, () => waitForEncryption(cli, roomId, win, resolve)); cli.off(win.matrixcs.ClientEvent.Event, onEvent);
} resolve();
}
});
};
cli.on(win.matrixcs.ClientEvent.Event, onEvent);
}); });
} }
@ -61,15 +65,15 @@ describe("Cryptography", () => {
cy.window(), cy.window(),
]).then(([bot, roomId, win]) => { ]).then(([bot, roomId, win]) => {
cy.inviteUser(roomId, bot.getUserId()); cy.inviteUser(roomId, bot.getUserId());
cy.visit("/#/room/" + roomId);
cy.wrap( cy.wrap(
new Promise<void>(resolve => waitForEncryption(
waitForEncryption(bot, roomId, win, resolve), bot, roomId, win,
).then(() => bot.sendMessage(roomId, { ).then(() => bot.sendMessage(roomId, {
body: "Top secret message", body: "Top secret message",
msgtype: "m.text", msgtype: "m.text",
})), })),
); );
cy.visit("/#/room/" + roomId);
}); });
cy.get(".mx_RoomView_body .mx_cryptoEvent").should("contain", "Encryption enabled"); cy.get(".mx_RoomView_body .mx_cryptoEvent").should("contain", "Encryption enabled");