mirror of
https://github.com/vector-im/element-web.git
synced 2025-11-30 15:01:43 +01:00
* Move Room List to ListView - Also remove Space/Enter handing from keyboard navigation we can just leave the default behaviour of those keys and handle via onClick * Update rooms when the primary filter changes Otherwise when changing spaces, the filter does not reset until the next update to the RVS is made. * Fix stickyRow/scrollIntoView when switiching space or changing filters - Also remove the rest of space/enter keyboard handling use * Remove the rest of space/enter keyboard handling use * Remove useCombinedRef and add @radix-ui/react-compose-refs as we already depend on it - Also remove eact-virtualized dep * Update RoomList unit test * Update snapshots and unit tests * Fix e2e tests * Remove react-virtualized from tests * Fix e2e flake * Update more screenshots * Fix e2e test case where were should scroll to the top when the active room is no longer in the list * Move from gitpkg to package-patch * Update to latest react virtuoso release/api. Also pass spaceId to the room list and scroll the activeIndex into view when spaceId or primaryFilter change. * Use listbox/option roles to improve ScreenReader experience * Change onKeyDown e.stopPropogation to cover context menu * lint * Remove unneeded exposure of the listView ref Also move scrollIntoViewOnChange to useCallback * Update unit test and snapshot * Fix e2e tests and update screenshots * Fix unit test and snapshot * Update more unit tests * Fix keyboard shortcuts and e2e test * Fix another e2e and unit test * lint * Improve the naming for RoomResult and the documentation on it's fields meaning. Also update the login in RoomList to check for any change in filters, this is a bit more future proof for when we introduce multi select than using activePrimaryFilter. * Put back and fix landmark tests * Fix test import * Add comment regarding context object getting rendered. * onKeyDown should be optional * Use SpaceKey type on RoomResult * lint
51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
/*
|
|
* Copyright 2025 New Vector Ltd.
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
|
|
* Please see LICENSE files in the repository root for full details.
|
|
*/
|
|
|
|
import { type Page } from "@playwright/test";
|
|
|
|
import { test, expect } from "../../../element-web-test";
|
|
|
|
test.describe("Room list panel", () => {
|
|
test.use({
|
|
labsFlags: ["feature_new_room_list"],
|
|
});
|
|
|
|
/**
|
|
* Get the room list view
|
|
* @param page
|
|
*/
|
|
function getRoomListView(page: Page) {
|
|
return page.getByRole("navigation", { name: "Room list" });
|
|
}
|
|
|
|
test.beforeEach(async ({ page, app, user }) => {
|
|
// The notification toast is displayed above the search section
|
|
await app.closeNotificationToast();
|
|
|
|
// Populate the room list
|
|
for (let i = 0; i < 20; i++) {
|
|
await app.client.createRoom({ name: `room${i}` });
|
|
}
|
|
|
|
// focus the user menu to avoid to have hover decoration
|
|
await page.getByRole("button", { name: "User menu" }).focus();
|
|
});
|
|
|
|
test("should render the room list panel", { tag: "@screenshot" }, async ({ page, app, user }) => {
|
|
const roomListView = getRoomListView(page);
|
|
// Wait for the last room to be visible
|
|
await expect(roomListView.getByRole("option", { name: "Open room room19" })).toBeVisible();
|
|
await expect(roomListView).toMatchScreenshot("room-list-panel.png");
|
|
});
|
|
|
|
test("should respond to small screen sizes", { tag: "@screenshot" }, async ({ page }) => {
|
|
await page.setViewportSize({ width: 575, height: 600 });
|
|
const roomListPanel = getRoomListView(page);
|
|
await expect(roomListPanel).toMatchScreenshot("room-list-panel-smallscreen.png");
|
|
});
|
|
});
|