import { readFileSync } from 'node:fs'; import { join } from 'node:path'; import { describe, expect, test } from 'vitest'; function fragment(source: string, start: string, end: string): string { const from = source.indexOf(start); const to = source.indexOf(end, from); if (from < 0 || to < 0) throw new Error(`Missing production fragment: ${start}`); return source.slice(from, to); } describe('cutter workspace actions production path', () => { const html = readFileSync(join(__dirname, 'index.html'), 'utf8'); test('keeps project open and save actions in the persistent loaded toolbar', () => { const toolbar = fragment(html, '
', '
{ const cutterContext = fragment(html, '
{ const trimCard = fragment(html, '
', '
'); expect(trimCard.match(/placeholder="HH:MM:SS:FF"/g)).toHaveLength(2); expect(trimCard.match(/title="HH:MM:SS:FF"/g)).toHaveLength(2); }); test('uses correct German umlauts in owned fallback and locale sources', () => { const german = readFileSync(join(__dirname, 'renderer-locale-de.ts'), 'utf8'); expect(html).toContain('Max Stabilität'); expect(german).toContain('Unterstützte Formate'); expect(german).toContain("openFolder: 'Öffnen'"); expect(german).toContain("partMinutesLabel: 'Teil-Länge (Minuten)'"); expect(german).toContain('Einige Änderungen erfordern'); expect(german).toContain('Öffnet während einer Live-Aufnahme'); expect(german).toContain("invalidDuration: 'Ungültig!'"); expect(german).toContain("empty: 'Keine Videos ausgewählt'"); expect(german).toContain("success: 'Videos erfolgreich zusammengefügt!'"); expect(german).toContain("phaseCleanup: 'Aufräumen...'"); expect(german).toContain("checkInProgress: 'Update-Prüfung läuft bereits.'"); expect(german).toContain("checkFailed: 'Update-Prüfung fehlgeschlagen.'"); expect(german).toContain("downloadInProgress: 'Update-Download läuft bereits.'"); expect(html).not.toContain('Max Stabilitat'); expect(german).not.toMatch(/Unterstutzte|\bOffnen\b|Teil-Lange|Aenderungen|Oeffnet|Ungultig|ausgewahlt|zusammengefugt|Aufraumen|Update-Prufung|\blauft\b/); }); test('provides localized System Check failure copy to the settings renderer', () => { const german = readFileSync(join(__dirname, 'renderer-locale-de.ts'), 'utf8'); const english = readFileSync(join(__dirname, 'renderer-locale-en.ts'), 'utf8'); expect(german).toContain("preflightError: 'System-Check fehlgeschlagen.'"); expect(english).toContain("preflightError: 'System check failed.'"); }); });