Skip to content

Commit 94c7056

Browse files
committed
Playwright tests for resetting our identity
1 parent 863f269 commit 94c7056

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

playwright/e2e/login/login-consent.spec.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,43 @@ test.describe("Login", () => {
288288
await expect(h1).toBeVisible();
289289
});
290290
});
291+
292+
test("Can reset identity to become verified", async ({ page, homeserver, request, credentials }) => {
293+
// Log in
294+
const res = await request.post(`${homeserver.baseUrl}/_matrix/client/v3/keys/device_signing/upload`, {
295+
headers: { Authorization: `Bearer ${credentials.accessToken}` },
296+
data: DEVICE_SIGNING_KEYS_BODY,
297+
});
298+
if (res.status() / 100 !== 2) {
299+
console.log("Uploading dummy keys failed", await res.json());
300+
}
301+
expect(res.status() / 100).toEqual(2);
302+
303+
await page.goto("/");
304+
await login(page, homeserver, credentials);
305+
306+
await expect(page.getByRole("heading", { name: "Verify this device", level: 1 })).toBeVisible();
307+
308+
// Start the reset process
309+
await page.getByRole("button", { name: "Proceed with reset" }).click();
310+
311+
// First try cancelling and restarting
312+
await page.getByRole("button", { name: "Cancel" }).click();
313+
await page.getByRole("button", { name: "Proceed with reset" }).click();
314+
315+
// Then click outside the dialog and restart
316+
await page.getByRole("link", { name: "Powered by Matrix" }).click({ force: true });
317+
await page.getByRole("button", { name: "Proceed with reset" }).click();
318+
319+
// Finally we actually continue
320+
await page.getByRole("button", { name: "Continue" }).click();
321+
await page.getByPlaceholder("Password").fill(credentials.password);
322+
await page.getByRole("button", { name: "Continue" }).click();
323+
324+
// We end up at the Home screen
325+
await expect(page).toHaveURL(/\/#\/home$/, { timeout: 10000 });
326+
await expect(page.getByRole("heading", { name: "Welcome Dave", exact: true })).toBeVisible();
327+
});
291328
});
292329
});
293330

playwright/e2e/settings/encryption-user-tab/encryption-tab.spec.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,4 +145,36 @@ test.describe("Encryption tab", () => {
145145
}
146146
});
147147
});
148+
149+
test.describe("when encryption is not set up", () => {
150+
test("'Verify this device' allows us to become verified", async ({
151+
page,
152+
user,
153+
credentials,
154+
app,
155+
}, workerInfo) => {
156+
const settings = await app.settings.openUserSettings("Encryption");
157+
158+
// Initially, our device is not verified
159+
await expect(settings.getByRole("heading", { name: "Device not verified" })).toBeVisible();
160+
161+
// We will reset our identity
162+
await settings.getByRole("button", { name: "Verify this device" }).click();
163+
await page.getByRole("button", { name: "Proceed with reset" }).click();
164+
165+
// First try cancelling and restarting
166+
await page.getByRole("button", { name: "Cancel" }).click();
167+
await page.getByRole("button", { name: "Proceed with reset" }).click();
168+
169+
// Then click outside the dialog and restart
170+
await page.locator("li").filter({ hasText: "Encryption" }).click({ force: true });
171+
await page.getByRole("button", { name: "Proceed with reset" }).click();
172+
173+
// Finally we actually continue
174+
await page.getByRole("button", { name: "Continue" }).click();
175+
176+
// Now we are verified, so we see the Key storage toggle
177+
await expect(settings.getByRole("heading", { name: "Key storage" })).toBeVisible();
178+
});
179+
});
148180
});

0 commit comments

Comments
 (0)