nns
dd3ee58502
e2e: full-cycle отчёт после fix 1+2+3 (Cashier 403/Identity-role + phone ФЛК + units global)
...
Stage прогон против commit ee127b2 :
- 9 ✓ / 0 ✗ / 0 ⚠ / 3 ◯ (baseline: 8/1/0/3)
- step05 Cashier полностью зелёный: Identity-role «Cashier» маппится,
/api/organization/employees → 403
- step01 новая проверка серверной phone-ФЛК → 400 на невалидном
- step08 «Нет ни одной единицы измерения» исчез — новая орга получает
5 active globals через junction сразу при создании
- HIGH bug сменился: теперь блокер «product требует штрихкод» (отдельный
вопрос — либо баг ProductsController, либо e2e-сценарий должен
передавать barcode)
2026-05-08 01:34:55 +05:00
nns
7bb941259a
feat(e2e): infrastructure + first full-cycle scenario + baseline report
...
CI / POS (WPF, Windows) (push) Waiting to run
CI / Backend (.NET 8) (push) Successful in 1m20s
CI / Web (React + Vite) (push) Successful in 42s
Декларативные end-to-end сценарии в tests/e2e/. YAML описывает шаги,
TypeScript-handler — конкретные API/UI/DB-проверки. Отчёт в Markdown.
Структура:
- runner.ts : entry, парсит YAML, прогоняет steps, пишет report
- run.sh : pnpm install + tsx
- lib/api.ts : axios + login() (через /connect/token + /api/me)
- lib/db.ts : docker exec psql, resetTenantData(), countRows()
- lib/report.ts : Markdown-аккумулятор (steps + bugs + ux + gap + perf)
- scenarios/full-cycle.yml : 12 шагов
- scenarios/full-cycle.steps.ts : handlers (один на шаг)
- README.md : как добавить новый сценарий
reset_db в preconditions:
- TRUNCATE tenant-таблиц CASCADE
- AspNet*/users — оставляем только admin@food-market.local
- OpenIddict tokens — все valid → revoked
- Реестр products + системные справочники + миграции + platform_settings — НЕ трогаем
Запуск: tests/e2e/run.sh full-cycle [--api-only]
Первый прогон (--api-only, baseline в reports/full-cycle-2026-05-07-baseline.md):
- 8 ✓ / 1 ✗ / 3 ◯ из 12.
- Critical bug: Cashier видит /api/organization/employees через API
(нет [Authorize(Roles="Admin")] на List endpoint).
- High: при CreateOrg через SuperAdmin не сидируются tenant-units —
пустой каталог измерений у новой org (DevDataSeeder.SeedTenantReferencesAsync
должен вызываться, но не вызывается).
- Logic gaps: реестр products tenant-scoped и новая org стартует с
пустым каталогом; SuperAdmin /organizations не валидирует ФЛК
телефона; Cashier не получает Identity-роль "Cashier" при создании
через /employees.
UI-шаги (Playwright) в этом коммите не покрыты — runner работает в
--api-only режиме. UI-extension добавим следующим коммитом, не блокирует
получение полезного отчёта.
2026-05-08 00:05:52 +05:00