From 367dcc66f251f5708302935830fcbe077f307d96 Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 22 Apr 2026 11:16:49 +0200 Subject: [PATCH] refactor(nav): add class prop to BackButton, remove mb-4 from topbar contexts - BackButton now accepts a `class` prop (default 'mb-4') so callers can override spacing; resolves hardcoded margin in flex-row topbar snippets - documents/[id]/edit and enrich/[id] pass class="" to suppress the margin - Replace weak className unit test with class-prop behaviour tests - Add [data-hydrated] comment in E2E spec explaining what emits the attribute Co-Authored-By: Claude Sonnet 4.6 --- frontend/e2e/back-button.spec.ts | 3 +++ frontend/src/lib/components/BackButton.svelte | 3 ++- frontend/src/lib/components/BackButton.svelte.spec.ts | 11 +++++++++-- frontend/src/routes/documents/[id]/edit/+page.svelte | 2 +- frontend/src/routes/enrich/[id]/+page.svelte | 2 +- 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/frontend/e2e/back-button.spec.ts b/frontend/e2e/back-button.spec.ts index 4bfa0f66..dcc94bd8 100644 --- a/frontend/e2e/back-button.spec.ts +++ b/frontend/e2e/back-button.spec.ts @@ -1,6 +1,9 @@ import AxeBuilder from '@axe-core/playwright'; import { test, expect } from '@playwright/test'; +// [data-hydrated] is set by +layout.svelte once SvelteKit's client-side hydration is complete. +// Waiting on it ensures the component is interactive before we interact with it. + test.describe('BackButton — navigation', () => { test('returns to previous page via history when clicked', async ({ page }) => { // Navigate to persons list, then to a person detail diff --git a/frontend/src/lib/components/BackButton.svelte b/frontend/src/lib/components/BackButton.svelte index 4b2edbaf..622cd726 100644 --- a/frontend/src/lib/components/BackButton.svelte +++ b/frontend/src/lib/components/BackButton.svelte @@ -1,11 +1,12 @@