The-DevOps-Daily/devops-daily

feat: Increase component test coverage

Open

#544 geöffnet am 2. Dez. 2025

Auf GitHub ansehen
 (0 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)TypeScript (392 Forks)github user discovery
enhancementgood first issuehacktoberfest

Repository-Metriken

Stars
 (1.087 Stars)
PR-Merge-Metriken
 (PR-Metriken ausstehend)

Beschreibung

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

  1. components/games/quiz-manager.tsx - Quiz card rendering
  2. components/game-card.tsx - Game card component
  3. components/code-block.tsx - Syntax highlighting
  4. components/markdown-content.tsx - Markdown rendering
  5. components/search.tsx - Search functionality

Medium Priority

  1. components/quizzes-hero.tsx - Hero animations
  2. components/roadmap-hero.tsx - Hero animations
  3. components/header.tsx - Navigation
  4. components/footer.tsx - Footer
  5. components/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.tsx
  • components/__tests__/quiz-manager.test.tsx
  • components/__tests__/code-block.test.tsx
  • components/__tests__/markdown-content.test.tsx
  • components/__tests__/search.test.tsx
  • docs/testing-guide.md - Testing best practices

Contributor Guide