import { describe, it, expect, vi } from 'vitest'; import { render, screen, fireEvent } from '@testing-library/react'; import { Collapsible } from './collapsible'; describe('Collapsible', () => { it('renders trigger content', () => { render( Click me}>

Hidden content

); expect(screen.getByText('Click me')).toBeInTheDocument(); }); it('starts collapsed by default', () => { render( Toggle}>

Content

); const button = screen.getByRole('button'); expect(button).toHaveAttribute('aria-expanded', 'false'); }); it('toggles on click', () => { render( Toggle}>

Content

); const button = screen.getByRole('button'); fireEvent.click(button); expect(button).toHaveAttribute('aria-expanded', 'true'); }); it('calls onOpenChange when toggled', () => { const onOpenChange = vi.fn(); render( Toggle} onOpenChange={onOpenChange}>

Content

); fireEvent.click(screen.getByRole('button')); expect(onOpenChange).toHaveBeenCalledWith(true); }); it('respects defaultOpen prop', () => { render( Toggle} defaultOpen>

Content

); expect(screen.getByRole('button')).toHaveAttribute('aria-expanded', 'true'); }); it('hides chevron when showChevron is false', () => { const { container } = render( Toggle} showChevron={false}>

Content

); // No SVG icon should be rendered expect(container.querySelector('svg')).toBeNull(); }); });