refactor: splitout registerUser into its own function. Make the'Confirm your identity by entering your account password below.' flow optional
This commit is contained in:
@@ -74,6 +74,40 @@ async function setDevToolElementCallDevUrl(page: Page): Promise<void> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a new user and returns page, clientHandle and mxId.
|
||||||
|
*/
|
||||||
|
async function registerUser(
|
||||||
|
browser: typeof test["browser"],
|
||||||
|
username: string,
|
||||||
|
): Promise<{ page: Page; clientHandle: JSHandle<MatrixClient>; mxId: string }> {
|
||||||
|
const userContext = await browser.newContext({
|
||||||
|
reducedMotion: "reduce",
|
||||||
|
});
|
||||||
|
const page = await userContext.newPage();
|
||||||
|
await page.goto("http://localhost:8081/#/welcome");
|
||||||
|
await page.getByRole("link", { name: "Create Account" }).click();
|
||||||
|
await page.getByRole("textbox", { name: "Username" }).fill(username);
|
||||||
|
await page.getByRole("textbox", { name: "Password", exact: true }).fill(PASSWORD);
|
||||||
|
await page.getByRole("textbox", { name: "Confirm password" }).click();
|
||||||
|
await page.getByRole("textbox", { name: "Confirm password" }).fill(PASSWORD);
|
||||||
|
await page.getByRole("button", { name: "Register" }).click();
|
||||||
|
const continueButton = page.getByRole("button", { name: "Continue" });
|
||||||
|
if (await continueButton.isVisible().catch(() => false)) {
|
||||||
|
await page.getByRole("textbox", { name: "Password", exact: true }).fill(PASSWORD);
|
||||||
|
await continueButton.click();
|
||||||
|
}
|
||||||
|
await expect(
|
||||||
|
page.getByRole("heading", { name: `Welcome ${username}` })
|
||||||
|
).toBeVisible();
|
||||||
|
await setDevToolElementCallDevUrl(page);
|
||||||
|
|
||||||
|
const clientHandle = await page.evaluateHandle(() => window.mxMatrixClientPeg.get());
|
||||||
|
const mxId = (await clientHandle.evaluate((cli) => cli.getUserId(), clientHandle))!;
|
||||||
|
|
||||||
|
return { page, clientHandle, mxId };
|
||||||
|
}
|
||||||
|
|
||||||
export const widgetTest = test.extend<MyFixtures>({
|
export const widgetTest = test.extend<MyFixtures>({
|
||||||
asWidget: async ({ browser, context }, pUse) => {
|
asWidget: async ({ browser, context }, pUse) => {
|
||||||
await context.route(`http://localhost:8081/config.json*`, async (route) => {
|
await context.route(`http://localhost:8081/config.json*`, async (route) => {
|
||||||
@@ -83,75 +117,11 @@ export const widgetTest = test.extend<MyFixtures>({
|
|||||||
const userA = `brooks_${Date.now()}`;
|
const userA = `brooks_${Date.now()}`;
|
||||||
const userB = `whistler_${Date.now()}`;
|
const userB = `whistler_${Date.now()}`;
|
||||||
|
|
||||||
const user1Context = await browser.newContext({
|
// Register users
|
||||||
reducedMotion: "reduce",
|
const { page: ewPage1, clientHandle: brooksClientHandle, mxId: brooksMxId } =
|
||||||
});
|
await registerUser(browser, userA);
|
||||||
const ewPage1 = await user1Context.newPage();
|
const { page: ewPage2, clientHandle: whistlerClientHandle, mxId: whistlerMxId } =
|
||||||
// Register the first user
|
await registerUser(browser, userB);
|
||||||
await ewPage1.goto("http://localhost:8081/#/welcome");
|
|
||||||
await ewPage1.getByRole("link", { name: "Create Account" }).click();
|
|
||||||
await ewPage1.getByRole("textbox", { name: "Username" }).fill(userA);
|
|
||||||
await ewPage1
|
|
||||||
.getByRole("textbox", { name: "Password", exact: true })
|
|
||||||
.fill(PASSWORD);
|
|
||||||
await ewPage1.getByRole("textbox", { name: "Confirm password" }).click();
|
|
||||||
await ewPage1
|
|
||||||
.getByRole("textbox", { name: "Confirm password" })
|
|
||||||
.fill(PASSWORD);
|
|
||||||
await ewPage1.getByRole("button", { name: "Register" }).click();
|
|
||||||
await expect(
|
|
||||||
ewPage1.getByRole("button", { name: "Continue" }),
|
|
||||||
).toBeVisible();
|
|
||||||
await ewPage1
|
|
||||||
.getByRole("textbox", { name: "Password", exact: true })
|
|
||||||
.fill(PASSWORD);
|
|
||||||
await ewPage1.getByRole("button", { name: "Continue" }).click();
|
|
||||||
await expect(
|
|
||||||
ewPage1.getByRole("heading", { name: `Welcome ${userA}` }),
|
|
||||||
).toBeVisible();
|
|
||||||
await setDevToolElementCallDevUrl(ewPage1);
|
|
||||||
|
|
||||||
const brooksClientHandle = await ewPage1.evaluateHandle(() =>
|
|
||||||
window.mxMatrixClientPeg.get(),
|
|
||||||
);
|
|
||||||
const brooksMxId = (await brooksClientHandle.evaluate((cli) => {
|
|
||||||
return cli.getUserId();
|
|
||||||
}, brooksClientHandle))!;
|
|
||||||
|
|
||||||
const user2Context = await browser.newContext({
|
|
||||||
reducedMotion: "reduce",
|
|
||||||
});
|
|
||||||
const ewPage2 = await user2Context.newPage();
|
|
||||||
// Register the second user
|
|
||||||
await ewPage2.goto("http://localhost:8081/#/welcome");
|
|
||||||
await ewPage2.getByRole("link", { name: "Create Account" }).click();
|
|
||||||
await ewPage2.getByRole("textbox", { name: "Username" }).fill(userB);
|
|
||||||
await ewPage2
|
|
||||||
.getByRole("textbox", { name: "Password", exact: true })
|
|
||||||
.fill(PASSWORD);
|
|
||||||
await ewPage2.getByRole("textbox", { name: "Confirm password" }).click();
|
|
||||||
await ewPage2
|
|
||||||
.getByRole("textbox", { name: "Confirm password" })
|
|
||||||
.fill(PASSWORD);
|
|
||||||
await ewPage2.getByRole("button", { name: "Register" }).click();
|
|
||||||
await expect(
|
|
||||||
ewPage2.getByRole("button", { name: "Continue" }),
|
|
||||||
).toBeVisible();
|
|
||||||
await ewPage2
|
|
||||||
.getByRole("textbox", { name: "Password", exact: true })
|
|
||||||
.fill(PASSWORD);
|
|
||||||
await ewPage2.getByRole("button", { name: "Continue" }).click();
|
|
||||||
await expect(
|
|
||||||
ewPage2.getByRole("heading", { name: `Welcome ${userB}` }),
|
|
||||||
).toBeVisible();
|
|
||||||
await setDevToolElementCallDevUrl(ewPage2);
|
|
||||||
|
|
||||||
const whistlerClientHandle = await ewPage2.evaluateHandle(() =>
|
|
||||||
window.mxMatrixClientPeg.get(),
|
|
||||||
);
|
|
||||||
const whistlerMxId = (await whistlerClientHandle.evaluate((cli) => {
|
|
||||||
return cli.getUserId();
|
|
||||||
}, whistlerClientHandle))!;
|
|
||||||
|
|
||||||
// Invite the second user
|
// Invite the second user
|
||||||
await ewPage1.getByRole("button", { name: "Add room" }).click();
|
await ewPage1.getByRole("button", { name: "Add room" }).click();
|
||||||
|
|||||||
Reference in New Issue
Block a user