Files
Z User 9ce58565ba i18n: Fix 44 additional hardcoded English strings across 15 files
Fixed files:
- competitions-view.tsx: 10 strings (placeholders, labels)
- subjects-view.tsx: 11 strings (types, actions, placeholders)
- professional-calendar.tsx: 5 strings (event type labels)
- illness-reporting-view.tsx: 3 strings (status badges)
- student-detail-view.tsx: 4 strings (health form placeholders)
- data-table.tsx: 2 strings (search, empty state)
- compliance-wizard.tsx: 2 strings (name, state)
- settings-view.tsx: 1 string (Skipped)
- competence-flower-view.tsx: 1 string (Active)
- disciplinary-view.tsx: 1 string (All clear)
- district-management-view.tsx: 1 string (No recent activity)
- competitions-view.tsx: 1 string (Stock)
- ui/pagination.tsx: 3 strings (Previous, Next, More pages)
- ui/breadcrumb.tsx: 1 string (More)
- ui/carousel.tsx: 2 strings (Previous/Next slide)
- ui/sidebar.tsx: 1 string (Sidebar title)

Total: 44 hardcoded English strings replaced with German
2026-09-06 15:11:41 +00:00

21 lines
759 B
TypeScript
Executable File

import { expect, test } from '@playwright/test';
test('loads the signed-out application shell', async ({ page }) => {
await page.goto('/');
await expect(page).toHaveTitle(/SchulOS/i);
await expect(page.getByText('SchulOS', { exact: true }).first()).toBeVisible();
await expect(page.getByLabel(/email/i).first()).toBeVisible();
await expect(page.getByLabel(/password/i).first()).toBeVisible();
});
test('rejects cross-origin API mutations', async ({ request }) => {
const response = await request.post('/api/auth', {
headers: { origin: 'https://attacker.example' },
data: { action: 'logout' },
});
expect(response.status()).toBe(403);
await expect(response.json()).resolves.toMatchObject({ error: 'Invalid request origin' });
});