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

46 lines
1.6 KiB
TypeScript

/*
Copyright 2024 New Vector Ltd.
Copyright 2022 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
import { test, expect } from "../../element-web-test";
test.describe("Consent", () => {
test.use({
startHomeserverOpts: "consent",
displayName: "Bob",
});
test("should prompt the user to consent to terms when server deems it necessary", async ({
context,
page,
user,
app,
}) => {
// Attempt to create a room using the js-sdk which should return an error with `M_CONSENT_NOT_GIVEN`
await app.client.createRoom({}).catch(() => {});
const newPagePromise = context.waitForEvent("page");
const dialog = page.locator(".mx_QuestionDialog");
// Accept terms & conditions
await expect(dialog.getByRole("heading", { name: "Terms and Conditions" })).toBeVisible();
await page.getByRole("button", { name: "Review terms and conditions" }).click();
const newPage = await newPagePromise;
await newPage.locator('[type="submit"]').click();
await expect(newPage.getByText("Danke schoen")).toBeVisible();
// go back to the app
await page.goto("/");
// wait for the app to re-load
await expect(page.locator(".mx_MatrixChat")).toBeVisible();
// attempt to perform the same action again and expect it to not fail
await app.client.createRoom({ name: "Test Room" });
await expect(page.getByText("Test Room")).toBeVisible();
});
});