diff --git a/tests/e2e/remote/shopping.spec.ts b/tests/e2e/remote/shopping.spec.ts index e93f803..1eb606b 100644 --- a/tests/e2e/remote/shopping.spec.ts +++ b/tests/e2e/remote/shopping.spec.ts @@ -3,6 +3,10 @@ import { setActiveProfile, HENDRIK_ID } from './fixtures/profile'; import { clearShoppingCart } from './fixtures/api-cleanup'; test.describe('Einkaufsliste E2E', () => { + test.beforeEach(async ({ request }) => { + await clearShoppingCart(request); + }); + test.afterEach(async ({ request }) => { await clearShoppingCart(request); }); @@ -71,9 +75,13 @@ test.describe('Einkaufsliste E2E', () => { const badgeTextBefore = await countBadge.textContent(); const numBefore = Number((badgeTextBefore ?? '').replace(/\D+/g, '')) || 0; - const firstRow = page.locator('label.row').first(); - await firstRow.locator('input[type=checkbox]').check(); - await expect(firstRow).toHaveClass(/checked/); + // Anzahl abgehakter Zeilen vorher (sollte 0 sein, weil beforeEach cart leert) + const checkedBefore = await page.locator('label.row.checked').count(); + // Erste Zeile abhaken — Playwright laesst die Checkbox direkt interagieren + await page.locator('label.row').first().locator('input[type=checkbox]').check(); + // Nach Store-Refresh sortiert SQL "ORDER BY checked ASC" abgehakte ans + // Ende, also pruefen wir die Gesamtzahl, nicht die Position. + await expect(page.locator('label.row.checked')).toHaveCount(checkedBefore + 1); // Badge muss sinken (nach Store-Refresh) await expect