1e51ef7def
- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/ - 12 code-workspace-Files - STATUS-*.md - viele M/D/R-Änderungen an bereits getrackten Files - .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
32 lines
1.3 KiB
JavaScript
32 lines
1.3 KiB
JavaScript
// @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);
|
|
});
|