diff --git a/playwright/e2e/room/create-room.spec.ts b/playwright/e2e/room/create-room.spec.ts index 01c4c26bcd..2fd49de75a 100644 --- a/playwright/e2e/room/create-room.spec.ts +++ b/playwright/e2e/room/create-room.spec.ts @@ -5,14 +5,17 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ +import { SettingLevel } from "../../../src/settings/SettingLevel"; import { test, expect } from "../../element-web-test"; +const name = "Test room"; +const topic = "A decently explanatory topic for a test room."; + test.describe("Create Room", () => { test.use({ displayName: "Jim" }); - test("should allow us to create a public room with name, topic & address set", { tag: "@screenshot" }, async ({ page, user, app }) => { - const name = "Test room 1"; - const topic = "This room is dedicated to this test and this test only!"; + + test("should create a public room with name, topic & address set", { tag: "@screenshot" }, async ({ page, user, app }) => { const dialog = await app.openCreateRoomDialog(); // Fill name & topic @@ -30,6 +33,29 @@ test.describe("Create Room", () => { await dialog.getByRole("button", { name: "Create room" }).click(); + await expect(page).toHaveURL(new RegExp(`/#/room/#test-room-1:${user.homeServer}`)); + const header = page.locator(".mx_RoomHeader"); + await expect(header).toContainText(name); + }); + + test("should create a video room", { tag: "@screenshot" }, async ({ page, user, app }) => { + await app.settings.setValue("feature_video_rooms", null, SettingLevel.DEVICE, true); + + const dialog = await app.openCreateRoomDialog("New video room"); + // Fill name & topic + await dialog.getByRole("textbox", { name: "Name" }).fill(name); + await dialog.getByRole("textbox", { name: "Topic" }).fill(topic); + // Change room to public + await dialog.getByRole("button", { name: "Room visibility" }).click(); + await dialog.getByRole("option", { name: "Public room" }).click(); + // Fill room address + await dialog.getByRole("textbox", { name: "Room address" }).fill("test-room-1"); + // Snapshot it + await expect(dialog).toMatchScreenshot("create-video-room.png"); + + // Submit + await dialog.getByRole("button", { name: "Create video room" }).click(); + await expect(page).toHaveURL(new RegExp(`/#/room/#test-room-1:${user.homeServer}`)); const header = page.locator(".mx_RoomHeader"); await expect(header).toContainText(name); diff --git a/playwright/pages/ElementAppPage.ts b/playwright/pages/ElementAppPage.ts index afc814b3e1..ccc1985c0a 100644 --- a/playwright/pages/ElementAppPage.ts +++ b/playwright/pages/ElementAppPage.ts @@ -51,9 +51,9 @@ export class ElementAppPage { /** * Open room creation dialog. */ - public async openCreateRoomDialog(): Promise { + public async openCreateRoomDialog(roomKindname: "New room"|"New video room" = "New room"): Promise { await this.page.getByRole("button", { name: "Add room", exact: true }).click(); - await this.page.getByRole("menuitem", { name: "New room", exact: true }).click(); + await this.page.getByRole("menuitem", { name: roomKindname, exact: true }).click(); return this.page.locator(".mx_CreateRoomDialog"); } diff --git a/playwright/pages/settings.ts b/playwright/pages/settings.ts index a08ca65f34..fbccf38fea 100644 --- a/playwright/pages/settings.ts +++ b/playwright/pages/settings.ts @@ -43,7 +43,7 @@ export class Settings { * @param {*} value The new value of the setting, may be null. * @return {Promise} Resolves when the setting has been changed. */ - public async setValue(settingName: string, roomId: string, level: SettingLevel, value: any): Promise { + public async setValue(settingName: string, roomId: string|null, level: SettingLevel, value: any): Promise { return this.page.evaluate< Promise, { diff --git a/playwright/snapshots/room/create-room.spec.ts/create-video-room-linux.png b/playwright/snapshots/room/create-room.spec.ts/create-video-room-linux.png new file mode 100644 index 0000000000..d27201dad6 Binary files /dev/null and b/playwright/snapshots/room/create-room.spec.ts/create-video-room-linux.png differ