fix(notification): replace view-all anchor with button to prevent iframe navigation

SvelteKit's capture-phase link interceptor fires before the component's
onclick handler, so e.preventDefault() was structurally too late to stop
iframe navigation in vitest-browser. Replacing the <a href> with a
<button type="button"> removes the href entirely — the interceptor never
fires — and the existing goto() mock in tests is sufficient.

Also splits the single view-all test into two focused it() blocks and
clears mocks in afterEach to prevent cross-test mock leakage.

Fixes #551

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-05-12 16:37:54 +02:00
parent d21ba8fed2
commit 8ccc9aba1a
2 changed files with 24 additions and 10 deletions

View File

@@ -13,8 +13,7 @@ type Props = {
let { notifications, onMarkRead, onMarkAllRead, onClose }: Props = $props();
function handleViewAll(e: MouseEvent) {
e.preventDefault();
function handleViewAll() {
onClose();
goto('/aktivitaeten');
}
@@ -134,12 +133,12 @@ function handleViewAll(e: MouseEvent) {
{/if}
<div class="border-t border-line px-4 py-2">
<a
href="/aktivitaeten"
<button
type="button"
onclick={handleViewAll}
class="text-xs font-medium text-ink-2 transition-colors hover:text-ink"
>
{m.chronik_view_all()}
</a>
</button>
</div>
</div>