import { render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { describe, it, expect, vi } from 'vitest'; import { Tabs, TabsList, TabsTrigger, TabsContent } from './tabs'; import React from 'react'; describe('Tabs', () => { it('renders correctly', () => { render( Tab 1 Tab 2 Content 1 Content 2 ); expect(screen.getByText('Tab 1')).toBeInTheDocument(); expect(screen.getByText('Content 1')).toBeInTheDocument(); expect(screen.queryByText('Content 2')).not.toBeInTheDocument(); }); it('switches content when trigger is clicked', async () => { const user = userEvent.setup(); const onValueChange = vi.fn(); render( Tab 1 Tab 2 Content 1 Content 2 ); const trigger2 = screen.getByRole('tab', { name: 'Tab 2' }); await user.click(trigger2); await waitFor(() => { expect(onValueChange).toHaveBeenCalledWith('tab2'); }); await waitFor(() => { expect(screen.getByText('Content 2')).toBeInTheDocument(); }); }); });