* fix(draw-image): per-process output TMP in e2e.test.ts beforeAll * docs(handoff): add handoff and ADR for e2e.test.ts beforeAll fix * docs(handoff): set PR number 187 --------- Co-authored-by: opencode-agent <agent@opencode.local>
1.5 KiB
1.5 KiB
ADR-082: per-process output TMP in e2e.test.ts beforeAll race
Статус
Accepted (2026-07-31)
Контекст
tests/e2e.test.ts использовал общий output-каталог /tmp/draw-image-e2e, создаваемый/очищаемый в beforeAll. При параллельном запуске нескольких процессов vitest concurrently процессы конкурировали за один каталог: beforeAll процесса A удалял TMP (вместе с e2e.png + e2e.meta.json процесса B) → assertion expected 'skipped' to be 'rendered' падал. Тот же bug class что и #183, но e2e.test.ts не вошёл в список affected-файлов #183.
Решение
Перевести output-каталог на per-process: TMP = path.join(os.tmpdir(), \draw-image-e2e-${process.pid}`). process.pidуникален на параллельный vitest-процесс → каждый процесс пишет в свой каталог, race устранён. ДобавленafterAll` cleanup для удаления output-каталога после тестов (no leftover).
Альтернативы
fs.mkdtempSync(path.join(os.tmpdir(), "draw-image-e2e-"))— отклонена:process.pidsuffixed path обеспечивает консистентность с 7 уже зафиксированными файлами из #186 и достаточен для внешней параллельности.