'use client' /** * Test Dashboard - Zentrales Test-Registry * * Aggregiert alle 280+ Tests aus allen Services: * - Go Unit Tests (~57) * - Python Tests (~50) * - BQAS Golden (97) * - BQAS RAG (~20) * - TypeScript Jest (~8) * - SDK Vitest Unit Tests (~43) * - SDK Playwright E2E (~25) * - E2E Playwright (~5) */ import React, { useState, useEffect, useCallback, useRef } from 'react' import Link from 'next/link' import { PagePurpose } from '@/components/common/PagePurpose' import { DevOpsPipelineSidebarResponsive } from '@/components/infrastructure/DevOpsPipelineSidebar' import type { LLMRoutingOption } from '@/types/infrastructure-modules' import type { ServiceTestInfo, TestRegistryStats, TestRun, CoverageData, TabType, Toast, FailedTest, BacklogItem, BacklogPriority, BacklogStatus, TrendDataPoint, } from './types' // API Configuration const API_BASE = '/api/tests' // ============================================================================== // Toast Notification Component // ============================================================================== function ToastContainer({ toasts, onDismiss }: { toasts: Toast[]; onDismiss: (id: number) => void }) { return (
{title}
{value}
{subtitle &&{subtitle}
}{service.port ? `Port ${service.port}` : 'Library'} • {service.language}
{service.total_tests}
Tests
{service.passed_tests}
Bestanden
{service.failed_tests}
Fehler
| ID | Service | Zeitpunkt | Tests | Bestanden | Dauer | Status |
|---|---|---|---|---|---|---|
| {run.id.slice(-8)} | {run.service} | {new Date(run.started_at).toLocaleString('de-DE')} | {run.total_tests} | {run.passed_tests} / {run.failed_tests} | {run.duration_seconds.toFixed(1)}s | {run.status} |
Das Test Dashboard ist die zentrale Uebersicht fuer alle 260+ Tests im Breakpilot-System. Es aggregiert Tests aus verschiedenen Services (Go, Python, TypeScript) ohne diese physisch zu migrieren. Tests bleiben an ihren konventionellen Orten, werden aber hier zentral ueberwacht und ausgefuehrt. Seit 2026-02 inklusive AI Compliance SDK Unit Tests (Vitest) und E2E Tests (Playwright).
consent-service, billing-service, school-service, edu-search-service, ai-compliance-sdk
backend, voice-service, klausur-service, geo-service
Validierte Referenz-Tests mit LLM-Judge fuer Intent-Erkennung
RAG-Judge Tests fuer Retrieval, Citations, Hallucination-Control
Website Unit Tests fuer React-Komponenten
AI Compliance SDK Unit Tests: Types, Export, Components, Reducer
SDK E2E Tests: Navigation, Workflow, Command Bar, Export
End-to-End Tests fuer kritische User Flows
Docker Compose basierte E2E-Tests mit Backend, Consent-Service, DB
{`┌────────────────────────────────────────────────────────────────────┐
│ Admin-v2 Test Dashboard │
│ /infrastructure/tests │
├────────────────────────────────────────────────────────────────────┤
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌─────────────┐ │
│ │ Unit Tests │ │ SDK Tests │ │ BQAS │ │ E2E Tests │ │
│ │ (Go, Py) │ │ (Vitest) │ │ (LLM/RAG) │ │ (Playwright)│ │
│ └────────────┘ └────────────┘ └────────────┘ └─────────────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Test Registry API │ │
│ │ /backend/api/tests/registry.py │ │
│ └──────────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────────┘
Tests bleiben wo sie sind:
- /consent-service/internal/**/*_test.go
- /backend/tests/test_*.py
- /voice-service/tests/bqas/
- /admin-v2/components/sdk/__tests__/*.test.ts (Vitest)
- /admin-v2/e2e/specs/*.spec.ts (Playwright)`}
Daten-Fluss: Woodpecker CI → POST /api/tests/ci-result → PostgreSQL → Test Dashboard
BQAS Dashboard
Detaillierte BQAS-Metriken und Trend-Analyse
CI/CD Pipelines
Gitea Actions und automatische Test-Planung
{test.file_path}
Fehlermeldung:
{test.error_message || 'Keine Details verfuegbar'}
💡 Loesungsvorschlag:
{test.suggestion}
{openCount}
Offene Fehler
{inProgressCount}
In Arbeit
{fixedCount}
Behoben
{flakyCount}
Flaky
{criticalCount + highCount}
Kritisch/Hoch
KI-gestuetzte Fix-Vorschlaege fuer Backlog-Eintraege
LLM-Routing Strategie:
{llmRouting === 'local_only' && 'Alle Analysen werden mit Qwen2.5-32B lokal durchgefuehrt. Keine Daten verlassen den Server.'} {llmRouting === 'claude_preferred' && 'Verwendet Claude fuer beste Fix-Qualitaet. Nur Code-Snippets werden uebertragen.'} {llmRouting === 'smart_routing' && 'Privacy Classifier entscheidet automatisch: Sensitive Daten → lokal, Code → Claude.'}
{filterStatus === 'open' ? 'Keine offenen Fehler! 🎉' : 'Keine Tests mit diesem Filter gefunden.'}
{filterStatus === 'open' && (Alle Tests bestanden. Bereit fuer Go-Live!
)}Workflow fuer fehlgeschlagene Tests:
Golden Suite, RAG Tests und Synthetic Tests
Tipp: Das vollstaendige BQAS Dashboard unter /ai/test-quality bietet detaillierte Metriken, Trend-Analyse und Intent-spezifische Scores.