From 59d27654af55f373f5cd9c7e6c58ef20e9386e8c Mon Sep 17 00:00:00 2001 From: nukeop <12746779+nukeop@users.noreply.github.com> Date: Thu, 4 Jun 2026 14:50:38 +0200 Subject: [PATCH 1/2] Fix track tables for album and playlist views --- packages/player/src/views/Album/Album.tsx | 2 +- .../views/PlaylistDetail/PlaylistDetail.tsx | 2 +- .../views/PlaylistImport/PlaylistImport.tsx | 2 +- .../ScrollableArea/ScrollableArea.tsx | 17 ++- .../src/components/TrackTable/TrackTable.tsx | 121 +++++++++--------- 5 files changed, 78 insertions(+), 66 deletions(-) diff --git a/packages/player/src/views/Album/Album.tsx b/packages/player/src/views/Album/Album.tsx index 10269ff3cb..6c3fdf11df 100644 --- a/packages/player/src/views/Album/Album.tsx +++ b/packages/player/src/views/Album/Album.tsx @@ -16,7 +16,7 @@ export const Album: FC = () => { return ( -
+
diff --git a/packages/player/src/views/PlaylistDetail/PlaylistDetail.tsx b/packages/player/src/views/PlaylistDetail/PlaylistDetail.tsx index 37073a80b2..65e754ecc4 100644 --- a/packages/player/src/views/PlaylistDetail/PlaylistDetail.tsx +++ b/packages/player/src/views/PlaylistDetail/PlaylistDetail.tsx @@ -43,7 +43,7 @@ export const PlaylistDetail: FC = () => { className="flex-1" /> ) : ( -
+
{ )} {tracks.length > 0 && ( -
+
; 'data-testid'?: string; }; @@ -37,7 +39,7 @@ const initialMetrics: ScrollMetrics = { }; function useScrollMetrics(fadeScrollbars: boolean, autoHideDelay: number) { - const ref = useRef(null); + const ref = useRef(null); const [metrics, setMetrics] = useState(initialMetrics); const [isScrolling, setIsScrolling] = useState(false); const hideTimeoutRef = useRef>(); @@ -247,6 +249,7 @@ export const ScrollableArea: FC = ({ className, fadeScrollbars = true, autoHideDelay = 1000, + viewportRef, 'data-testid': testId, }) => { const { ref, metrics, isScrolling, handleScroll } = useScrollMetrics( @@ -254,6 +257,16 @@ export const ScrollableArea: FC = ({ autoHideDelay, ); + const setViewportNode = useCallback( + (node: HTMLDivElement | null) => { + ref.current = node; + if (viewportRef) { + viewportRef.current = node; + } + }, + [ref, viewportRef], + ); + const needsVertical = metrics.scrollHeight > metrics.clientHeight; const needsHorizontal = metrics.scrollWidth > metrics.clientWidth; const needsCorner = needsVertical && needsHorizontal; @@ -264,7 +277,7 @@ export const ScrollableArea: FC = ({ data-testid={testId} >
({ const dndItems = rows.map((row) => getItemId(row.original, row.index)); - const mockViewportHeight = rowHeight * 12; - return ( ({ labels: mergedLabels, }} > - -
- void} +
+ + - void} > - {resolvedFeatures?.header && ( - - {table.getHeaderGroups().map((headerGroup) => ( - - {headerGroup.headers.map((header) => - flexRender(header.column.columnDef.header, { - ...header.getContext(), - key: header.id, - }), - )} - - ))} - - )} - ( - +
+ {resolvedFeatures?.header && ( + + {table.getHeaderGroups().map((headerGroup) => ( + + {headerGroup.headers.map((header) => + flexRender(header.column.columnDef.header, { + ...header.getContext(), + key: header.id, + }), + )} + + ))} + )} - /> -
- + ( + + )} + /> + + +
); From 43b0d7584fcb5c39504f8fbb3e51a1082bde9b5a Mon Sep 17 00:00:00 2001 From: nukeop <12746779+nukeop@users.noreply.github.com> Date: Fri, 5 Jun 2026 02:37:51 +0200 Subject: [PATCH 2/2] Update tests --- .../Album/__snapshots__/Album.test.tsx.snap | 660 +- .../Artist/__snapshots__/Artist.test.tsx.snap | 1076 +-- .../FavoriteTracks.test.tsx.snap | 796 +- .../PlaylistDetail.test.tsx.snap | 974 +-- .../ScrollableArea/ScrollableArea.tsx | 5 + .../src/components/TrackTable/TrackTable.tsx | 3 + .../__snapshots__/TrackTable.test.tsx.snap | 6686 +++++++++-------- 7 files changed, 5144 insertions(+), 5056 deletions(-) diff --git a/packages/player/src/views/Album/__snapshots__/Album.test.tsx.snap b/packages/player/src/views/Album/__snapshots__/Album.test.tsx.snap index 6295f48689..5e0188488c 100644 --- a/packages/player/src/views/Album/__snapshots__/Album.test.tsx.snap +++ b/packages/player/src/views/Album/__snapshots__/Album.test.tsx.snap @@ -689,233 +689,158 @@ exports[`Album view > (Snapshot) renders the album view 1`] = `
-
- -
-
- -
-
-
- - - + - - - - - - + + + +
+
- - + + +
- - - - - - Artist - -
- - -
- John Butler -
-
+
+
diff --git a/packages/player/src/views/Artist/__snapshots__/Artist.test.tsx.snap b/packages/player/src/views/Artist/__snapshots__/Artist.test.tsx.snap index b9e441a2c3..c357b72865 100644 --- a/packages/player/src/views/Artist/__snapshots__/Artist.test.tsx.snap +++ b/packages/player/src/views/Artist/__snapshots__/Artist.test.tsx.snap @@ -696,281 +696,194 @@ exports[`Artist view > with bio provider > (Snapshot) renders the artist view 1` Popular tracks
-
- -
-
- -
-
-
- - - + - - - - - - - + + + +
+
- - - + + + + + +
- - - - - - - - - - Artist - -
- - -
- -
-
-
- Test Artist -
-
+
+ +
+
+
+ Test Artist +
+
+
+ +
+ + +
+
+
+
+
@@ -2484,281 +2492,194 @@ exports[`Artist view > with social stats provider > (Snapshot) renders the artis Popular tracks
-
- -
-
- -
-
-
- - - + - - - - - - - + + + +
+
- - - + + + + + +
- - - - - - - - - - Artist - -
- - -
- -
-
-
- Deadmau5 -
-
+
+ +
+
+
+ Deadmau5 +
+
+
+ +
+ + +
+
+
+
+ diff --git a/packages/player/src/views/Favorites/__snapshots__/FavoriteTracks.test.tsx.snap b/packages/player/src/views/Favorites/__snapshots__/FavoriteTracks.test.tsx.snap index f5bf6aac59..d853a13f96 100644 --- a/packages/player/src/views/Favorites/__snapshots__/FavoriteTracks.test.tsx.snap +++ b/packages/player/src/views/Favorites/__snapshots__/FavoriteTracks.test.tsx.snap @@ -123,434 +123,235 @@ exports[`FavoriteTracks view > (Snapshot) renders with tracks 1`] = ` style="scrollbar-width: none;" >
-
- -
-
- -
-
-
+
+ + +
-
-
-
- - - + - - - - - - - + + + + +
+
-
- - - + + + + + +
- - - - - - - - - - Title - -
- - -
- -
-
-
- Test Artist
-
-
+
+ + +
+
+ + + - -
- -
- - - - - + + + + + + + + + + + - - -
+ - - - - -
- - -
- -
-
-
- Test Artist -
-
-
-
- Track track-2 - -
+ Title + +
+ +
+ +
+
+
+ Test Artist +
+
+
+ +
+ + +
+
+
- - -
+
+
+ +
+
+
+ Test Artist +
+
+
+ +
+ + +
+
+
+
+ diff --git a/packages/player/src/views/PlaylistDetail/__snapshots__/PlaylistDetail.test.tsx.snap b/packages/player/src/views/PlaylistDetail/__snapshots__/PlaylistDetail.test.tsx.snap index 132bdf065e..867f5c8b0c 100644 --- a/packages/player/src/views/PlaylistDetail/__snapshots__/PlaylistDetail.test.tsx.snap +++ b/packages/player/src/views/PlaylistDetail/__snapshots__/PlaylistDetail.test.tsx.snap @@ -191,285 +191,231 @@ exports[`PlaylistDetail view > (Snapshot) renders playlist detail with tracks 1`
-
- -
-
-
-
-
-
- - - - - + +
- +
- -
- + + + + +
+
+ + + - - - - - - - + - - - - - - - - + + + + + + + + + + + + - - - - - - + - - - - - + + + + + - - - - -
- - Artist - - - - Title - - - - Duration - - - - + - - - - - - - -
- - -
- -
-
-
- Test Artist -
-
-
-
- Giant Steps - -
+ Title + +
+ + Duration + + + + + +
+ +
+ +
+
+
+ Test Artist +
+
+
+ +
+ + +
+
+
+
+ 3:00 +
+
- - - -
- 3:00 -
-
- -
- - -
+
-
- Test Artist -
-
-
- -
+
+
+ +
+
+
+ Test Artist +
+
+
+ +
+ + +
+
+
+
+ 3:00 +
+
- - - -
- 3:00 -
-
- -
-
+ +
+
-
diff --git a/packages/ui/src/components/ScrollableArea/ScrollableArea.tsx b/packages/ui/src/components/ScrollableArea/ScrollableArea.tsx index a5b563643b..8852de350f 100644 --- a/packages/ui/src/components/ScrollableArea/ScrollableArea.tsx +++ b/packages/ui/src/components/ScrollableArea/ScrollableArea.tsx @@ -17,6 +17,7 @@ export type ScrollableAreaProps = { fadeScrollbars?: boolean; autoHideDelay?: number; // ms, default 1000 viewportRef?: MutableRefObject; + testViewportHeight?: number; 'data-testid'?: string; }; @@ -250,6 +251,7 @@ export const ScrollableArea: FC = ({ fadeScrollbars = true, autoHideDelay = 1000, viewportRef, + testViewportHeight, 'data-testid': testId, }) => { const { ref, metrics, isScrolling, handleScroll } = useScrollMetrics( @@ -281,6 +283,9 @@ export const ScrollableArea: FC = ({ className="scrollbar-hide flex h-full w-full flex-col overflow-auto" onScroll={handleScroll} style={{ scrollbarWidth: 'none', msOverflowStyle: 'none' }} + data-test-resize-observer-block-size={ + testViewportHeight != null ? String(testViewportHeight) : undefined + } > {children} diff --git a/packages/ui/src/components/TrackTable/TrackTable.tsx b/packages/ui/src/components/TrackTable/TrackTable.tsx index effc8a3fad..e50a8a4a8f 100644 --- a/packages/ui/src/components/TrackTable/TrackTable.tsx +++ b/packages/ui/src/components/TrackTable/TrackTable.tsx @@ -112,6 +112,8 @@ export function TrackTable({ const dndItems = rows.map((row) => getItemId(row.original, row.index)); + const testViewportHeight = rowHeight * 12; + return ( ({ (Snapshot) Basic 1`] = `
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - + + + +
+
+
- - - - - +
- -
- - Artist - - - - Title - - - - Album - - - - Duration - -
- 1 - -
- -
-
-
- Frank Zappa -
-
-
- -
-
-
- Album -
-
-
- 0:30
-
- - - - - - - - - - - - - - - + + + + + + + + + + + - - - - -
- 2 - -
- -
-
-
- Frank Zappa -
-
-
+
-
- Album -
-
-
- 0:31 -
-
- 3 - -
- -
-
-
- Frank Zappa -
-
-
-
+ + + + + + Artist + + + + Title + + + + Album + + + + Duration + +
+ 1 + +
+ +
+
- Track 3 - - - -
- Album -
-
-
- 0:32 -
-
+
+ Frank Zappa +
+ + +
+ +
+ + +
+ Album +
+ + +
+ 0:30 +
+ + + + + 2 + + +
+ +
+ + +
+ Frank Zappa +
+ + +
+ +
+ + +
+ Album +
+ + +
+ 0:31 +
+ + + + + 3 + + +
+ +
+ + +
+ Frank Zappa +
+ + +
+ +
+ + +
+ Album +
+ + +
+ 0:32 +
+ + + + +
+
`; @@ -403,552 +411,560 @@ exports[`TrackTable > (Snapshot) Basic 1`] = ` exports[`TrackTable > (Snapshot) DragAndDrop 1`] = `
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - + + + +
+
+
- - - - - +
- -
- - Artist - - - - Title - - - - Album - - - - Duration - -
- 1 - -
- -
-
-
- Frank Zappa -
-
-
- -
-
-
- Album
-
-
- 0:30 -
-
- - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - -
- 2 - -
- -
-
-
- Frank Zappa -
-
-
+
-
- Album -
-
-
- 0:31 -
-
- 3 - -
- -
-
-
- Frank Zappa -
-
-
-
+ + + + + + Artist + + + + Title + + + + Album + + + + Duration + +
+ 1 + +
+ +
+
- Track 3 - - - -
- Album -
-
-
- 0:32 -
-
- 4 - -
- -
-
-
- Frank Zappa -
-
-
-
+
+
+ +
+
+
+ Album +
+
+
+ 0:30 +
+
+ 2 + +
+ +
+
- Track 4 - - - -
- Album -
-
-
- 0:33 -
-
- 5 - -
- -
-
-
- Frank Zappa -
-
-
-
+
+
+ +
+
+
+ Album +
+
+
+ 0:31 +
+
+ 3 + +
+ +
+
- Track 5 - - - -
- Album -
-
-
- 0:34 -
-
- -
`; @@ -956,2102 +972,2118 @@ exports[`TrackTable > (Snapshot) DragAndDrop 1`] = ` exports[`TrackTable > (Snapshot) Filtering 1`] = `
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - +
- -
- - Artist - - - - Title - - - - Album - - - + + + + +
+
+ + + - Duration - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + Artist + + + + Title + + + + Album + + + + Duration + +
+ 1 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:30 +
+
+ 2 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:31 +
+
+ 3 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:32 +
+
+ 4 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:33 +
+
+ 5 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:34 +
+
+
+
+ + +`; + +exports[`TrackTable > (Snapshot) LargeDataset 1`] = ` + +
+
+
+
-
- 1 -
- -
-
-
- Frank Zappa -
-
-
- -
-
-
- Album -
-
-
- 0:30 -
-
- 2 - -
- -
-
-
- Frank Zappa -
-
-
- -
-
-
- Album -
-
-
- 0:31 -
-
- 3 - -
- -
-
-
- Frank Zappa -
-
-
- -
-
-
- Album -
-
-
- 0:32 -
-
- 4 - -
- -
-
-
- Frank Zappa -
-
-
- -
-
-
- Album -
-
-
- 0:33 -
-
- 5 - -
- -
-
-
- Frank Zappa -
-
-
- -
-
-
- Album -
-
-
- 0:34 -
-
-
-
-`; - -exports[`TrackTable > (Snapshot) LargeDataset 1`] = ` - -
-
-
-
-
- -
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - + + + + + + +
- - - - - - - - - Artist - - - - Title - - - - Album - - - - Duration - -
- 1 - -
- -
-
-
- Frank Zappa
-
-
-
+ + +
+
+ + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + + + - - - - - - - - - - - - - - - - + - - - - - - - - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + - - - - - - - - + - - - - - - -
- Track 1 - - - - -
- Album -
-
-
- 0:30 -
-
- 2 - -
- -
-
-
- Frank Zappa -
-
-
-
- Track 2 - - - - -
- Album -
-
-
- 0:31 -
-
- 3 - -
- -
-
-
- Frank Zappa -
-
-
-
- Track 3 - - - - -
- Album -
-
-
- 0:32 -
-
- 4 - -
- -
-
-
- Frank Zappa -
-
-
-
- Track 4 - - - - -
- Album -
-
-
- 0:33 -
-
- 5 - -
- -
-
-
- Frank Zappa -
-
-
-
- Track 5 - - - - -
- Album -
-
-
- 0:34 -
-
- 6 - -
- -
-
-
- Frank Zappa -
-
-
-
- Track 6 - - - - -
- Album -
-
-
- 0:35 -
-
- 7 - -
- -
-
-
- Frank Zappa -
-
-
-
- Track 7 - - - -
- Album -
-
-
- 0:36 -
-
- 8 - -
- -
-
-
- Frank Zappa -
-
-
-
- Track 8 - - - -
- Album -
-
-
- 0:37 -
-
- 9 - -
- -
-
-
- Frank Zappa -
-
-
-
+
- Track 9 - - - -
- Album -
-
-
- 0:38 -
-
- 10 - -
- -
-
-
- Frank Zappa -
-
-
-
+
- Track 10 - - - -
- Album -
-
-
- 0:39 -
-
- 11 - -
- -
-
-
- Frank Zappa -
-
-
- +
+
- Track 11 - - - -
- Album -
-
-
- 0:40 -
-
- 12 - -
- -
-
-
- Frank Zappa -
-
-
-
+
- Track 12 - - - -
- Album -
-
-
- 0:41 -
-
- 13 - -
- -
-
-
- Frank Zappa -
-
-
-
+
- Track 13 - - - -
- Album -
-
-
- 0:42 -
-
- 14 - -
- -
-
-
- Frank Zappa -
-
-
-
- Track 14 - - - -
- Album -
-
-
- 0:43 -
-
- 15 - -
- -
-
-
- Frank Zappa -
-
-
-
+
- Track 15 - - - -
- Album -
-
-
- 0:44 -
-
- 16 - -
- -
-
-
- Frank Zappa -
-
-
-
+
- Track 16 - - - -
- Album -
-
-
- 0:45 -
-
- 17 - -
- -
-
-
- Frank Zappa -
-
-
- +
+
+
+ Album +
+
+
+ 0:31 +
+
+ 3 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:32 +
+
+ 4 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:33 +
+
+ 5 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:34 +
+
+ 6 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:35 +
+
+ 7 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:36 +
+
+ 8 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:37 +
+
+ 9 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:38 +
+
+ 10 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:39 +
+
+ 11 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:40 +
+
+ 12 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:41 +
+
+ 13 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:42 +
+
+ 14 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:43 +
+
+ 15 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:44 +
+
+ 16 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:45 +
+
+ 17 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:46 +
+
+ 18 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:47 +
+
+ 19 + +
+ +
+
+
+ Frank Zappa +
+
+
+ +
+
+
+ Album +
+
+
+ 0:48 +
+
- Track 17 - - - -
- Album -
-
-
- 0:46 -
-
- 18 - -
- -
-
-
- Frank Zappa -
-
-
-
- Track 18 - - - -
- Album -
-
-
- 0:47 -
-
- 19 - -
- -
-
-
- Frank Zappa -
-
-
-
+
- Track 19 - - - -
- Album -
-
-
- 0:48 -
-
- 20 - -
- -
-
-
- Frank Zappa -
-
-
-
+
- Track 20 - - - -
- Album -
-
-
- 0:49 -
-
-
+
+ +
+
+
+ Album +
+
+
+ 0:49 +
+
+
+
+
@@ -3060,454 +3092,462 @@ exports[`TrackTable > (Snapshot) LargeDataset 1`] = ` exports[`TrackTable > (Snapshot) Toolbar 1`] = `
-
- -
-
- -
+
+ +
+
+ +
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - + + + +
+
+
- - - - - +
- -
- - Artist - - - - Title - - - - Album - - - - Duration - -
- 1 - -
- -
-
-
- Frank Zappa -
-
-
- -
-
-
- Album -
-
-
- 0:30
-
- - - - Frank Zappa - - - - - - - - - - - + + + + + + + + + + + - - - - -
- 2 - -
- -
-
-
+
-
- -
-
-
- Album -
-
-
- 0:31 -
-
- 3 - -
- -
-
-
- Frank Zappa -
-
-
-
+ + + + + + Artist + + + + Title + + + + Album + + + + Duration + +
+ 1 + +
+ +
+
- Track 3 - - - -
- Album -
-
-
- 0:32 -
-
+
+ Frank Zappa +
+ + +
+ +
+ + +
+ Album +
+ + +
+ 0:30 +
+ + + + + 2 + + +
+ +
+ + +
+ Frank Zappa +
+ + +
+ +
+ + +
+ Album +
+ + +
+ 0:31 +
+ + + + + 3 + + +
+ +
+ + +
+ Frank Zappa +
+ + +
+ +
+ + +
+ Album +
+ + +
+ 0:32 +
+ + + + +
+
`;