import { render } from '@testing-library/react'; import { describe, it, expect } from 'vitest'; import { Skeleton } from '../skeleton'; describe('Skeleton', () => { it('renders base skeleton with aria-hidden', () => { const { container } = render(); expect((container.firstChild as HTMLElement)).toHaveAttribute('aria-hidden', 'true'); }); it('base skeleton has animate-pulse class', () => { const { container } = render(); expect((container.firstChild as HTMLElement)).toHaveClass('animate-pulse'); }); it('Skeleton.Row renders with aria-hidden', () => { const { container } = render(); expect(container.querySelector('[aria-hidden]')).toBeInTheDocument(); }); it('Skeleton.Card renders with aria-hidden', () => { const { container } = render(); expect(container.querySelector('[aria-hidden]')).toBeInTheDocument(); }); it('Skeleton.Table renders default 5 rows + header', () => { const { container } = render(); // 1 header div + 5 SkeletonRow divs = 6 children const wrapper = container.firstChild as HTMLElement; expect(wrapper.children.length).toBe(6); }); it('Skeleton.Table renders custom rows count', () => { const { container } = render(); const wrapper = container.firstChild as HTMLElement; expect(wrapper.children.length).toBe(4); // 1 header + 3 rows }); it('merges custom className', () => { const { container } = render(); expect((container.firstChild as HTMLElement)).toHaveClass('custom-class'); }); });