Port the flaky add/remove 3pid test to playwright (#28226)
Fixes https://github.com/element-hq/element-web/issues/28160
This commit is contained in:
parent
a9bea774f9
commit
cb383efb42
2 changed files with 47 additions and 51 deletions
|
@ -140,4 +140,51 @@ test.describe("Account user settings tab", () => {
|
||||||
await expect(page.locator(".mx_UserMenu .mx_BaseAvatar").getByText("A")).toBeVisible(); // Alice
|
await expect(page.locator(".mx_UserMenu .mx_BaseAvatar").getByText("A")).toBeVisible(); // Alice
|
||||||
await expect(page.locator(".mx_RoomView_wrapper .mx_BaseAvatar").getByText("A")).toBeVisible(); // Alice
|
await expect(page.locator(".mx_RoomView_wrapper .mx_BaseAvatar").getByText("A")).toBeVisible(); // Alice
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ported to a playwright test because the jest test was very flakey for no obvious reason
|
||||||
|
test("should display an error if the code is incorrect when adding a phone number", async ({ uut, page }) => {
|
||||||
|
const dummyUrl = "https://nowhere.dummy/_matrix/client/unstable/add_threepid/msisdn/submit_token";
|
||||||
|
|
||||||
|
await page.route(
|
||||||
|
`**/_matrix/client/v3/account/3pid/msisdn/requestToken`,
|
||||||
|
async (route) => {
|
||||||
|
await route.fulfill({
|
||||||
|
json: {
|
||||||
|
success: true,
|
||||||
|
sid: "1",
|
||||||
|
msisdn: "447700900000",
|
||||||
|
intl_fmt: "+44 7700 900000",
|
||||||
|
submit_url: dummyUrl,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
{ times: 1 },
|
||||||
|
);
|
||||||
|
|
||||||
|
await page.route(
|
||||||
|
dummyUrl,
|
||||||
|
async (route) => {
|
||||||
|
await route.fulfill({
|
||||||
|
status: 400,
|
||||||
|
json: {
|
||||||
|
errcode: "M_THREEPID_AUTH_FAILED",
|
||||||
|
error: "That code is definitely wrong",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
{ times: 1 },
|
||||||
|
);
|
||||||
|
|
||||||
|
const phoneSection = page.getByTestId("mx_AccountPhoneNumbers");
|
||||||
|
await phoneSection.getByRole("textbox", { name: "Phone Number" }).fill("07700900000");
|
||||||
|
await phoneSection.getByRole("button", { name: "Add" }).click();
|
||||||
|
|
||||||
|
await phoneSection
|
||||||
|
.getByRole("textbox", { name: "Verification code" })
|
||||||
|
.fill("A small eurasian field mouse dancing the paso doble");
|
||||||
|
|
||||||
|
await phoneSection.getByRole("button", { name: "Continue" }).click();
|
||||||
|
|
||||||
|
await expect(page.getByRole("heading", { name: "Unable to verify phone number." })).toBeVisible();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -254,57 +254,6 @@ describe("AddRemoveThreepids", () => {
|
||||||
expect(onChangeFn).toHaveBeenCalled();
|
expect(onChangeFn).toHaveBeenCalled();
|
||||||
}, 10000);
|
}, 10000);
|
||||||
|
|
||||||
it("should display an error if the code is incorrect", async () => {
|
|
||||||
const onChangeFn = jest.fn();
|
|
||||||
const createDialogFn = jest.spyOn(Modal, "createDialog");
|
|
||||||
mocked(client.requestAdd3pidMsisdnToken).mockResolvedValue({
|
|
||||||
sid: "1",
|
|
||||||
msisdn: PHONE1.address,
|
|
||||||
intl_fmt: "+" + PHONE1.address,
|
|
||||||
success: true,
|
|
||||||
submit_url: "https://example.dummy",
|
|
||||||
});
|
|
||||||
|
|
||||||
render(
|
|
||||||
<AddRemoveThreepids
|
|
||||||
mode="hs"
|
|
||||||
medium={ThreepidMedium.Phone}
|
|
||||||
threepids={[]}
|
|
||||||
isLoading={false}
|
|
||||||
onChange={onChangeFn}
|
|
||||||
/>,
|
|
||||||
{
|
|
||||||
wrapper: clientProviderWrapper,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
const input = screen.getByRole("textbox", { name: "Phone Number" });
|
|
||||||
await userEvent.type(input, PHONE1_LOCALNUM);
|
|
||||||
|
|
||||||
const countryDropdown = screen.getByRole("button", { name: /Country Dropdown/ });
|
|
||||||
await userEvent.click(countryDropdown);
|
|
||||||
const gbOption = screen.getByRole("option", { name: "🇬🇧 United Kingdom (+44)" });
|
|
||||||
await userEvent.click(gbOption);
|
|
||||||
|
|
||||||
const addButton = screen.getByRole("button", { name: /Add/ });
|
|
||||||
await userEvent.click(addButton);
|
|
||||||
|
|
||||||
mocked(client).addThreePidOnly.mockRejectedValueOnce(new Error("Unauthorized"));
|
|
||||||
|
|
||||||
const verificationInput = screen.getByRole("textbox", { name: "Verification code" });
|
|
||||||
await userEvent.type(verificationInput, "123457");
|
|
||||||
|
|
||||||
const continueButton = screen.getByRole("button", { name: /Continue/ });
|
|
||||||
await userEvent.click(continueButton);
|
|
||||||
|
|
||||||
expect(createDialogFn).toHaveBeenCalledWith(expect.anything(), {
|
|
||||||
description: "Unauthorized",
|
|
||||||
title: "Unable to verify phone number.",
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(onChangeFn).not.toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should remove an email address", async () => {
|
it("should remove an email address", async () => {
|
||||||
const onChangeFn = jest.fn();
|
const onChangeFn = jest.fn();
|
||||||
render(
|
render(
|
||||||
|
|
Loading…
Reference in a new issue