import { describe, expect, it } from 'vitest'; import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { Tabs, TabsContent, TabsList, TabsTrigger } from './tabs'; const Example = () => ( Overview Activity Billing Overview panel Activity panel Billing panel ); describe('Tabs', () => { it('renders only the selected panel', () => { render(); expect(screen.getByText('Overview panel')).toBeInTheDocument(); expect(screen.queryByText('Activity panel')).not.toBeInTheDocument(); }); it('switches panels on click', async () => { render(); await userEvent.click(screen.getByRole('tab', { name: 'Activity' })); expect(screen.getByText('Activity panel')).toBeInTheDocument(); expect(screen.queryByText('Overview panel')).not.toBeInTheDocument(); }); it('moves between tabs with the arrow keys', async () => { render(); await userEvent.click(screen.getByRole('tab', { name: 'Overview' })); await userEvent.keyboard('{ArrowRight}'); expect(screen.getByRole('tab', { name: 'Activity' })).toHaveAttribute( 'aria-selected', 'true' ); }); it('skips a disabled tab', async () => { render(); await userEvent.click(screen.getByRole('tab', { name: 'Billing' })); expect(screen.getByText('Overview panel')).toBeInTheDocument(); }); });