From ef344f4ee8716e7771b1ac38551a5cb410ea4ab3 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 30 Mar 2026 18:35:17 +0000 Subject: [PATCH] fix(e2e): resolve 4 remaining test failures in electron e2e suite - Fix getVisibleSourceTitles: use .playlist-title selector instead of .mdc-list-item__primary-text which no longer matches playlist-item component - Fix category-management test: re-navigate to sources page after refreshSource since refresh navigates away from sources - Fix recent.e2e test: remove switchUnifiedCollectionContent calls after clearRecentItems since the content toggle disappears when all items cleared - Fix stalker mock server: generate numeric episode IDs ("1","2",...) in season.series array so toSeriesNumbers() can parse them; previously used non-numeric IDs like "30000-s1-e1" which parsed to NaN, producing empty episode arrays and causing playFirstSeriesEpisode to time out https://claude.ai/code/session_01VU6ZZTG7YrhKhKBQvBfmpp --- apps/electron-backend-e2e/src/category-management.e2e.ts | 1 + apps/electron-backend-e2e/src/electron-test-fixtures.ts | 4 +--- apps/electron-backend-e2e/src/recent.e2e.ts | 4 ++-- apps/stalker-mock-server/src/app/data-generator.ts | 2 +- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/apps/electron-backend-e2e/src/category-management.e2e.ts b/apps/electron-backend-e2e/src/category-management.e2e.ts index 84238514c..ee5c298dd 100644 --- a/apps/electron-backend-e2e/src/category-management.e2e.ts +++ b/apps/electron-backend-e2e/src/category-management.e2e.ts @@ -68,6 +68,7 @@ test.describe('Electron Xtream Category Management', () => { await openSources(app.mainWindow); await refreshSource(app.mainWindow, portalName, { confirm: true }); + await openSources(app.mainWindow); await waitForSourceRowIdle(app.mainWindow, portalName); await sourceRowByTitle(app.mainWindow, portalName).first().click(); await waitForXtreamWorkspaceReady(app.mainWindow); diff --git a/apps/electron-backend-e2e/src/electron-test-fixtures.ts b/apps/electron-backend-e2e/src/electron-test-fixtures.ts index f1ce9df92..20cd4ae23 100644 --- a/apps/electron-backend-e2e/src/electron-test-fixtures.ts +++ b/apps/electron-backend-e2e/src/electron-test-fixtures.ts @@ -675,9 +675,7 @@ export async function getVisibleSourceTitles(page: Page): Promise { return page.locator('app-playlist-item').evaluateAll((elements) => elements .map((element) => { - const titleElement = element.querySelector( - '[matlistitemtitle], [matListItemTitle], .mdc-list-item__primary-text' - ); + const titleElement = element.querySelector('.playlist-title'); return titleElement?.textContent?.trim() ?? ''; }) .filter((title) => title.length > 0) diff --git a/apps/electron-backend-e2e/src/recent.e2e.ts b/apps/electron-backend-e2e/src/recent.e2e.ts index dbe264c7b..77127fbb4 100644 --- a/apps/electron-backend-e2e/src/recent.e2e.ts +++ b/apps/electron-backend-e2e/src/recent.e2e.ts @@ -186,10 +186,10 @@ test.describe('Electron Recently Viewed', () => { await switchUnifiedCollectionContent(app.mainWindow, 'Live TV'); await clearRecentItems(app.mainWindow); + // After clearing all items, the content toggle disappears. + // All content types are cleared simultaneously, so no toggle switch needed. await expect(channelItemByTitle(app.mainWindow, liveTitle)).toHaveCount(0); - await switchUnifiedCollectionContent(app.mainWindow, 'Movies'); await expect(contentCardByTitle(app.mainWindow, movieTitle)).toHaveCount(0); - await switchUnifiedCollectionContent(app.mainWindow, 'Series'); await expect(contentCardByTitle(app.mainWindow, seriesTitle)).toHaveCount(0); } finally { await closeElectronApp(app); diff --git a/apps/stalker-mock-server/src/app/data-generator.ts b/apps/stalker-mock-server/src/app/data-generator.ts index 2cdfeea21..842e7ae24 100644 --- a/apps/stalker-mock-server/src/app/data-generator.ts +++ b/apps/stalker-mock-server/src/app/data-generator.ts @@ -365,7 +365,7 @@ export function generateSeasons( return Array.from({ length: seasonCount }, (_, s) => { const seasonId = `${series.id}-s${s + 1}`; const episodes = Array.from({ length: episodesPerSeason }, (_, e) => - `${series.id}-s${s + 1}-e${e + 1}` + String(e + 1) ); return { id: seasonId,