linkedin-studio/render/__tests__
Kjell Tore Guttormsen e0f964ad60 fix(linkedin-studio): N18 Del 1 — opprydding velter aldri et vellykket figur-render [skip-docs]
Funnet av N18-roundtrip-røyken: render-suiten var grønn 1 av 4 kjøringer, ikke
"grønn siden N13" som STATE påsto. Rotårsaken er produksjonskode, ikke en test-flake.

runChromeScreenshot.finish() sender SIGKILL til forelder-Chrome og resolver
umiddelbart uten å vente på at prosessen dør. SIGKILL på forelderen dreper ikke
dens renderer/GPU-barn, som fortsetter å skrive inn i --user-data-dir under
workDir mens finally-blokken traverserer samme katalog. rmSync tømmer den, nye
filer dukker opp, og fjerning av selve katalogen feiler med ENOTEMPTY. Ren
timing-race — derav de ~50 %.

Brukerkonsekvensen var den verste sorten: PNG-en skrives til outPath UTENFOR
workDir og er allerede ferdig når dette skjer, så oppryddingen veltet et render
som faktisk lyktes.

Fix: cleanupWorkDir() — eksplisitt retry-løkke (testbar med injisert rm) pluss
fs sine egne maxRetries/retryDelay, og den kaster aldri. En temp-katalog som blir
liggende er en bagatell mot å miste et ferdig bilde; OS rydder tmpdir.

TDD: rødt bevist først (manglende eksport), så 3 tester på kontrakten — svelger
ENOTEMPTY og forsøker på nytt, fjerner katalogen i normaltilfellet, gir seg stille
når den allerede er borte.

render 60/0 -> 63/0, grønn 5 av 5 kjøringer (var 1 av 4). test-runner 270/0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QxvWAjte7vPcF79QeSRvRJ
2026-07-26 17:19:01 +02:00
..
fixtures feat(linkedin-studio): N3.5 — MR-F8 build-html-forsoning (blockquote+lenker+FIGUR->SVG port + paritetstest) [skip-docs] 2026-07-17 03:22:20 +02:00
build-figur.test.mjs fix(linkedin-studio): N18 Del 1 — opprydding velter aldri et vellykket figur-render [skip-docs] 2026-07-26 17:19:01 +02:00
build-html.test.mjs feat(linkedin-studio): N3.5 — MR-F8 build-html-forsoning (blockquote+lenker+FIGUR->SVG port + paritetstest) [skip-docs] 2026-07-17 03:22:20 +02:00
build-linkedin.test.mjs fix(linkedin): close dogfood friction (S14) 2026-05-27 23:37:39 +02:00
weasyprint-degradation.test.mjs feat(linkedin): migrate render scripts + fonts into plugin (S1) 2026-05-26 22:11:38 +02:00