diff --git a/prisma/demo-seed.ts b/prisma/demo-seed.ts index fee602e..a27b481 100644 --- a/prisma/demo-seed.ts +++ b/prisma/demo-seed.ts @@ -418,6 +418,41 @@ async function main(): Promise { }, }) + // --- Benachrichtigungen --------------------------------------------------- + // Für die Bilder eingeschaltet. Eine leere Karte zeigt nichts von dem, + // was das Kapitel erklärt. + await db.benachrichtigungseinstellung.upsert({ + where: { benutzerId: benutzer.id }, + update: {}, + create: { + benutzerId: benutzer.id, + anlaesse: 'tagesueberblick,faelligkeit,zeitblock', + perPush: true, + perMail: true, + ueberblickUm: 7 * 60, + ruheVon: 20 * 60, + ruheBis: 7 * 60, + ruheAmWochenende: false, + zeitblockVorlaufMinuten: 10, + }, + }) + + await db.pushGeraet.deleteMany({ where: { benutzerId: benutzer.id } }) + await db.pushGeraet.create({ + data: { + benutzerId: benutzer.id, + // Erfunden und unerreichbar. Die Schlüsselfelder halten sonst + // verschlüsselte Werte; hier stehen Platzhalter, weil aus der + // Demo-Instanz ohnehin nichts hinausgeht. + endpunkt: 'https://push.invalid/demo-arbeitsplatz', + p256dh: 'demo', + auth: 'demo', + bezeichnung: 'Firefox auf Windows', + erstelltAm: new Date(Date.UTC(2026, 1, 3, 8, 20)), + zuletztBenutzt: new Date(Date.UTC(2026, 2, 17, 6, 5)), + }, + }) + console.log(`Demo-Daten stehen bereit. Anmeldung: ${DEMO_EMAIL}`) } diff --git a/screenshots/bilder.spec.ts b/screenshots/bilder.spec.ts index 573fa12..15f69a2 100644 --- a/screenshots/bilder.spec.ts +++ b/screenshots/bilder.spec.ts @@ -24,6 +24,13 @@ type Aufnahme = { pfad: string /** Wird vor der Aufnahme ausgeführt, z. B. um ein Formular aufzuklappen. */ vorbereiten?: (seite: Page) => Promise + /** + * Nur diesen Ausschnitt aufnehmen statt der ganzen Seite. + * + * Für Themen, die auf einer gemeinsamen Seite wohnen: ein Bild der ganzen + * Einstellungsseite zeigt im Handbuchkapitel zu wenig vom Eigentlichen. + */ + ausschnitt?: string } const AUFNAHMEN: Aufnahme[] = [ @@ -37,6 +44,11 @@ const AUFNAHMEN: Aufnahme[] = [ { name: 'bereiche', pfad: '/bereiche' }, { name: 'kalenderkonten', pfad: '/kalenderkonten' }, { name: 'einstellungen', pfad: '/einstellungen' }, + { + name: 'benachrichtigungen', + pfad: '/einstellungen', + ausschnitt: '[data-bild="benachrichtigungen"]', + }, { name: 'protokoll', pfad: '/verwaltung/protokoll' }, ] @@ -82,10 +94,12 @@ for (const schema of ['hell', 'dunkel'] as const) { // Der Farbschema-Umschalter und Schriften sollen fertig sein. await seite.waitForTimeout(300) - await seite.screenshot({ - path: `${ZIEL}/${aufnahme.name}-${schema}-${geraet}.png`, - fullPage: true, - }) + const ziel = `${ZIEL}/${aufnahme.name}-${schema}-${geraet}.png` + if (aufnahme.ausschnitt) { + await seite.locator(aufnahme.ausschnitt).screenshot({ path: ziel }) + } else { + await seite.screenshot({ path: ziel, fullPage: true }) + } } await kontext.close()