From abbb7c798f94d0a6fbd4520069e54a6d90e91228 Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 22 Apr 2026 22:41:58 +0200 Subject: [PATCH] test(e2e): cover admin thumbnail generation card + a11y - admin.spec: click 'Thumbnails erzeugen', wait for status DONE within 30s, screenshot the success message - accessibility.spec: /admin/system joins the page list so the thumbnail card is checked in light, system-dark, and manual-dark axe-core runs Refs #307 Co-Authored-By: Claude Opus 4.7 --- frontend/e2e/accessibility.spec.ts | 3 ++- frontend/e2e/admin.spec.ts | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/frontend/e2e/accessibility.spec.ts b/frontend/e2e/accessibility.spec.ts index 7f6c5921..b8f983fe 100644 --- a/frontend/e2e/accessibility.spec.ts +++ b/frontend/e2e/accessibility.spec.ts @@ -11,7 +11,8 @@ const AUTHENTICATED_PAGES = [ { name: 'home', path: '/' }, { name: 'persons', path: '/persons' }, { name: 'aktivitaeten', path: '/aktivitaeten' }, - { name: 'admin', path: '/admin' } + { name: 'admin', path: '/admin' }, + { name: 'admin-system', path: '/admin/system' } ]; function buildAxe(page: Parameters[0]['page']) { diff --git a/frontend/e2e/admin.spec.ts b/frontend/e2e/admin.spec.ts index 57682eec..d3bc26f1 100644 --- a/frontend/e2e/admin.spec.ts +++ b/frontend/e2e/admin.spec.ts @@ -248,3 +248,28 @@ test.describe('Admin system tab — backfill file hashes', () => { await page.screenshot({ path: 'test-results/e2e/admin-backfill-hashes.png' }); }); }); + +// ─── System tab — generate thumbnails ───────────────────────────────────────── + +test.describe('Admin system tab — generate thumbnails', () => { + test('admin triggers thumbnail generation and sees DONE within 30s', async ({ page }) => { + test.setTimeout(45_000); + + await page.goto('/admin'); + await page.waitForSelector('[data-hydrated]'); + + // Navigate to System tab + await page.getByRole('button', { name: /system/i }).click(); + + const btn = page + .locator('[data-thumbnails-trigger]') + .or(page.getByRole('button', { name: /thumbnails erzeugen/i })); + await expect(btn.first()).toBeVisible(); + await btn.first().click(); + + // Status transitions RUNNING → DONE; poll message shows the final summary + await expect(page.getByTestId('thumbnails-status-done')).toBeVisible({ timeout: 30_000 }); + + await page.screenshot({ path: 'test-results/e2e/admin-generate-thumbnails.png' }); + }); +});