# E2E report: stage-smoke

Запущен: 2026-05-29T11:28:18.698Z
Длительность: 5.4с

**Итог:** 5 ✓ / 0 ✗ / 0 ⚠ / 0 ◯ (всего 5)

## ✓ Step stage01_signup_happy_path: POST /api/auth/signup создаёт новую org «TestStage-{ts}» + первого Admin

Длительность: 726мс

| Тип | Проверка | Результат |
|---|---|---|
| api | POST /api/auth/signup → 200 | ✓ org=bdaff44c-cc12-4971-9a0d-5da10090861d email=stage-smoke-1780054098701@food-market.local |

## ✓ Step stage02_bootstrap_entities_present: Bootstrap создал Store (MAIN), EmployeeRole «Администратор» (system), Units, ProductGroup «Все товары», PriceTypes (Розничная), RetailPoint «Касса 1»

Длительность: 1207мс

| Тип | Проверка | Результат |
|---|---|---|
| api | GET /api/catalog/stores содержит main store (isMain=true) | ✓ total=1 |
| api | EmployeeRoles содержит системную «Администратор» | ✓ roles=3 |
| api | UnitsOfMeasure для org содержат как минимум kg/l/m/упак (≥4 enabled) | ✓ enabled=5 |
| api | ProductGroups содержит корневую «Все товары» (parentId=null) | ✓ total=1 |
| api | PriceTypes содержит системную розничную (isRetail=true,isRequired=true) | ✓ total=2 |
| api | RetailPoints содержит хотя бы одну точку (bootstrap «Касса 1») | ✓ total=1 |

## ✓ Step stage03_login_returns_access_refresh: /connect/token (password grant) возвращает access+refresh, /api/me даёт orgId+role=Admin

Длительность: 573мс

| Тип | Проверка | Результат |
|---|---|---|
| api | Логин возвращает access_token | ✓ len=2337 |
| api | Логин возвращает refresh_token (offline_access scope) | ✓ len=2707 |
| api | /api/me возвращает orgId = тому что вернул signup | ✓ me.orgId=bdaff44c-cc12-4971-9a0d-5da10090861d, signup.orgId=bdaff44c-cc12-4971-9a0d-5da10090861d |
| api | /api/me возвращает role=Admin | ✓ Admin |

## ✓ Step stage04_signup_edge_cases: Edge — дубликат email / короткий пароль / пустое название / кривой телефон → 400 с понятным сообщением

Длительность: 2723мс

| Тип | Проверка | Результат |
|---|---|---|
| api | Дубликат email → 400 с понятным сообщением | ✓ 400 {"error":"Пользователь с таким email уже зарегистрирован."} |
| api | Пароль < 8 → 400 с понятным сообщением | ✓ 400 {"error":"Пароль минимум 8 символов."} |
| api | Пустое orgName → 400 | ✓ 400 {"error":"Email, пароль и название обязательны."} |
| api | Невалидный phone → 400 (валидация ФЛК Казахстана) | ✓ 400 {"error":"Введите корректный номер Казахстана. Пример: +7 700 123 45 67"} |

## ✓ Step stage05_public_app_url_check: Stage-public форма signup должна указывать на test.admin (PUBLIC_APP_URL deploy-config)

Длительность: 166мс

| Тип | Проверка | Результат |
|---|---|---|
| ui | Public site signup рендерится (хотя бы 1 ссылка на admin) | ✓ hosts=[admin.food-market.kz] |

## Summary

- Passed: 5
- Failed: 0
- Warnings: 0
- Skipped: 0

## Critical bugs

Нет.

## Logic gaps

- Stage-public (test.food-market.kz) использует тот же build что прод-public — signup-форма и ссылка «Войти» указывают на ПРОД admin (admin.food-market.kz). Для stage-testing нужно регистрироваться напрямую POST на test.admin.food-market.kz/api/auth/signup (stage-smoke это и делает), либо отдельно деплоить stage-public с PUBLIC_APP_URL=https://test.admin.food-market.kz.
