From d8151d6b010252f03984d8ddb413ebe27422057d Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Thu, 6 Mar 2025 09:42:07 +0100 Subject: [PATCH] test(room list): wait for the row role to be removed, update a11y role and add tests to role observer --- .../rooms/RoomListPanel/RoomList-test.tsx | 29 +++++++++++++--- .../__snapshots__/RoomList-test.tsx.snap | 34 ++++++++++++------- 2 files changed, 46 insertions(+), 17 deletions(-) diff --git a/test/unit-tests/components/views/rooms/RoomListPanel/RoomList-test.tsx b/test/unit-tests/components/views/rooms/RoomListPanel/RoomList-test.tsx index bbf0edbf5e..2eee4ca3d9 100644 --- a/test/unit-tests/components/views/rooms/RoomListPanel/RoomList-test.tsx +++ b/test/unit-tests/components/views/rooms/RoomListPanel/RoomList-test.tsx @@ -34,19 +34,38 @@ describe("", () => { jest.spyOn(DMRoomMap.shared(), "getUserIdForRoomId").mockReturnValue(null); }); - it("should render a room list", () => { - const { asFragment } = render(); + async function renderList() { + const renderResult = render(); + // Wait for the row role to be removed + await waitFor(() => expect(screen.queryByRole("row")).toBeNull()); + return renderResult; + } + + it("should render a room list", async () => { + const { asFragment } = await renderList(); expect(asFragment()).toMatchSnapshot(); + + expect(screen.getByRole("listbox").getAttribute("aria-setsize")).toBe(`${vm.rooms.length}`); }); it("should open the room", async () => { const user = userEvent.setup(); - render(); + await renderList(); await waitFor(async () => { - expect(screen.getByRole("gridcell", { name: "Open room room9" })).toBeVisible(); - await user.click(screen.getByRole("gridcell", { name: "Open room room9" })); + expect(screen.getByRole("option", { name: "Open room room9" })).toBeVisible(); + await user.click(screen.getByRole("option", { name: "Open room room9" })); }); expect(vm.openRoom).toHaveBeenCalledWith(vm.rooms[9].roomId); }); + + it("should remove the role attribute", async () => { + await renderList(); + + const rowElement = screen.getByRole("listbox").children.item(0)!; + expect(rowElement).not.toHaveAttribute("role"); + + rowElement.setAttribute("role", "row"); + await waitFor(() => expect(rowElement).not.toHaveAttribute("role")); + }); }); diff --git a/test/unit-tests/components/views/rooms/RoomListPanel/__snapshots__/RoomList-test.tsx.snap b/test/unit-tests/components/views/rooms/RoomListPanel/__snapshots__/RoomList-test.tsx.snap index 54919fb980..2ee00057e7 100644 --- a/test/unit-tests/components/views/rooms/RoomListPanel/__snapshots__/RoomList-test.tsx.snap +++ b/test/unit-tests/components/views/rooms/RoomListPanel/__snapshots__/RoomList-test.tsx.snap @@ -12,20 +12,21 @@ exports[` should render a room list 1`] = `