enhancementgood first issuehacktoberfest
Repository metrics
- Stars
- (1,087 stars)
- PR merge metrics
- (Avg merge 1d 23h) (82 merged PRs in 30d)
Description
Description
Increase test coverage by adding unit tests for React components. Currently, only validation tests exist (11 test files, 4316 tests).
Current Test Coverage
- ✅ Excellent: Data validation tests
- ✅ Excellent: Markdown validation
- ✅ Excellent: Content quality checks
- ❌ Missing: Component unit tests
- ❌ Missing: Hook tests
- ❌ Missing: Utility function tests
Components Needing Tests (Priority Order)
High Priority
components/games/quiz-manager.tsx- Quiz card renderingcomponents/game-card.tsx- Game card componentcomponents/code-block.tsx- Syntax highlightingcomponents/markdown-content.tsx- Markdown renderingcomponents/search.tsx- Search functionality
Medium Priority
components/quizzes-hero.tsx- Hero animationscomponents/roadmap-hero.tsx- Hero animationscomponents/header.tsx- Navigationcomponents/footer.tsx- Footercomponents/theme-toggle.tsx- Dark mode toggle
Low Priority
- All other components in
components/ - Hooks in
hooks/(if any) - Utilities in
lib/
Testing Framework
- Already using: Vitest + React Testing Library
- Good foundation exists
Example Test Structure
import { describe, it, expect } from 'vitest';
import { render, screen } from '@testing-library/react';
import { GameCard } from '@/components/game-card';
describe('GameCard', () => {
it('renders game title', () => {
render(<GameCard title="Test Game" slug="test" />);
expect(screen.getByText('Test Game')).toBeInTheDocument();
});
it('renders game description', () => {
render(<GameCard title="Test" description="Fun game" slug="test" />);
expect(screen.getByText('Fun game')).toBeInTheDocument();
});
it('links to correct URL', () => {
render(<GameCard title="Test" slug="test-game" />);
const link = screen.getByRole('link');
expect(link).toHaveAttribute('href', '/games/test-game');
});
});
Acceptance Criteria
- Add unit tests for 5 high-priority components
- Achieve at least 70% component coverage
- Test component rendering
- Test prop variations
- Test user interactions (click, hover)
- Test conditional rendering
- Mock external dependencies
- Add coverage reporting to package.json
- Display coverage in CI
- Document testing guidelines
Coverage Commands
{
"scripts": {
"test:coverage": "vitest run --coverage",
"test:coverage:ui": "vitest --coverage --ui"
}
}
Files to Create
components/__tests__/game-card.test.tsxcomponents/__tests__/quiz-manager.test.tsxcomponents/__tests__/code-block.test.tsxcomponents/__tests__/markdown-content.test.tsxcomponents/__tests__/search.test.tsxdocs/testing-guide.md- Testing best practices