// @ts-check const { test, expect } = require('@playwright/test'); /** * Stufe 2 · Teacher-Cockpit (Live-Tab) Smoke * * Prüft dass die /teacher-Seite lädt UND dass der Cockpit-API-Endpoint * existiert. Echtes Login + Klassen-Wahl braucht Test-Accounts (TODO). */ test('Teacher-Page lädt + zeigt Login-Form ODER ist eingeloggt', async ({ page }) => { const res = await page.goto('/teacher'); expect(res.status()).toBe(200); await page.waitForTimeout(500); // Entweder eingeloggt (Tabs sichtbar) oder Login-Form const hasTabs = await page.locator('.tab').count(); const hasLogin = await page.locator('input[type=email], input[type=password]').count(); expect(hasTabs + hasLogin, 'weder Tabs noch Login-Form auf /teacher').toBeGreaterThan(0); }); test('Cockpit-API antwortet ohne Auth mit 401 (nicht 500)', async ({ request }) => { // Ohne Cookie sollte 401 kommen, NICHT 500. Das sichert dass der // Endpoint zwar geschützt aber nicht crashed. const r = await request.get('/api/live?class_id=99&cockpit=1&range=week'); expect(r.status(), 'Cockpit-API crashed (5xx)').toBeLessThan(500); }); test('Results-Fleiss-API antwortet ohne Auth ohne 5xx', async ({ request }) => { const r = await request.get('/api/results?class_id=99&view=fleiss&range=week'); expect(r.status()).toBeLessThan(500); });