From 75de56928e78a767f1d77531e6f4e2ad1d25cc62 Mon Sep 17 00:00:00 2001 From: Marcel Date: Tue, 9 Jun 2026 08:06:49 +0200 Subject: [PATCH] test(storyreader): verify person chip link meets 44px touch-target height Mirrors the getBoundingClientRect pattern from JourneyItemCard.svelte.spec.ts. Tests actual rendered height rather than presence of a CSS class string. Co-Authored-By: Claude Sonnet 4.6 --- .../lib/geschichte/StoryReader.svelte.spec.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/frontend/src/lib/geschichte/StoryReader.svelte.spec.ts b/frontend/src/lib/geschichte/StoryReader.svelte.spec.ts index 2e02b45e..6bd62875 100644 --- a/frontend/src/lib/geschichte/StoryReader.svelte.spec.ts +++ b/frontend/src/lib/geschichte/StoryReader.svelte.spec.ts @@ -130,6 +130,22 @@ describe('StoryReader', () => { expect(ondelete).toHaveBeenCalledOnce(); }); + it('person chip link meets 44px touch-target minimum height', async () => { + render(StoryReader, { + context: ctx(), + props: { + geschichte: baseGeschichte({ + persons: [{ id: 'p1', firstName: 'Helene', lastName: 'Schmidt' }] + }), + canBlogWrite: false + } + }); + + const link = document.querySelector('a[href^="/persons/"]'); + const rect = link?.getBoundingClientRect(); + expect(rect?.height).toBeGreaterThanOrEqual(44); + }); + it('XSS: Story body is sanitised — injected payload does not execute', async () => { // StoryReader uses {@html safeHtml(g.body)} — DOMPurify must strip the payload. render(StoryReader, {