diff --git a/cypress/e2e/create-room/create-room.spec.ts b/cypress/e2e/create-room/create-room.spec.ts deleted file mode 100644 index a5a81b03f5..0000000000 --- a/cypress/e2e/create-room/create-room.spec.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* -Copyright 2022-2023 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -/// - -import { HomeserverInstance } from "../../plugins/utils/homeserver"; - -describe("Create Room", () => { - let homeserver: HomeserverInstance; - - beforeEach(() => { - cy.startHomeserver("default").then((data) => { - homeserver = data; - - cy.initTestUser(homeserver, "Jim"); - }); - }); - - afterEach(() => { - cy.stopHomeserver(homeserver); - }); - - it("should allow us to create a public room with name, topic & address set", () => { - const name = "Test room 1"; - const topic = "This room is dedicated to this test and this test only!"; - - cy.openCreateRoomDialog().within(() => { - // Fill name & topic - cy.findByRole("textbox", { name: "Name" }).type(name); - cy.findByRole("textbox", { name: "Topic (optional)" }).type(topic); - // Change room to public - cy.findByRole("button", { name: "Room visibility" }).click(); - cy.findByRole("option", { name: "Public room" }).click(); - // Fill room address - cy.findByRole("textbox", { name: "Room address" }).type("test-room-1"); - // Submit - cy.findByRole("button", { name: "Create room" }).click(); - }); - - cy.url().should("contain", "/#/room/#test-room-1:localhost"); - - cy.get(".mx_LegacyRoomHeader").within(() => { - cy.findByText(name); - cy.findByText(topic); - }); - }); -}); diff --git a/playwright/e2e/create-room/create-room.spec.ts b/playwright/e2e/create-room/create-room.spec.ts new file mode 100644 index 0000000000..0e5882e23c --- /dev/null +++ b/playwright/e2e/create-room/create-room.spec.ts @@ -0,0 +1,43 @@ +/* +Copyright 2022-2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { test, expect } from "../../element-web-test"; + +test.describe("Create Room", () => { + test.use({ displayName: "Jim" }); + + test("should allow us to create a public room with name, topic & address set", async ({ page, user, app }) => { + const name = "Test room 1"; + const topic = "This room is dedicated to this test and this test only!"; + + const dialog = await app.openCreateRoomDialog(); + // 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"); + // Submit + await dialog.getByRole("button", { name: "Create room" }).click(); + + await expect(page).toHaveURL(/\/#\/room\/#test-room-1:localhost/); + const header = page.locator(".mx_LegacyRoomHeader"); + await expect(header).toContainText(name); + await expect(header).toContainText(topic); + }); +}); diff --git a/playwright/pages/ElementAppPage.ts b/playwright/pages/ElementAppPage.ts index a913675f0c..1735877f5b 100644 --- a/playwright/pages/ElementAppPage.ts +++ b/playwright/pages/ElementAppPage.ts @@ -52,6 +52,15 @@ export class ElementAppPage { return this.page.locator(".mx_UserSettingsDialog"); } + /** + * Open room creation dialog. + */ + public async openCreateRoomDialog(): Promise { + await this.page.getByRole("button", { name: "Add room", exact: true }).click(); + await this.page.getByRole("menuitem", { name: "New room", exact: true }).click(); + return this.page.locator(".mx_CreateRoomDialog"); + } + /** * Create a room with given options. * @param options the options to apply when creating the room