import { render, cleanup } from '@testing-library/react' import { afterEach, describe, expect, it } from 'vitest' import '@testing-library/jest-dom/vitest' import { LeaderboardSkeleton, ResultCardSkeleton, ResultSkeleton, SkeletonBlock, StatCardSkeleton, TestCardSkeleton, } from './Skeletons' afterEach(() => { cleanup() }) describe('Skeletons', () => { it('renders SkeletonBlock with the expected default classes and accessibility marker', () => { const { container } = render() const block = container.firstChild expect(block).toBeInTheDocument() expect(block).toHaveAttribute('aria-hidden', 'true') expect(block).toHaveClass('block', 'animate-pulse', 'rounded', 'bg-slate-200/80', 'dark:bg-slate-800', 'h-4', 'w-full') }) it('renders TestCardSkeleton with its card structure and pulse placeholders', () => { const { container } = render() const card = container.querySelector('.gate-card') expect(card).toBeInTheDocument() expect(card).toHaveClass('p-5', 'flex', 'flex-col', 'gap-3') expect(container.querySelectorAll('.animate-pulse')).not.toHaveLength(0) }) it('renders the other shared skeleton variants without crashing', () => { const statResult = render() expect(statResult.container.querySelector('.gate-card')).toBeInTheDocument() const leaderboardResult = render() expect(leaderboardResult.container.querySelectorAll('.animate-pulse').length).toBeGreaterThan(0) const resultCardResult = render() expect(resultCardResult.container.querySelector('.gate-card')).toBeInTheDocument() const resultPageResult = render() expect(resultPageResult.container.querySelectorAll('.animate-pulse').length).toBeGreaterThan(0) }) })