import { render, screen } from '@testing-library/react'; import Hero from '@/app/components/Hero'; // Mock next-intl/server jest.mock('next-intl/server', () => ({ getTranslations: () => Promise.resolve((key: string, values?: { days?: number }) => { const messages: Record = { kicker: 'Dennis Konkol — Osnabrück, Germany', claim: 'I self-host half my life. The rest I code.', intro: "IT admin in Osnabrück and master's student.", countdown: `${values?.days ?? 0} days to go.`, ctaWork: 'See projects', ctaContact: 'Write me', }; return messages[key] || key; }), })); describe('Hero', () => { it('renders the poster hero with claim, intro and calls to action', async () => { const HeroResolved = await Hero({ locale: 'en' }); render(HeroResolved); expect(screen.getByRole('heading', { level: 1 })).toHaveTextContent('I self-host half my life. The rest I code.'); expect(screen.getByText('Dennis Konkol — Osnabrück, Germany')).toBeInTheDocument(); expect(screen.getByText(/IT admin in Osnabrück/)).toBeInTheDocument(); expect(screen.getByRole('link', { name: /See projects/ })).toHaveAttribute('href', '#projects'); expect(screen.getByRole('link', { name: 'Write me' })).toHaveAttribute('href', '#contact'); }); it('renders the DK0 wordmark as decoration hidden from assistive tech', async () => { const HeroResolved = await Hero({ locale: 'en' }); const { container } = render(HeroResolved); const wordmark = container.querySelector('[aria-hidden="true"].font-display'); expect(wordmark).not.toBeNull(); expect(wordmark).toHaveTextContent('DK0'); }); });