enhancementgood first issuehacktoberfest
Repository metrics
- Stars
- (1,087 stars)
- PR merge metrics
- (PR metrics pending)
説明
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