import { describe, expect, it } from 'vitest'; import { readFileSync } from 'node:fs'; import path from 'node:path'; import { FENSTER_GRUND_DUNKEL, FENSTER_GRUND_HELL, fensterGrundfarbe, } from '../../electron/fenstergrund'; /** * Befund L12 (EN 301 549 Kap. 11.7). * * `createWindow` setzte den Fenstergrund fest auf `#f4f6f9`, den Wert des hellen * Erscheinungsbilds. Im dunklen Modus gab das bei jedem Start einen hellen Blitz. * * Der Hauptprozess hat keine CSS-Variablen; die beiden Werte stehen dort ein * zweites Mal. Diese Pruefung haelt die Doppelung zusammen: Sie liest `--grund` * unmittelbar aus dem Stylesheet. */ const APP_CSS = readFileSync(path.join(process.cwd(), 'src', 'styles', 'app.css'), 'utf8'); function grundAus(block: string): string { const beginn = APP_CSS.indexOf(block); expect(beginn, `Block "${block}" steht nicht in app.css`).toBeGreaterThanOrEqual(0); const treffer = /--grund:\s*(#[0-9a-fA-F]{3,8})\s*;/.exec(APP_CSS.slice(beginn)); expect(treffer, `Nach "${block}" folgt kein --grund`).not.toBeNull(); return (treffer?.[1] ?? '').toLowerCase(); } describe('Fenstergrund', () => { it('führt genau die Farben, die app.css als --grund setzt', () => { expect(FENSTER_GRUND_HELL.toLowerCase()).toBe(grundAus(':root {')); expect(FENSTER_GRUND_DUNKEL.toLowerCase()).toBe( grundAus(":root[data-erscheinungsbild='dunkel'] {"), ); }); it('unterscheidet hell und dunkel überhaupt', () => { // Der Altstand kannte nur einen Wert - genau das ist der Befund. expect(FENSTER_GRUND_HELL).not.toBe(FENSTER_GRUND_DUNKEL); expect(fensterGrundfarbe(false)).toBe(FENSTER_GRUND_HELL); expect(fensterGrundfarbe(true)).toBe(FENSTER_GRUND_DUNKEL); }); });