mirror of https://github.com/vector-im/riot-web
Playwright: deflake verification tests (#28289)
Wait for the QR code to be rendered, in an attempt to deflake these twopull/28294/head
parent
5b5348ec1e
commit
1cf1a0c4ee
|
@ -60,6 +60,11 @@ test.describe("User verification", () => {
|
||||||
// Accept
|
// Accept
|
||||||
await toast.getByRole("button", { name: "Verify User" }).click();
|
await toast.getByRole("button", { name: "Verify User" }).click();
|
||||||
|
|
||||||
|
// Wait for the QR code to be rendered. If we don't do this, then the QR code can be rendered just as
|
||||||
|
// Playwright tries to click the "Verify by emoji" button, which seems to make it miss the button.
|
||||||
|
// (richvdh: I thought Playwright was supposed to be resilient to such things, but empirically not.)
|
||||||
|
await expect(page.getByAltText("QR Code")).toBeVisible();
|
||||||
|
|
||||||
// request verification by emoji
|
// request verification by emoji
|
||||||
await page.locator("#mx_RightPanel").getByRole("button", { name: "Verify by emoji" }).click();
|
await page.locator("#mx_RightPanel").getByRole("button", { name: "Verify by emoji" }).click();
|
||||||
|
|
||||||
|
@ -101,13 +106,20 @@ test.describe("User verification", () => {
|
||||||
const toast = await toasts.getToast("Verification requested");
|
const toast = await toasts.getToast("Verification requested");
|
||||||
await toast.getByRole("button", { name: "Verify User" }).click();
|
await toast.getByRole("button", { name: "Verify User" }).click();
|
||||||
|
|
||||||
|
// Wait for the QR code to be rendered. If we don't do this, then the QR code can be rendered just as
|
||||||
|
// Playwright tries to click the "Verify by emoji" button, which seems to make it miss the button.
|
||||||
|
// (richvdh: I thought Playwright was supposed to be resilient to such things, but empirically not.)
|
||||||
|
await expect(page.getByAltText("QR Code")).toBeVisible();
|
||||||
|
|
||||||
// request verification by emoji
|
// request verification by emoji
|
||||||
await page.locator("#mx_RightPanel").getByRole("button", { name: "Verify by emoji" }).click();
|
await page.locator("#mx_RightPanel").getByRole("button", { name: "Verify by emoji" }).click();
|
||||||
|
|
||||||
/* on the bot side, wait for the verifier to exist ... */
|
/* on the bot side, wait for the verifier to exist ... */
|
||||||
const botVerifier = await awaitVerifier(bobVerificationRequest);
|
const botVerifier = await awaitVerifier(bobVerificationRequest);
|
||||||
// ... confirm ...
|
// ... and confirm. We expect the verification to fail; we catch the error on the DOM side
|
||||||
botVerifier.evaluate((verifier) => verifier.verify()).catch(() => {});
|
// to stop playwright marking the evaluate as failing in the UI.
|
||||||
|
const botVerification = botVerifier.evaluate((verifier) => verifier.verify().catch(() => {}));
|
||||||
|
|
||||||
// ... and abort the verification
|
// ... and abort the verification
|
||||||
await page.getByRole("button", { name: "They don't match" }).click();
|
await page.getByRole("button", { name: "They don't match" }).click();
|
||||||
|
|
||||||
|
@ -115,6 +127,8 @@ test.describe("User verification", () => {
|
||||||
await expect(dialog.getByText("Your messages are not secure")).toBeVisible();
|
await expect(dialog.getByText("Your messages are not secure")).toBeVisible();
|
||||||
await dialog.getByRole("button", { name: "OK" }).click();
|
await dialog.getByRole("button", { name: "OK" }).click();
|
||||||
await expect(dialog).not.toBeVisible();
|
await expect(dialog).not.toBeVisible();
|
||||||
|
|
||||||
|
await botVerification;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue