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