[CL-QA-API] QA: тестовый suite REST API (Playwright+TS+Zod) — smoke prod-safe + 401-матрица #502

Merged
andrei merged 2 commits from feature/claude-api-test-suite into master 2026-06-10 18:44:49 +00:00
Owner

Что сделано

  • qa/api-tests/ — автономный API test suite (Playwright API-only + Zod-контракты), без зависимости от БД
  • инвентарь src/inventory/endpoints.json: 145 endpoints / 8 доменов, извлечён из api/src/routes/* (mount-routes + mount-financial) на f0507bb3d
  • 10 спек-файлов: health, auth, objects/public, p2p, payments, portfolio, partner-v1, security (auth-matrix по всей поверхности, csrf-origin, rate-limit/error-handling)
  • двойной предохранитель против мутаций на проде: mutationsAllowed() требует ALLOW_MUTATIONS=1 И не-прод BASE_URL
  • CI: .forgejo/workflows/api-tests.yml — nightly smoke + workflow_dispatch + PR-регрессия на qa/api-tests/**

Зачем

  • регрессионное покрытие REST API, безопасное против прода (GET-only smoke, money-path только негатив)
  • авторизационная матрица ловит 2xx-без-токена и 5xx-краши по 145 endpoints автоматически

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

  • cd qa/api-tests && npm test (smoke против прод) — 177 passed / 0 failed / 26 skipped
  • npm run typecheck — чисто
  • skip = нет seed-секретов (TEST_USER_*/PARTNER_API_KEY) для JWT/partner-позитива

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

  • инвентарь покрывает 145 из 784+ endpoints (8 ключевых доменов) — расширяется инкрементально
  • наблюдение для отдельного тикета: GET /api/objects на проде отдаёт cache-control: private, no-cache (vault документирует 300s public) — возможная регрессия кэширования каталога
## Что сделано - `qa/api-tests/` — автономный API test suite (Playwright API-only + Zod-контракты), без зависимости от БД - инвентарь `src/inventory/endpoints.json`: 145 endpoints / 8 доменов, извлечён из `api/src/routes/*` (mount-routes + mount-financial) на `f0507bb3d` - 10 спек-файлов: health, auth, objects/public, p2p, payments, portfolio, partner-v1, security (auth-matrix по всей поверхности, csrf-origin, rate-limit/error-handling) - двойной предохранитель против мутаций на проде: `mutationsAllowed()` требует `ALLOW_MUTATIONS=1` И не-прод `BASE_URL` - CI: `.forgejo/workflows/api-tests.yml` — nightly smoke + workflow_dispatch + PR-регрессия на `qa/api-tests/**` ## Зачем - регрессионное покрытие REST API, безопасное против прода (GET-only smoke, money-path только негатив) - авторизационная матрица ловит 2xx-без-токена и 5xx-краши по 145 endpoints автоматически ## План тестирования - `cd qa/api-tests && npm test` (smoke против прод) — **177 passed / 0 failed / 26 skipped** - `npm run typecheck` — чисто - skip = нет seed-секретов (TEST_USER_*/PARTNER_API_KEY) для JWT/partner-позитива ## Где могу ошибаться - инвентарь покрывает 145 из 784+ endpoints (8 ключевых доменов) — расширяется инкрементально - наблюдение для отдельного тикета: `GET /api/objects` на проде отдаёт `cache-control: private, no-cache` (vault документирует 300s public) — возможная регрессия кэширования каталога
[CL-QA-API] qa/api-tests: API test suite (Playwright+TS+Zod) — smoke prod-safe + 401-матрица
Some checks failed
API Tests (QA suite) / API smoke (Playwright) (pull_request) Successful in 10s
CI / Python SDK (pull_request) Successful in 33s
CI / Secrets Scan (pull_request) Successful in 15s
CI / Telegram Mini App (pull_request) Successful in 1m35s
CI / Contracts (pull_request) Successful in 2m0s
CI / Prisma Migrate Gate (pull_request) Successful in 1m33s
React Doctor / React Doctor / App (pull_request) Successful in 2m40s
CI / API (pull_request) Has been cancelled
CI / App (pull_request) Has been cancelled
5fe5f55383
Что сделано:
- qa/api-tests/: автономный suite (Playwright API-only + Zod-контракты), 145 endpoints в инвентаре
- 10 спек-файлов: health, auth, objects/public, p2p, payments, portfolio, partner-v1, security (auth-matrix, csrf-origin, rate-limit/error-handling)
- двойной предохранитель против мутаций на проде (mutationsAllowed: ALLOW_MUTATIONS=1 И не-прод BASE_URL)
- .forgejo/workflows/api-tests.yml: nightly smoke + workflow_dispatch + PR-регрессия
- инвентарь и контракты извлечены из api/src/routes на f0507bb3d, выверены против живого прода

Зачем:
- регрессионное покрытие REST API без БД, безопасное против прода
- авторизационная матрица ловит 2xx-без-токена и 5xx-краши по всей поверхности

План тестирования:
- npm test (smoke против прод) — 177 passed / 0 failed / 26 skipped; tsc --noEmit чисто

Где могу ошибаться:
- инвентарь покрывает 145 из 784+ endpoints (8 ключевых доменов); остальное инкрементально
- JWT/partner-позитив требует seed-секретов (QA_TEST_USER_*, QA_PARTNER_API_KEY) — без них skip
[CL-QA-API] docs: добавить CSRF_ORIGIN в таблицу env README (idiom verified via Context7 Playwright docs)
All checks were successful
API Tests (QA suite) / API smoke (Playwright) (pull_request) Successful in 39s
CI / Python SDK (pull_request) Successful in 36s
CI / Secrets Scan (pull_request) Successful in 16s
CI / Telegram Mini App (pull_request) Successful in 1m46s
CI / Contracts (pull_request) Successful in 2m12s
CI / Prisma Migrate Gate (pull_request) Successful in 1m32s
React Doctor / React Doctor / App (pull_request) Successful in 2m37s
CI / App (pull_request) Successful in 7m7s
CI / API (pull_request) Successful in 7m36s
6aae0f9446
andrei merged commit b4bf113faf into master 2026-06-10 18:44:49 +00:00
andrei deleted branch feature/claude-api-test-suite 2026-06-10 18:44:49 +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/europatech!502
No description provided.