Compare commits

...

1 Commits

Author SHA1 Message Date
Marcel
53b482c5f2 fix(e2e): fix admin tag test (use existing tag) and annotation locator
Some checks failed
CI / Unit & Component Tests (push) Successful in 2m37s
CI / Backend Unit Tests (push) Successful in 2m18s
CI / E2E Tests (push) Failing after 30m45s
- Admin tag test: "Familie" never existed in the database; use "Fest"
  which is a real seeded tag, with a matching rename-back to restore state
- Annotation hash test: the broad `[data-testid^="annotation-"]` locator
  also matched `annotation-side-panel` (always in DOM, even when
  off-screen); extend the :not() exclusion list to cover it

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 11:34:42 +01:00
2 changed files with 15 additions and 13 deletions

View File

@@ -180,19 +180,19 @@ test.describe('Admin — tag management', () => {
// Wait for the tags list to render after the tab switch // Wait for the tags list to render after the tab switch
await page.waitForSelector('ul > li'); await page.waitForSelector('ul > li');
// Hover over the "Familie" row to reveal the opacity-0 action buttons // Hover over the "Fest" row to reveal the opacity-0 action buttons
const familieRow = page const festRow = page
.locator('ul > li') .locator('ul > li')
.filter({ has: page.locator('span', { hasText: /^Familie$/ }) }); .filter({ has: page.locator('span', { hasText: /^Fest$/ }) });
await familieRow.hover(); await festRow.hover();
await familieRow.getByRole('button', { name: 'Schlagwort bearbeiten' }).click(); await festRow.getByRole('button', { name: 'Schlagwort bearbeiten' }).click();
// After clicking edit, {#if editingTagId} replaces the span with a form — // After clicking edit, {#if editingTagId} replaces the span with a form —
// the familieRow filter no longer matches, so we find the input directly. // the festRow filter no longer matches, so we find the input directly.
await page.locator('input[name="name"]').fill('Familie (E2E)'); await page.locator('input[name="name"]').fill('Fest (E2E)');
await page.getByRole('button', { name: 'Speichern' }).click(); await page.getByRole('button', { name: 'Speichern' }).click();
await expect(page.getByText('Familie (E2E)')).toBeVisible(); await expect(page.getByText('Fest (E2E)')).toBeVisible();
await page.screenshot({ path: 'test-results/e2e/admin-tag-renamed.png' }); await page.screenshot({ path: 'test-results/e2e/admin-tag-renamed.png' });
}); });
@@ -205,14 +205,14 @@ test.describe('Admin — tag management', () => {
const renamedRow = page const renamedRow = page
.locator('ul > li') .locator('ul > li')
.filter({ has: page.locator('span', { hasText: /^Familie \(E2E\)$/ }) }); .filter({ has: page.locator('span', { hasText: /^Fest \(E2E\)$/ }) });
await renamedRow.hover(); await renamedRow.hover();
await renamedRow.getByRole('button', { name: 'Schlagwort bearbeiten' }).click(); await renamedRow.getByRole('button', { name: 'Schlagwort bearbeiten' }).click();
await page.locator('input[name="name"]').fill('Familie'); await page.locator('input[name="name"]').fill('Fest');
await page.getByRole('button', { name: 'Speichern' }).click(); await page.getByRole('button', { name: 'Speichern' }).click();
await expect(page.getByText('Familie')).toBeVisible(); await expect(page.getByText('Fest')).toBeVisible();
await page.screenshot({ path: 'test-results/e2e/admin-tag-restored.png' }); await page.screenshot({ path: 'test-results/e2e/admin-tag-restored.png' });
}); });
}); });

View File

@@ -461,9 +461,11 @@ test.describe('PDF annotations — file hash versioning', () => {
await page.waitForSelector('[data-hydrated]'); await page.waitForSelector('[data-hydrated]');
await page.locator('canvas').first().waitFor({ state: 'visible', timeout: 20000 }); await page.locator('canvas').first().waitFor({ state: 'visible', timeout: 20000 });
// Use :not() to exclude the outdated-notice element whose testid also starts with "annotation-" // Use :not() to exclude the outdated-notice and side-panel elements whose testid also starts with "annotation-"
await expect( await expect(
page.locator('[data-testid^="annotation-"]:not([data-testid="annotation-outdated-notice"])') page.locator(
'[data-testid^="annotation-"]:not([data-testid="annotation-outdated-notice"]):not([data-testid="annotation-side-panel"])'
)
).toHaveCount(0, { timeout: 8000 }); ).toHaveCount(0, { timeout: 8000 });
await expect(page.locator('[data-testid="annotation-outdated-notice"]')).toBeVisible({ await expect(page.locator('[data-testid="annotation-outdated-notice"]')).toBeVisible({
timeout: 5000 timeout: 5000