// File: frontend/components/layout/__tests__/header.test.tsx // Change Log // - 2026-06-13: Add coverage for Header composition. import { render, screen } from '@testing-library/react'; import { describe, expect, it, vi } from 'vitest'; import { Header } from '../header'; vi.mock('../user-menu', () => ({ UserMenu: () =>
User menu
})); vi.mock('../global-search', () => ({ GlobalSearch: () => })); vi.mock('../notifications-dropdown', () => ({ NotificationsDropdown: () => })); vi.mock('../sidebar', () => ({ MobileSidebar: () => })); vi.mock('../theme-toggle', () => ({ ThemeToggle: () => })); vi.mock('../project-switcher', () => ({ ProjectSwitcher: () => })); describe('Header', () => { it('renders application title and composed controls', () => { render(
); expect(screen.getByText('LCBP3-DMS')).toBeInTheDocument(); expect(screen.getByLabelText('Search')).toBeInTheDocument(); expect(screen.getByRole('button', { name: 'Mobile sidebar' })).toBeInTheDocument(); expect(screen.getByRole('button', { name: 'Project' })).toBeInTheDocument(); expect(screen.getByRole('button', { name: 'Theme' })).toBeInTheDocument(); expect(screen.getByRole('button', { name: 'Notifications' })).toBeInTheDocument(); expect(screen.getByText('User menu')).toBeInTheDocument(); }); });