diff --git a/packages/shared-components/src/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.test.tsx b/packages/shared-components/src/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.test.tsx
index 333e8d6a3b1..53578c5ad65 100644
--- a/packages/shared-components/src/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.test.tsx
+++ b/packages/shared-components/src/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.test.tsx
@@ -68,27 +68,33 @@ describe(" stories", () => {
} as unknown as typeof ResizeObserver;
});
- function mockFiltersNotWrapping(): void {
+ async function mockFiltersNotWrapping(): Promise {
vi.spyOn(screen.getByText("People"), "offsetLeft", "get").mockReturnValue(0);
vi.spyOn(screen.getByText("Rooms"), "offsetLeft", "get").mockReturnValue(30);
vi.spyOn(screen.getByText("Unreads"), "offsetLeft", "get").mockReturnValue(60);
const listbox = screen.getByRole("listbox", { name: "Room list filters" });
- act(() => resizeCallback([{ target: listbox } as any], {} as ResizeObserver));
+ await act(async () => {
+ resizeCallback([{ target: listbox } as any], {} as ResizeObserver);
+ await new Promise((resolve) => requestAnimationFrame(() => resolve()));
+ });
}
- function mockUnreadWrapping(): void {
+ async function mockUnreadWrapping(): Promise {
vi.spyOn(screen.getByText("People"), "offsetLeft", "get").mockReturnValue(0);
vi.spyOn(screen.getByText("Rooms"), "offsetLeft", "get").mockReturnValue(30);
vi.spyOn(screen.getByText("Unreads"), "offsetLeft", "get").mockReturnValue(0);
const listbox = screen.getByRole("listbox", { name: "Room list filters" });
- act(() => resizeCallback([{ target: listbox } as any], {} as ResizeObserver));
+ await act(async () => {
+ resizeCallback([{ target: listbox } as any], {} as ResizeObserver);
+ await new Promise((resolve) => requestAnimationFrame(() => resolve()));
+ });
}
- it("should hide wrapping filters and show chevron", () => {
+ it("should hide wrapping filters and show chevron", async () => {
render();
- mockUnreadWrapping();
+ await mockUnreadWrapping();
expect(screen.queryByRole("option", { name: "Unreads" })).toBeNull();
expect(screen.getByRole("button", { name: "Expand filter list" })).toBeInTheDocument();
@@ -97,7 +103,7 @@ describe(" stories", () => {
it("should expand and collapse filter list with chevron button", async () => {
const user = userEvent.setup();
render();
- mockUnreadWrapping();
+ await mockUnreadWrapping();
expect(screen.queryByRole("option", { name: "Unreads" })).toBeNull();
@@ -108,9 +114,9 @@ describe(" stories", () => {
expect(screen.queryByRole("option", { name: "Unreads" })).toBeNull();
});
- it("should move active filter to front when collapsed and wrapping", () => {
+ it("should move active filter to front when collapsed and wrapping", async () => {
render();
- mockUnreadWrapping();
+ await mockUnreadWrapping();
const listbox = screen.getByRole("listbox", { name: "Room list filters" });
expect(listbox.children[0]).toBe(screen.getByRole("option", { name: "Unreads" }));
@@ -119,7 +125,7 @@ describe(" stories", () => {
it("should restore original filter order when expanded", async () => {
const user = userEvent.setup();
render();
- mockUnreadWrapping();
+ await mockUnreadWrapping();
await user.click(screen.getByRole("button", { name: "Expand filter list" }));
@@ -127,13 +133,13 @@ describe(" stories", () => {
expect(listbox.children[0]).toBe(screen.getByRole("option", { name: "People" }));
});
- it("should handle resize from non-wrapping to wrapping", () => {
+ it("should handle resize from non-wrapping to wrapping", async () => {
render();
- mockFiltersNotWrapping();
+ await mockFiltersNotWrapping();
expect(screen.queryByRole("button", { name: "Expand filter list" })).toBeNull();
- mockUnreadWrapping();
+ await mockUnreadWrapping();
expect(screen.getByRole("button", { name: "Expand filter list" })).toBeInTheDocument();
});
});
diff --git a/packages/shared-components/src/room-list/RoomListPrimaryFilters/useCollapseFilters.ts b/packages/shared-components/src/room-list/RoomListPrimaryFilters/useCollapseFilters.ts
index e3fbf74e548..c0ee4892331 100644
--- a/packages/shared-components/src/room-list/RoomListPrimaryFilters/useCollapseFilters.ts
+++ b/packages/shared-components/src/room-list/RoomListPrimaryFilters/useCollapseFilters.ts
@@ -59,10 +59,15 @@ export function useCollapseFilters(
};
hideFilters(ref.current);
- const observer = new ResizeObserver((entries) => entries.forEach((entry) => hideFilters(entry.target)));
+ let rafId = 0;
+ const observer = new ResizeObserver((entries) => {
+ cancelAnimationFrame(rafId);
+ rafId = requestAnimationFrame(() => entries.forEach((entry) => hideFilters(entry.target)));
+ });
observer.observe(ref.current);
return () => {
+ cancelAnimationFrame(rafId);
observer.disconnect();
};
}, [isExpanded, wrappingClassName]);
diff --git a/packages/shared-components/src/utils/i18n.tsx b/packages/shared-components/src/utils/i18n.tsx
index 460ad8ea260..428eb2053ef 100644
--- a/packages/shared-components/src/utils/i18n.tsx
+++ b/packages/shared-components/src/utils/i18n.tsx
@@ -408,7 +408,7 @@ interface ICounterpartTranslation {
}
async function getLanguage(langPath: string): Promise {
- console.log("Loading language from", langPath);
+ if (process.env.NODE_ENV !== "test") console.log("Loading language from", langPath);
const res = await fetch(langPath, { method: "GET" });
if (!res.ok) {