Files
rippy/rippy-windows/test/messung.spuren.test.ts
T
HitonabiandClaude Fable 5.1 6dd1b0bc7a feat(v5): Ein Smoke-Beweis, der KLICKT — Playwright durch das echte Programm
WAS: `npm run klick` startet das ECHTE Rippy (Electron, Haupt, Kern,
Fenster, Datenbank) mit eigenem Profil (--profil, --klick-smoke: ohne
Tray, Updater, Toasts), einem nachgebauten Laufwerk (RIPPY_FAKE_LAUFWERK)
und nachgebauten Werkzeugen (bau/klick/fake-*.cjs) — und klickt sich
durch: Rippen → Dialog → Sprachen je Titel (jpn statt deu) → Rollen auf
Folge → Staffel 1, ab Folge 3 → Vorschau → Rip → Warteschlange →
Kompression → Ablage als S01E03/S01E04 unter Serien\…\Season 01 →
Einstellungen/Roh-Dateien → Roh loeschen → Ereignisse. Bilder liegen in
beweise/klick/. Die Naht dafuer (kern/werkzeuge/aufruf.ts): Zeigt ein
Werkzeug-Pfad auf ein Node-Skript, laeuft es ueber die eigene Laufzeit
(ELECTRON_RUN_AS_NODE) — fuer EXE-Pfade aendert sich nichts.

WARUM: Beide Fehler vom 01.09.2026 waren Verkabelung; 261 Unit-Tests
sahen keinen. Der Klick-Beweis haette beide gefunden.

NEBENBEFUND: Die CSP blockte eingebettete Schrift-Teile (data:-Fonts der
fontsource-Pakete) — Konsolenfehler im gebauten Fenster, jetzt font-src.
Dazu test/messung.spuren.test.ts: HandBrake-Scan einer echten Roh-Datei
auf Verlangen (RIPPY_MESSUNG_MKV).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-01 22:22:04 +02:00

32 lines
1.8 KiB
TypeScript

// MESSUNG an einer ECHTEN Roh-Datei: Welche Ton- und Untertitelspuren hat
// MakeMKV wirklich in die MKV geschrieben? (5.4.0, Regel D)
//
// RIPPY_MESSUNG_MKV="E:\Rippy\roh\bluray-…\title_t00.mkv" npx vitest run test/messung.spuren.test.ts --reporter=verbose
//
// Der Anlass: Der Auswahl-Dialog zeigt die Sprachen, die der Info-Lauf an
// der DISC gemessen hat. Ob sie alle in der Datei landen, entscheidet
// MakeMKVs Auswahlregel (werkzeuge/spurauswahl.ts). Diese Messung fragt die
// Datei selbst — über denselben HandBrake-Scan, den die Kompression benutzt
// (komprimieren/scan.ts). Läuft nur auf Verlangen und nur unter Windows.
import { describe, expect, it } from 'vitest'
const datei = process.env.RIPPY_MESSUNG_MKV ?? ''
const messen = datei.length > 0 && process.platform === 'win32'
describe.skipIf(!messen)('Spuren einer echten Roh-Datei', () => {
it('HandBrake-Scan liefert Ton- und Untertitelspuren mit Sprachcode', { timeout: 180_000 }, async () => {
const { finden } = await import('../src/kern/werkzeuge/katalog')
const { spurenScannen } = await import('../src/kern/komprimieren/scan')
const handbrake = finden('handbrake', '')
expect(handbrake.length, 'HandBrakeCLI nicht gefunden').toBeGreaterThan(0)
const start = Date.now()
const spuren = await spurenScannen(handbrake, datei)
console.log(`MESSUNG Scan: ${((Date.now() - start) / 1000).toFixed(1)} s — ${datei}`)
expect(spuren, 'Scan lieferte nichts').not.toBeNull()
console.log(`MESSUNG Dauer: ${Math.round(spuren!.dauerS / 60)} min`)
for (const a of spuren!.audio) console.log(`MESSUNG Ton ${a.nr}: ${a.lang}${a.beschreibung}`)
for (const u of spuren!.untertitel) console.log(`MESSUNG Untertitel ${u.nr}: ${u.lang}${u.beschreibung}`)
expect(spuren!.audio.length).toBeGreaterThan(0)
})
})