Skip to content

Commit 389a0e6

Browse files
authored
New room list: filter list can be collapsed (#29992)
* feat: add new hook to check if a node is visible * feat: filters in new room list can be collapsed * feat: add animation to filter list * feat: hide chevron when list fit on one line * fix: use correct label for expand button * test: update room list panel snapshots * test: add tests for useIsNodeVisible * chore: update i18n * test: add tests for primary filters * test(e2e): update existing screenshots * test(e2e): update primary filter tests * chore: typo in css file * refactor: replace ternary by if in filter condition * feat: compute filter height instead of hardcoded value * fix: floor floating computation on filter * refactor: move hooks to dedicated files * test: update tests * feat: rework collapse feature * test: remove room list panel snapshot * test: update room list primary filter tests * test(e2e): update screenshots * test(e2e): update screenshots * test(e2e): fix favourite filter in scroll behaviour test * fix: accessibility order when tabbing
1 parent 451a99d commit 389a0e6

File tree

39 files changed

+338
-528
lines changed

39 files changed

+338
-528
lines changed

playwright/e2e/left-panel/room-list-panel/room-list-filter-sort.spec.ts

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,21 @@ test.describe("Room list filters and sort", () => {
2222
});
2323

2424
function getPrimaryFilters(page: Page): Locator {
25-
return page.getByRole("listbox", { name: "Room list filters" });
25+
return page.getByTestId("primary-filters");
2626
}
2727

2828
function getRoomOptionsMenu(page: Page): Locator {
2929
return page.getByRole("button", { name: "Room Options" });
3030
}
3131

32+
function getFilterExpandButton(page: Page): Locator {
33+
return getPrimaryFilters(page).getByRole("button", { name: "Expand filter list" });
34+
}
35+
36+
function getFilterCollapseButton(page: Page): Locator {
37+
return getPrimaryFilters(page).getByRole("button", { name: "Collapse filter list" });
38+
}
39+
3240
/**
3341
* Get the room list
3442
* @param page
@@ -136,6 +144,7 @@ test.describe("Room list filters and sort", () => {
136144
await tile.click();
137145

138146
// Enable Favourite filter
147+
await getFilterExpandButton(page).click();
139148
const primaryFilters = getPrimaryFilters(page);
140149
await primaryFilters.getByRole("option", { name: "Favourite" }).click();
141150
await expect(tile).not.toBeVisible();
@@ -223,10 +232,6 @@ test.describe("Room list filters and sort", () => {
223232
expect(await roomList.locator("role=gridcell").count()).toBe(4);
224233
await expect(primaryFilters).toMatchScreenshot("unread-primary-filters.png");
225234

226-
await primaryFilters.getByRole("option", { name: "Favourite" }).click();
227-
await expect(roomList.getByRole("gridcell", { name: "favourite room" })).toBeVisible();
228-
expect(await roomList.locator("role=gridcell").count()).toBe(1);
229-
230235
await primaryFilters.getByRole("option", { name: "People" }).click();
231236
await expect(roomList.getByRole("gridcell", { name: "unread dm" })).toBeVisible();
232237
await expect(roomList.getByRole("gridcell", { name: "invited room" })).toBeVisible();
@@ -240,13 +245,22 @@ test.describe("Room list filters and sort", () => {
240245
await expect(roomList.getByRole("gridcell", { name: "Low prio room" })).toBeVisible();
241246
expect(await roomList.locator("role=gridcell").count()).toBe(5);
242247

248+
await getFilterExpandButton(page).click();
249+
250+
await primaryFilters.getByRole("option", { name: "Favourite" }).click();
251+
await expect(roomList.getByRole("gridcell", { name: "favourite room" })).toBeVisible();
252+
expect(await roomList.locator("role=gridcell").count()).toBe(1);
253+
243254
await primaryFilters.getByRole("option", { name: "Mentions" }).click();
244255
await expect(roomList.getByRole("gridcell", { name: "room with mention" })).toBeVisible();
245256
expect(await roomList.locator("role=gridcell").count()).toBe(1);
246257

247258
await primaryFilters.getByRole("option", { name: "Invites" }).click();
248259
await expect(roomList.getByRole("gridcell", { name: "invited room" })).toBeVisible();
249260
expect(await roomList.locator("role=gridcell").count()).toBe(1);
261+
262+
await getFilterCollapseButton(page).click();
263+
await expect(primaryFilters.locator("role=option").first()).toHaveText("Invites");
250264
});
251265

252266
test(
@@ -326,6 +340,8 @@ test.describe("Room list filters and sort", () => {
326340
{ tag: "@screenshot" },
327341
async ({ page, app, user }) => {
328342
const primaryFilters = getPrimaryFilters(page);
343+
await getFilterExpandButton(page).click();
344+
329345
await primaryFilters.getByRole("option", { name: filter }).click();
330346

331347
const emptyRoomList = getEmptyRoomList(page);
@@ -343,6 +359,8 @@ test.describe("Room list filters and sort", () => {
343359
{ tag: "@screenshot" },
344360
async ({ page, app, user }) => {
345361
const primaryFilters = getPrimaryFilters(page);
362+
await getFilterExpandButton(page).click();
363+
346364
await primaryFilters.getByRole("option", { name: filter }).click();
347365

348366
const emptyRoomList = getEmptyRoomList(page);
0 Bytes
Loading
0 Bytes
Loading
-1 Bytes
Loading
1 Byte
Loading
2 Bytes
Loading
1 Byte
Loading
49 Bytes
Loading
-3.85 KB
Loading
5 Bytes
Loading

0 commit comments

Comments
 (0)