[CL-PIX-13092] fix(server): устранить гонку мока в adapter-routes-authz.test.ts #190

Merged
andrei merged 1 commit from agent/devops/pix-13092 into master 2026-07-05 12:39:50 +00:00
Owner

Что сделано

В server/src/tests/adapter-routes-authz.test.ts заменил конкурентный Promise.all([vi.importActual(...), vi.importActual(...), vi.importActual(...)]) в beforeEach на последовательные await для трёх модулей (routes/adapters.js, middleware/index.js, adapters/registry.js).

Зачем

Триаж PIX-13092 (падение job "Agents CI / API Tests" на run 16972, PR #189, commit e4012b4bb8, ошибка install: {"error":"npm install failed: spawn npm ENOENT"}: expected 500 to be 201). Это тот же паттерн гонки, что уже исправлен в PIX-13084 (056b0b30d, PR #189) для issue-agent-mutation-ownership-routes.test.ts: конкурентный резолв нескольких vi.importActual() под Promise.all на нагруженном act-runner раннере не гарантирует, что vi.doMock("node:child_process", ...) успевает примениться до того, как routes/adapters.js резолвит свой импорт execFile — из-за чего route install реально спавнил npm вместо использования мока и падал с ENOENT.

План тестирования

  • npx vitest run src/__tests__/adapter-routes-authz.test.ts --no-file-parallelism --maxWorkers=1 — прогнал 8+ раз подряд после фикса, все 4 теста стабильно зелёные.
  • pnpm typecheck (полный workspace, тот же прогон, что выполняет pre-push hook) — прошёл без ошибок.

Где могу ошибаться

  • Не смог напрямую воспроизвести исходный ENOENT локально (мок стабильно перехватывал) — сужу по идентичности паттерна кода с уже закрытым PIX-13084.
  • В репозитории есть ещё ~30 тестовых файлов с похожим паттерном Promise.all([vi.importActual(...), ...]) — потенциальный системный риск флейков той же природы. Не трогал их в рамках этого тикета, рекомендую отдельный follow-up на аудит.
  • Job "API Tests" помечен continue-on-error: true и не входит в required checks — фикс не блокирует/не разблокирует merge, снижает шум красных прогонов.
## Что сделано В server/src/__tests__/adapter-routes-authz.test.ts заменил конкурентный Promise.all([vi.importActual(...), vi.importActual(...), vi.importActual(...)]) в beforeEach на последовательные await для трёх модулей (routes/adapters.js, middleware/index.js, adapters/registry.js). ## Зачем Триаж PIX-13092 (падение job "Agents CI / API Tests" на run 16972, PR #189, commit e4012b4bb8, ошибка `install: {"error":"npm install failed: spawn npm ENOENT"}: expected 500 to be 201`). Это тот же паттерн гонки, что уже исправлен в PIX-13084 (`056b0b30d`, PR #189) для issue-agent-mutation-ownership-routes.test.ts: конкурентный резолв нескольких vi.importActual() под Promise.all на нагруженном act-runner раннере не гарантирует, что vi.doMock("node:child_process", ...) успевает примениться до того, как routes/adapters.js резолвит свой импорт execFile — из-за чего route install реально спавнил npm вместо использования мока и падал с ENOENT. ## План тестирования - `npx vitest run src/__tests__/adapter-routes-authz.test.ts --no-file-parallelism --maxWorkers=1` — прогнал 8+ раз подряд после фикса, все 4 теста стабильно зелёные. - `pnpm typecheck` (полный workspace, тот же прогон, что выполняет pre-push hook) — прошёл без ошибок. ## Где могу ошибаться - Не смог напрямую воспроизвести исходный ENOENT локально (мок стабильно перехватывал) — сужу по идентичности паттерна кода с уже закрытым PIX-13084. - В репозитории есть ещё ~30 тестовых файлов с похожим паттерном Promise.all([vi.importActual(...), ...]) — потенциальный системный риск флейков той же природы. Не трогал их в рамках этого тикета, рекомендую отдельный follow-up на аудит. - Job "API Tests" помечен continue-on-error: true и не входит в required checks — фикс не блокирует/не разблокирует merge, снижает шум красных прогонов.
fix(server): устранить гонку мока в adapter-routes-authz.test.ts (PIX-13092)
Some checks failed
security/pr-scan No security concerns detected
PR Quality Gates / PR Quality Gates (pull_request_target) Successful in 4s
Agents CI / Typecheck and Build (pull_request) Successful in 6m30s
Agents CI / API Tests (pull_request) Failing after 6m25s
Agents CI / Typecheck and Build (push) Successful in 6m31s
Agents CI / API Tests (push) Failing after 6m35s
5472653b82
beforeEach использовал тот же паттерн Promise.all([vi.importActual(...), ...])
для трёх модулей (routes/adapters, middleware/index, adapters/registry),
что и issue-agent-mutation-ownership-routes.test.ts до PIX-13084 — на
нагруженном act-runner раннере doMock("node:child_process") не успевал
примениться до конкурентного резолва импорта adapters.js, из-за чего route
install реально спавнил npm (spawn npm ENOENT) вместо использования мока.
Заменил на последовательные await, убрав окно гонки.
andrei left a comment

CTO review: собственные изменения корректны (Typecheck/Build + Quality Gates зелёные). Job API Tests падает не из-за диффа PR, а из-за отставания ветки от master — тест document-annotation-routes.test.ts уже пофикшен коммитом 19ae4c789 (PR #187), но merge-base ветки старее. Нужен rebase.

CTO review: собственные изменения корректны (Typecheck/Build + Quality Gates зелёные). Job API Tests падает не из-за диффа PR, а из-за отставания ветки от master — тест document-annotation-routes.test.ts уже пофикшен коммитом 19ae4c789 (PR #187), но merge-base ветки старее. Нужен rebase.
andrei merged commit 5472653b82 into master 2026-07-05 12:39:50 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
europa-tech-srl/europa-tech-agents!190
No description provided.