test(hilfe): cover the Transkriptions-Richtlinien page

Title, all four section headings, secure Wikipedia link rel
attributes, five rule cards rendered, four klaerung chips rendered.

7 tests covering the static help page.

Refs #496.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-05-09 22:10:08 +02:00
committed by marcel
parent f1a0076cc0
commit 750f2463a2

View File

@@ -0,0 +1,64 @@
import { describe, it, expect, afterEach } from 'vitest';
import { cleanup, render } from 'vitest-browser-svelte';
import { page } from 'vitest/browser';
import TranskriptionsRichtlinienPage from './+page.svelte';
afterEach(cleanup);
describe('hilfe/transkription page', () => {
it('renders the page title', async () => {
render(TranskriptionsRichtlinienPage, { props: {} });
await expect
.element(page.getByRole('heading', { level: 1, name: /transkriptions-richtlinien/i }))
.toBeVisible();
});
it('renders the rules section heading', async () => {
render(TranskriptionsRichtlinienPage, { props: {} });
await expect
.element(page.getByRole('heading', { name: /regeln für die transkription/i }))
.toBeVisible();
});
it('renders the klaerung section heading', async () => {
render(TranskriptionsRichtlinienPage, { props: {} });
await expect.element(page.getByRole('heading', { name: /noch in klärung/i })).toBeVisible();
});
it('renders the closing question heading', async () => {
render(TranskriptionsRichtlinienPage, { props: {} });
await expect.element(page.getByRole('heading', { name: /fehlt eine regel/i })).toBeVisible();
});
it('renders the Wikipedia link with secure rel attributes', async () => {
render(TranskriptionsRichtlinienPage, { props: {} });
const link = (await page
.getByRole('link', { name: /wikipedia/i })
.element()) as HTMLAnchorElement;
expect(link.href).toContain('wikipedia.org');
expect(link.target).toBe('_blank');
expect(link.rel).toContain('noopener');
expect(link.rel).toContain('noreferrer');
});
it('renders five rule cards', async () => {
render(TranskriptionsRichtlinienPage, { props: {} });
// Each RichtlinienRuleCard heading appears once
const ruleHeadings = document.querySelectorAll('h3');
expect(ruleHeadings.length).toBeGreaterThanOrEqual(5);
});
it('renders four klaerung chips', async () => {
render(TranskriptionsRichtlinienPage, { props: {} });
// Chips are styled spans with rounded-full — count by class
const chips = document.querySelectorAll('span.rounded-full');
expect(chips.length).toBeGreaterThanOrEqual(4);
});
});