scrapeRL / frontend /src /test /components.test.tsx
NeerajCodz's picture
test: add frontend test suite with vitest
ebe1c3d
import { describe, it, expect } from 'vitest';
import { render, screen } from '@testing-library/react';
import { Button } from '../components/ui/Button';
import { Badge } from '../components/ui/Badge';
import { Card, CardHeader, CardContent } from '../components/ui/Card';
describe('UI Components', () => {
describe('Button', () => {
it('renders with children', () => {
render(<Button>Click me</Button>);
expect(screen.getByText('Click me')).toBeInTheDocument();
});
it('applies variant classes', () => {
render(<Button variant="primary">Primary</Button>);
const button = screen.getByText('Primary');
expect(button).toHaveClass('btn-primary');
});
it('is disabled when disabled prop is true', () => {
render(<Button disabled>Disabled</Button>);
const button = screen.getByText('Disabled');
expect(button).toBeDisabled();
});
});
describe('Badge', () => {
it('renders with text', () => {
render(<Badge>Status</Badge>);
expect(screen.getByText('Status')).toBeInTheDocument();
});
it('applies success variant classes', () => {
render(<Badge variant="success">Success</Badge>);
const badge = screen.getByText('Success');
expect(badge).toHaveClass('text-green-400');
});
});
describe('Card', () => {
it('renders card with header and content', () => {
render(
<Card>
<CardHeader title="Test Card" />
<CardContent>Card content</CardContent>
</Card>
);
expect(screen.getByText('Test Card')).toBeInTheDocument();
expect(screen.getByText('Card content')).toBeInTheDocument();
});
});
});