From c123fbf115ed9747beebca54b1bc59135cd36492 Mon Sep 17 00:00:00 2001 From: 4gray Date: Thu, 23 Apr 2026 00:03:48 +0200 Subject: [PATCH] test(e2e): update favorites and recently viewed handling to use global paths --- .../src/electron-test-fixtures.ts | 20 +++++++---- .../electron-backend-e2e/src/favorites.e2e.ts | 28 +++++---------- .../src/playlist-switcher.e2e.ts | 33 ++++++++--------- apps/electron-backend-e2e/src/recent.e2e.ts | 28 +++++---------- apps/electron-backend-e2e/src/search.e2e.ts | 35 +++++++++++-------- 5 files changed, 67 insertions(+), 77 deletions(-) diff --git a/apps/electron-backend-e2e/src/electron-test-fixtures.ts b/apps/electron-backend-e2e/src/electron-test-fixtures.ts index c4ff7f589..806fc578b 100644 --- a/apps/electron-backend-e2e/src/electron-test-fixtures.ts +++ b/apps/electron-backend-e2e/src/electron-test-fixtures.ts @@ -662,19 +662,27 @@ export async function openWorkspaceSection( page: Page, label: string ): Promise { + if (label === 'Favorites') { + await openPlaylistFavorites(page); + return; + } + + if (label === 'Recently viewed') { + await openPlaylistRecent(page); + return; + } + await page.getByRole('link', { name: label, exact: true }).click(); } export async function openPlaylistFavorites(page: Page): Promise { - await openWorkspaceSection(page, 'Favorites'); - await expect - .poll(() => new URL(page.url()).pathname) - .toMatch(/\/favorites$/); + await openGlobalFavorites(page); + await switchUnifiedCollectionScope(page, 'This playlist'); } export async function openPlaylistRecent(page: Page): Promise { - await openWorkspaceSection(page, 'Recently viewed'); - await expect.poll(() => new URL(page.url()).pathname).toMatch(/\/recent$/); + await openGlobalRecent(page); + await switchUnifiedCollectionScope(page, 'This playlist'); } export async function openGlobalFavorites(page: Page): Promise { diff --git a/apps/electron-backend-e2e/src/favorites.e2e.ts b/apps/electron-backend-e2e/src/favorites.e2e.ts index d6882734d..74a887a61 100644 --- a/apps/electron-backend-e2e/src/favorites.e2e.ts +++ b/apps/electron-backend-e2e/src/favorites.e2e.ts @@ -345,16 +345,13 @@ test.describe('Electron Favorites', () => { .first() .click(); await expectInlineCollectionDetail(app.mainWindow, { - pathname: /\/workspace\/xtreams\/[^/]+\/favorites$/, + pathname: /\/workspace\/global-favorites$/, title: movieTitle, playlistTitle: hostPortalTitle, }); await goBackFromDetail(app.mainWindow); - await expectPathname( - app.mainWindow, - /\/workspace\/xtreams\/[^/]+\/favorites$/ - ); + await expectPathname(app.mainWindow, /\/workspace\/global-favorites$/); await expectVisibleContentCardTitle(app.mainWindow, movieTitle); await switchUnifiedCollectionContent(app.mainWindow, 'Series'); @@ -363,16 +360,13 @@ test.describe('Electron Favorites', () => { .first() .click(); await expectInlineCollectionDetail(app.mainWindow, { - pathname: /\/workspace\/xtreams\/[^/]+\/favorites$/, + pathname: /\/workspace\/global-favorites$/, title: seriesTitle, playlistTitle: hostPortalTitle, }); await goBackFromDetail(app.mainWindow); - await expectPathname( - app.mainWindow, - /\/workspace\/xtreams\/[^/]+\/favorites$/ - ); + await expectPathname(app.mainWindow, /\/workspace\/global-favorites$/); await switchUnifiedCollectionContent(app.mainWindow, 'Series'); await expectVisibleContentCardTitle(app.mainWindow, seriesTitle); } finally { @@ -543,16 +537,13 @@ test.describe('Electron Favorites', () => { .first() .click(); await expectInlineCollectionDetail(app.mainWindow, { - pathname: /\/workspace\/stalker\/[^/]+\/favorites$/, + pathname: /\/workspace\/global-favorites$/, title: movieTitle, playlistTitle: portalTitle, }); await goBackFromDetail(app.mainWindow); - await expectPathname( - app.mainWindow, - /\/workspace\/stalker\/[^/]+\/favorites$/ - ); + await expectPathname(app.mainWindow, /\/workspace\/global-favorites$/); await expectVisibleContentCardTitle(app.mainWindow, movieTitle); await switchUnifiedCollectionContent(app.mainWindow, 'Series'); @@ -561,16 +552,13 @@ test.describe('Electron Favorites', () => { .first() .click(); await expectInlineCollectionDetail(app.mainWindow, { - pathname: /\/workspace\/stalker\/[^/]+\/favorites$/, + pathname: /\/workspace\/global-favorites$/, title: seriesTitle, playlistTitle: portalTitle, }); await goBackFromDetail(app.mainWindow); - await expectPathname( - app.mainWindow, - /\/workspace\/stalker\/[^/]+\/favorites$/ - ); + await expectPathname(app.mainWindow, /\/workspace\/global-favorites$/); await switchUnifiedCollectionContent(app.mainWindow, 'Series'); await expectVisibleContentCardTitle(app.mainWindow, seriesTitle); } finally { diff --git a/apps/electron-backend-e2e/src/playlist-switcher.e2e.ts b/apps/electron-backend-e2e/src/playlist-switcher.e2e.ts index ca8cffcb7..df8856b39 100644 --- a/apps/electron-backend-e2e/src/playlist-switcher.e2e.ts +++ b/apps/electron-backend-e2e/src/playlist-switcher.e2e.ts @@ -15,6 +15,7 @@ import { openSourceEditor, openSources, openWorkspaceSection, + playlistSwitcherTitle, resetMockServers, restartElectronApp, saveSettings, @@ -95,22 +96,19 @@ test.describe('Electron Playlist Switcher', () => { .first() .click(); await waitForM3uCatalog(app.mainWindow); - await openWorkspaceSection(app.mainWindow, 'Recently viewed'); - await expectPathname( - app.mainWindow, - /\/workspace\/playlists\/[^/]+\/recent$/ - ); + await openPlaylistRecent(app.mainWindow); + await expectPathname(app.mainWindow, /\/workspace\/global-recent$/); await switchPlaylistFromHeader(app.mainWindow, localBDisplayName); - await expectPathname( - app.mainWindow, - /\/workspace\/playlists\/[^/]+\/recent$/ + await expectPathname(app.mainWindow, /\/workspace\/global-recent$/); + await expect(playlistSwitcherTitle(app.mainWindow)).toContainText( + localBDisplayName ); await switchPlaylistFromHeader(app.mainWindow, xtreamAName); - await expectPathname( - app.mainWindow, - /\/workspace\/xtreams\/[^/]+\/recent$/ + await expectPathname(app.mainWindow, /\/workspace\/global-recent$/); + await expect(playlistSwitcherTitle(app.mainWindow)).toContainText( + xtreamAName ); await openWorkspaceSection(app.mainWindow, 'Live TV'); @@ -167,16 +165,19 @@ test.describe('Electron Playlist Switcher', () => { /\/workspace\/playlists\/[^/]+\/all$/ ); - await openWorkspaceSection(app.mainWindow, 'Favorites'); + await openPlaylistFavorites(app.mainWindow); await expectPathname( app.mainWindow, - /\/workspace\/playlists\/[^/]+\/favorites$/ + /\/workspace\/global-favorites$/ ); await switchPlaylistFromHeader(app.mainWindow, stalkerBName); await expectPathname( app.mainWindow, - /\/workspace\/stalker\/[^/]+\/favorites$/ + /\/workspace\/global-favorites$/ + ); + await expect(playlistSwitcherTitle(app.mainWindow)).toContainText( + stalkerBName ); } finally { await closeElectronApp(app); @@ -243,7 +244,7 @@ test.describe('Electron Playlist Switcher', () => { await switchPlaylistFromHeader(app.mainWindow, localBDisplayName); await expectPathname( app.mainWindow, - /\/workspace\/playlists\/[^/]+\/favorites$/ + /\/workspace\/global-favorites$/ ); await expect(channelItemByTitle(app.mainWindow, localBChannelName)).toHaveCount( 1 @@ -263,7 +264,7 @@ test.describe('Electron Playlist Switcher', () => { await switchPlaylistFromHeader(app.mainWindow, localADisplayName); await expectPathname( app.mainWindow, - /\/workspace\/playlists\/[^/]+\/recent$/ + /\/workspace\/global-recent$/ ); await expect(channelItemByTitle(app.mainWindow, localAChannelName)).toHaveCount( 1 diff --git a/apps/electron-backend-e2e/src/recent.e2e.ts b/apps/electron-backend-e2e/src/recent.e2e.ts index 9d5c0b2e6..b277325c8 100644 --- a/apps/electron-backend-e2e/src/recent.e2e.ts +++ b/apps/electron-backend-e2e/src/recent.e2e.ts @@ -328,16 +328,13 @@ test.describe('Electron Recently Viewed', () => { .first() .click(); await expectInlineCollectionDetail(app.mainWindow, { - pathname: /\/workspace\/xtreams\/[^/]+\/recent$/, + pathname: /\/workspace\/global-recent$/, title: movieTitle, playlistTitle: portalTitle, }); await goBackFromDetail(app.mainWindow); - await expectPathname( - app.mainWindow, - /\/workspace\/xtreams\/[^/]+\/recent$/ - ); + await expectPathname(app.mainWindow, /\/workspace\/global-recent$/); await expectVisibleContentCardTitle(app.mainWindow, movieTitle); await switchUnifiedCollectionContent(app.mainWindow, 'Series'); @@ -346,16 +343,13 @@ test.describe('Electron Recently Viewed', () => { .first() .click(); await expectInlineCollectionDetail(app.mainWindow, { - pathname: /\/workspace\/xtreams\/[^/]+\/recent$/, + pathname: /\/workspace\/global-recent$/, title: seriesTitle, playlistTitle: portalTitle, }); await goBackFromDetail(app.mainWindow); - await expectPathname( - app.mainWindow, - /\/workspace\/xtreams\/[^/]+\/recent$/ - ); + await expectPathname(app.mainWindow, /\/workspace\/global-recent$/); await switchUnifiedCollectionContent(app.mainWindow, 'Series'); await expectVisibleContentCardTitle(app.mainWindow, seriesTitle); } finally { @@ -525,16 +519,13 @@ test.describe('Electron Recently Viewed', () => { .first() .click(); await expectInlineCollectionDetail(app.mainWindow, { - pathname: /\/workspace\/stalker\/[^/]+\/recent$/, + pathname: /\/workspace\/global-recent$/, title: movieTitle, playlistTitle: portalTitle, }); await goBackFromDetail(app.mainWindow); - await expectPathname( - app.mainWindow, - /\/workspace\/stalker\/[^/]+\/recent$/ - ); + await expectPathname(app.mainWindow, /\/workspace\/global-recent$/); await expectVisibleContentCardTitle(app.mainWindow, movieTitle); await switchUnifiedCollectionContent(app.mainWindow, 'Series'); @@ -543,16 +534,13 @@ test.describe('Electron Recently Viewed', () => { .first() .click(); await expectInlineCollectionDetail(app.mainWindow, { - pathname: /\/workspace\/stalker\/[^/]+\/recent$/, + pathname: /\/workspace\/global-recent$/, title: seriesTitle, playlistTitle: portalTitle, }); await goBackFromDetail(app.mainWindow); - await expectPathname( - app.mainWindow, - /\/workspace\/stalker\/[^/]+\/recent$/ - ); + await expectPathname(app.mainWindow, /\/workspace\/global-recent$/); await switchUnifiedCollectionContent(app.mainWindow, 'Series'); await expectVisibleContentCardTitle(app.mainWindow, seriesTitle); } finally { diff --git a/apps/electron-backend-e2e/src/search.e2e.ts b/apps/electron-backend-e2e/src/search.e2e.ts index 0308ca81c..291dd7175 100644 --- a/apps/electron-backend-e2e/src/search.e2e.ts +++ b/apps/electron-backend-e2e/src/search.e2e.ts @@ -206,12 +206,12 @@ test.describe('Electron Workspace Search', () => { await fillWorkspaceSearch(app.mainWindow, sample.groupTitle); - await expectPathname( - app.mainWindow, - /\/workspace\/playlists\/[^/]+\/favorites$/ - ); + await expectPathname(app.mainWindow, /\/workspace\/global-favorites$/); await expectQueryParam(app.mainWindow, 'q', sample.groupTitle); - await expectWorkspaceSearchScope(app.mainWindow, 'Favorites'); + await expectWorkspaceSearchScope( + app.mainWindow, + 'Global favorites' + ); await expect( channelItemByTitle(app.mainWindow, sample.targetTitle).first() ).toBeVisible(); @@ -561,10 +561,7 @@ test.describe('Electron Workspace Search', () => { ); await openWorkspaceSection(app.mainWindow, 'Favorites'); - await expectPathname( - app.mainWindow, - /\/workspace\/xtreams\/[^/]+\/favorites$/ - ); + await expectPathname(app.mainWindow, /\/workspace\/global-favorites$/); await expect( contentCardByTitle( app.mainWindow, @@ -588,7 +585,10 @@ test.describe('Electron Workspace Search', () => { 'q', resolvedTitles.targetTitle ); - await expectWorkspaceSearchScope(app.mainWindow, 'Favorites'); + await expectWorkspaceSearchScope( + app.mainWindow, + 'Global favorites' + ); await expect( contentCardByTitle( app.mainWindow, @@ -801,10 +801,7 @@ test.describe('Electron Workspace Search', () => { await toggleFavoriteForChannel(app.mainWindow, sample.controlTitle); await openWorkspaceSection(app.mainWindow, 'Favorites'); - await expectPathname( - app.mainWindow, - /\/workspace\/stalker\/[^/]+\/favorites$/ - ); + await expectPathname(app.mainWindow, /\/workspace\/global-favorites$/); await expect( channelItemByTitle(app.mainWindow, sample.targetTitle).first() ).toBeVisible({ timeout: 20000 }); @@ -815,7 +812,10 @@ test.describe('Electron Workspace Search', () => { await fillWorkspaceSearch(app.mainWindow, sample.targetTitle); await expectQueryParam(app.mainWindow, 'q', sample.targetTitle); - await expectWorkspaceSearchScope(app.mainWindow, 'Favorites'); + await expectWorkspaceSearchScope( + app.mainWindow, + 'Global favorites' + ); await expect( channelItemByTitle(app.mainWindow, sample.targetTitle).first() ).toBeVisible(); @@ -1227,6 +1227,11 @@ async function clickCategoryByNameExact( } async function openWorkspaceSection(page: Page, label: string): Promise { + if (label === 'Favorites') { + await openGlobalFavorites(page); + return; + } + await page.getByRole('link', { name: label, exact: true }).click(); }