Frontend Testanforderungen: Evaluation Features
Version: 1.0 | Stand: 30. Dezember 2025
Übersicht
Dieses Dokument beschreibt alle Tests für die Evaluations-Features: Ranking, Rating, Judge, OnCoCo, KAIMO.
1. Ranker (/Ranker)
Komponente: Ranker.vue, RankerDetail.vue
Priorität: P1
Permission: feature:ranking:view
Funktionale Tests
| ID |
Test |
Erwartung |
Art |
| RANK-001 |
Übersicht lädt |
Thread-Liste sichtbar |
E2E |
| RANK-002 |
Threads nach Szenario |
Nur zugewiesene Threads |
E2E |
| RANK-003 |
Status-Badge |
Fertig/Offen-Status korrekt |
E2E |
| RANK-004 |
Thread anklicken |
Detail-Ansicht öffnet |
E2E |
| RANK-005 |
Features laden |
Alle Features des Threads |
E2E |
| RANK-006 |
Drag & Drop |
Features umsortierbar |
E2E |
| RANK-007 |
Ranking speichern |
API-Call erfolgreich |
E2E |
| RANK-008 |
Ranking laden |
Gespeichertes Ranking angezeigt |
E2E |
| RANK-009 |
Fortschritt aktualisiert |
Nach Speichern Status "Fertig" |
E2E |
| RANK-010 |
Navigation zurück |
Zurück zur Übersicht |
E2E |
Drag & Drop Tests
| ID |
Test |
Erwartung |
Art |
| RANK-DD1 |
Feature nach oben ziehen |
Reihenfolge ändert sich |
E2E |
| RANK-DD2 |
Feature nach unten ziehen |
Reihenfolge ändert sich |
E2E |
| RANK-DD3 |
Feature an gleiche Stelle |
Keine Änderung |
E2E |
| RANK-DD4 |
Keyboard Drag |
Mit Tastatur sortierbar |
E2E |
| RANK-DD5 |
Touch Drag |
Auf Mobile sortierbar |
E2E |
E2E Test-Code
// e2e/evaluation/ranker.spec.ts
import { test, expect } from '../fixtures/auth'
test.describe('Ranker', () => {
test('RANK-001: overview loads threads', async ({ authenticatedPage }) => {
await authenticatedPage.goto('/Ranker')
await expect(authenticatedPage.locator('.thread-card')).toHaveCount(1, { min: true })
})
test('RANK-006: drag and drop works', async ({ authenticatedPage }) => {
await authenticatedPage.goto('/Ranker/1')
// Erste und zweite Feature-Position merken
const features = authenticatedPage.locator('.feature-item')
const firstFeature = await features.nth(0).textContent()
const secondFeature = await features.nth(1).textContent()
// Drag first to second position
await features.nth(0).dragTo(features.nth(1))
// Prüfe neue Reihenfolge
const newFirst = await features.nth(0).textContent()
expect(newFirst).toBe(secondFeature)
})
test('RANK-007: save ranking', async ({ authenticatedPage }) => {
await authenticatedPage.goto('/Ranker/1')
// Speichern klicken
await authenticatedPage.click('button:has-text("Speichern")')
// Success-Snackbar
await expect(authenticatedPage.locator('.v-snackbar')).toContainText('gespeichert')
})
})
2. Rater (/Rater)
Komponente: Rater.vue, RaterDetail.vue, RaterDetailFeature.vue
Priorität: P1
Permission: feature:rating:view
Funktionale Tests
| ID |
Test |
Erwartung |
Art |
| RATE-001 |
Übersicht lädt |
Thread-Liste sichtbar |
E2E |
| RATE-002 |
Thread anklicken |
Feature-Liste öffnet |
E2E |
| RATE-003 |
Feature anklicken |
Rating-Interface öffnet |
E2E |
| RATE-004 |
Rating-Skala |
1-5 Sterne/Slider sichtbar |
E2E |
| RATE-005 |
Rating speichern |
API-Call erfolgreich |
E2E |
| RATE-006 |
Rating laden |
Gespeichertes Rating angezeigt |
E2E |
| RATE-007 |
Nächstes Feature |
Navigation zu nächstem |
E2E |
| RATE-008 |
Vorheriges Feature |
Navigation zu vorherigem |
E2E |
| RATE-009 |
Alle Features bewertet |
Thread als "Fertig" markiert |
E2E |
| RATE-010 |
Kommentar speichern |
Freitext-Kommentar gespeichert |
E2E |
Rating-Interface Tests
| ID |
Test |
Erwartung |
Art |
| RATE-UI1 |
Slider bewegen |
Wert ändert sich |
E2E |
| RATE-UI2 |
Sterne klicken |
Rating gesetzt |
E2E |
| RATE-UI3 |
Kategorie wählen |
Selection markiert |
E2E |
| RATE-UI4 |
Kommentarfeld |
Text eingebbar |
E2E |
| RATE-UI5 |
Formular validiert |
Pflichtfelder geprüft |
E2E |
3. LLM-as-Judge (/judge)
Komponente: JudgeOverview.vue, JudgeConfig.vue, JudgeSession.vue, JudgeResults.vue
Priorität: P1
Permission: feature:judge:view, feature:judge:edit
Übersicht Tests
| ID |
Test |
Erwartung |
Art |
| JUDGE-001 |
Übersicht lädt |
Session-Liste sichtbar |
E2E |
| JUDGE-002 |
Neue Session |
Config-Dialog öffnet |
E2E |
| JUDGE-003 |
Status-Filter |
Sessions nach Status filtern |
E2E |
| JUDGE-004 |
Session anklicken |
Detail-Ansicht öffnet |
E2E |
| JUDGE-005 |
Session löschen |
Session entfernt |
E2E |
Konfiguration Tests
| ID |
Test |
Erwartung |
Art |
| JUDGE-C01 |
Name eingeben |
Name gespeichert |
E2E |
| JUDGE-C02 |
Pillars auswählen |
Pillars selektierbar |
E2E |
| JUDGE-C03 |
LLM auswählen |
Model selektierbar |
E2E |
| JUDGE-C04 |
Worker-Anzahl |
1-10 Worker einstellbar |
E2E |
| JUDGE-C05 |
Comparison Mode |
Mode auswählbar |
E2E |
| JUDGE-C06 |
Estimation |
Geschätzte Vergleiche angezeigt |
E2E |
| JUDGE-C07 |
Session erstellen |
Session in DB angelegt |
E2E |
Session Tests
| ID |
Test |
Erwartung |
Art |
| JUDGE-S01 |
Session starten |
Status wechselt zu "running" |
E2E |
| JUDGE-S02 |
Session pausieren |
Status wechselt zu "paused" |
E2E |
| JUDGE-S03 |
Session fortsetzen |
Status wechselt zu "running" |
E2E |
| JUDGE-S04 |
Progress Bar |
Fortschritt aktualisiert |
E2E |
| JUDGE-S05 |
Worker Lanes |
Alle Worker sichtbar |
E2E |
| JUDGE-S06 |
Streaming |
LLM-Output streamt |
E2E |
| JUDGE-S07 |
Queue Panel |
Warteschlange sichtbar |
E2E |
| JUDGE-S08 |
History Table |
Abgeschlossene Vergleiche |
E2E |
| JUDGE-S09 |
Fullscreen Mode |
Fullscreen Dialog öffnet |
E2E |
| JUDGE-S10 |
Multi-Worker View |
Grid-Ansicht funktioniert |
E2E |
Ergebnis Tests
| ID |
Test |
Erwartung |
Art |
| JUDGE-R01 |
Ergebnisse laden |
Statistics sichtbar |
E2E |
| JUDGE-R02 |
Ranking-Tabelle |
LLMs gerankt |
E2E |
| JUDGE-R03 |
Thread Performance |
Pro-Thread Analyse |
E2E |
| JUDGE-R04 |
Transition Matrix |
Matrix-Heatmap |
E2E |
| JUDGE-R05 |
Position Swap |
Bias-Analyse |
E2E |
| JUDGE-R06 |
Verbosity Analysis |
Längen-Analyse |
E2E |
| JUDGE-R07 |
Export CSV |
Download funktioniert |
E2E |
| JUDGE-R08 |
Export JSON |
Download funktioniert |
E2E |
E2E Test-Code
// e2e/evaluation/judge.spec.ts
import { test, expect } from '../fixtures/auth'
test.describe('LLM-as-Judge', () => {
test('JUDGE-001: overview loads', async ({ adminPage }) => {
await adminPage.goto('/judge')
await expect(adminPage.locator('.session-list')).toBeVisible()
})
test('JUDGE-S01: start session', async ({ adminPage }) => {
await adminPage.goto('/judge/session/1')
await adminPage.click('button:has-text("Starten")')
await expect(adminPage.locator('.status-badge')).toContainText('running', {
timeout: 10000
})
})
test('JUDGE-S06: LLM streaming works', async ({ adminPage }) => {
await adminPage.goto('/judge/session/1')
// Session starten
await adminPage.click('button:has-text("Starten")')
// Warten auf ersten Stream
await expect(adminPage.locator('.worker-output')).toContainText(/\w+/, {
timeout: 30000
})
})
})
4. OnCoCo (/oncoco)
Komponente: OnCoCoOverview.vue, OnCoCoConfig.vue, OnCoCoResults.vue
Priorität: P1
Permission: feature:oncoco:view, feature:oncoco:edit
Funktionale Tests
| ID |
Test |
Erwartung |
Art |
| ONCO-001 |
Übersicht lädt |
Analyse-Liste sichtbar |
E2E |
| ONCO-002 |
Neue Analyse |
Config-Dialog öffnet |
E2E |
| ONCO-003 |
Analyse konfigurieren |
Parameter einstellbar |
E2E |
| ONCO-004 |
Analyse starten |
Processing beginnt |
E2E |
| ONCO-005 |
Progress tracking |
Fortschritt sichtbar |
E2E |
| ONCO-006 |
Ergebnisse laden |
Results-View öffnet |
E2E |
| ONCO-007 |
Transition Matrix |
Heatmap angezeigt |
E2E |
| ONCO-008 |
Statistics |
Chi-Square, Effektstärke |
E2E |
| ONCO-009 |
Pillar Comparison |
Vergleichs-Panel |
E2E |
| ONCO-010 |
Export |
Daten exportierbar |
E2E |
5. KAIMO (/kaimo)
Komponente: KaimoHub.vue, KaimoPanel.vue, KaimoCase.vue, KaimoCaseEditor.vue
Priorität: P2
Permission: feature:kaimo:view, feature:kaimo:edit, admin:kaimo:manage
Hub Tests
| ID |
Test |
Erwartung |
Art |
| KAIMO-001 |
Hub lädt |
Case-Grid sichtbar |
E2E |
| KAIMO-002 |
Kategorien angezeigt |
Category-Filter funktioniert |
E2E |
| KAIMO-003 |
Case anklicken |
Case-Detail öffnet |
E2E |
| KAIMO-004 |
Neuer Case (Admin) |
Editor öffnet |
E2E |
| KAIMO-005 |
Published Badge |
Status korrekt angezeigt |
E2E |
Case Tests
| ID |
Test |
Erwartung |
Art |
| KAIMO-C01 |
Case laden |
Alle Tabs sichtbar |
E2E |
| KAIMO-C02 |
Documents Tab |
Dokumente angezeigt |
E2E |
| KAIMO-C03 |
Assessment Tab |
Bewertungsformular |
E2E |
| KAIMO-C04 |
Diagram Tab |
Visualisierung |
E2E |
| KAIMO-C05 |
Hint anzeigen |
Hinweis einblenden |
E2E |
| KAIMO-C06 |
Assessment speichern |
Bewertung gespeichert |
E2E |
| KAIMO-C07 |
Case abschließen |
Completion markiert |
E2E |
Admin Tests
| ID |
Test |
Erwartung |
Art |
| KAIMO-A01 |
Case erstellen |
Neuer Case in DB |
E2E |
| KAIMO-A02 |
Case editieren |
Änderungen gespeichert |
E2E |
| KAIMO-A03 |
Case publizieren |
Status = published |
E2E |
| KAIMO-A04 |
Hint hinzufügen |
Hint gespeichert |
E2E |
| KAIMO-A05 |
Document hinzufügen |
Dokument verknüpft |
E2E |
| KAIMO-A06 |
Ergebnisse einsehen |
Results-View |
E2E |
6. Authenticity (Fake/Echt) (/authenticity)
Komponente: AuthenticityOverview.vue, AuthenticityDetail.vue
Priorität: P2
Permission: feature:authenticity:view, feature:authenticity:edit
Funktionale Tests
| ID |
Test |
Erwartung |
Art |
| AUTH-001 |
Übersicht lädt |
Thread-Cards sichtbar |
E2E |
| AUTH-002 |
Thread anklicken |
Detail-Ansicht |
E2E |
| AUTH-003 |
Konversation lesen |
Messages angezeigt |
E2E |
| AUTH-004 |
Vote "Echt" |
Vote gespeichert |
E2E |
| AUTH-005 |
Vote "Fake" |
Vote gespeichert |
E2E |
| AUTH-006 |
Vote ändern |
Änderung möglich |
E2E |
| AUTH-007 |
Completion Badge |
Nach Vote markiert |
E2E |
7. Evaluation Hub (/evaluation)
Komponente: EvaluationHub.vue
Priorität: P1
Funktionale Tests
| ID |
Test |
Erwartung |
Art |
| EVAL-001 |
Hub lädt |
Tool-Grid sichtbar |
E2E |
| EVAL-002 |
Tools gefiltert |
Nur erlaubte Tools |
E2E |
| EVAL-003 |
Scenario Count |
Anzahl pro Tool korrekt |
E2E |
| EVAL-004 |
Disabled State |
Tools ohne Szenarien grau |
E2E |
| EVAL-005 |
Tool anklicken |
Navigation korrekt |
E2E |
Checkliste für manuelle Tests
Ranking/Rating
Judge
OnCoCo
KAIMO
Letzte Aktualisierung: 30. Dezember 2025