krona-staff/tests/e2e
grok 3388b90bfa test(e2e): N13 — нагрузочная проверка гонки первого расчёта зарплаты
Зачем: владелец пометил N13 как «не воспроизведено», а в коде окно гонки
(SELECT ... FOR UPDATE по отсутствующей строке, затем INSERT ... ON CONFLICT
DO NOTHING со своим runId) видно. Нужен повторяемый замер на живом сервере
и реальной PostgreSQL 17, а не рассуждение.

Что: scripts/test/n13-race.mjs — 10/25/50 параллельных первых
POST /payroll/calculate, каждая попытка на новой точке, проверка статусов,
числа run_id, строк в staff_payroll_runs и «фантомных» run_id. Режим as-is
показывает, что сейчас всё упирается в N2 (500). Режим n2-bypass ставит
DEFAULT now() только в одноразовой БД скрипта (продукт и миграции не
меняются), чтобы увидеть саму гонку. Итог: 0 некорректных из 30 попыток;
причина (из кода) — случайная сериализация через upsert
ensureDefaultPayRules. Это записано в NOTES-FOR-EXECUTORS вместе с
рекомендацией явной блокировки и замечанием об утечке текста ошибок БД в 500.
2026-09-26 14:33:11 +07:00
..
evidence test(e2e): N13 — нагрузочная проверка гонки первого расчёта зарплаты 2026-09-26 14:33:11 +07:00
harness test(e2e): стенд с реальным сервером и PostgreSQL 17 2026-09-26 14:27:59 +07:00
00-harness.e2e.ts test(e2e): стенд с реальным сервером и PostgreSQL 17 2026-09-26 14:27:59 +07:00
10-core-defects.e2e.ts test(e2e): сценарии дефектов основного API (N1-N4, N9-N12, F2-F4, F7, F10) 2026-09-26 14:27:59 +07:00
20-sync-defects.e2e.ts test(e2e): сценарии офлайн-синхронизации (/sync/*) 2026-09-26 14:27:59 +07:00
30-owner-decisions.e2e.ts test(e2e): сценарии решений владельца (OWN-01..11) и заметки исполнителям 2026-09-26 14:30:46 +07:00
40-compose-pilot.e2e.ts test(e2e): проверка deploy/pilot/compose.yaml (PILOT-1..3) 2026-09-26 14:30:10 +07:00
known-defects.json test(e2e): сценарии решений владельца (OWN-01..11) и заметки исполнителям 2026-09-26 14:30:46 +07:00
NOTES-FOR-EXECUTORS.md test(e2e): N13 — нагрузочная проверка гонки первого расчёта зарплаты 2026-09-26 14:33:11 +07:00
vitest.e2e.config.ts test(e2e): стенд с реальным сервером и PostgreSQL 17 2026-09-26 14:27:59 +07:00