food-market/tests/e2e/reports/full-chain-2026-10-07T20-04-36-379Z.md
nns b1bdf5c228
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
fix(migration): не схлопывать разные карточки МойСклада по артикулу + актуализировать объяснение сверки
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:11:06 +05:00

19 KiB
Raw Blame History

E2E report: full-chain

Запущен: 2026-10-07T20:03:33.268Z Длительность: 63.1с

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

✓ Step step01_register_and_login: Регистрация организации → вход владельцем → простой режим (скрытые модули 403)

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

Тип Проверка Результат
api Вход demo-admin (режим B) ✓ ожид=token факт=token
api /api/me: роль Admin ✓ ожид=Admin факт=Admin
api Простой режим включён (advancedMode=false) ✓ ожид=false факт=false
api Скрытый модуль недоступен: приёмка оптовых отгрузок (demands) ✓ ожид=403 advanced-mode-required факт=403 https://food-market.kz/errors/advanced-mode-required
api Скрытый модуль недоступен: перемещения (transfers) ✓ ожид=403 advanced-mode-required факт=403 https://food-market.kz/errors/advanced-mode-required
api Скрытый модуль недоступен: акции (promotions) ✓ ожид=403 advanced-mode-required факт=403 https://food-market.kz/errors/advanced-mode-required
api Скрытый модуль недоступен: ABC-отчёт ✓ ожид=403 advanced-mode-required факт=403 https://food-market.kz/errors/advanced-mode-required

✓ Step step02_catalog_and_supplier: Справочники — группа, 5 товаров (разные ед.изм., 1 весовой) + цены + штрихкоды; поставщик

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

Тип Проверка Результат
api Валюта KZT в справочнике ✓ ожид=KZT факт=есть
api Магазин (склад) существует ✓ ожид=≥1 факт=1
api Единицы измерения доступны (≥5 различных) ✓ ожид=≥5 факт=5
api Выбрано реальных товаров каталога (≥5, штрихкод+цена) ✓ ожид=≥5 факт=12
api Среди выбранных есть весовой (информативно) ✓ ожид=≥0 факт=0
api Поставщик [e2e] создан ✓ ожид=200+id факт=201

✓ Step step02a_employees_and_points: Сотрудники (кассир/кладовщик/админ) + 2 точки продаж; права (API 403); правка/пароль/блокировка

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

Тип Проверка Результат
api Системные роли Кассир/Кладовщик есть ✓ ожид=есть факт=Администратор,Кладовщик,Кассир
api Точка продаж создана: Касса-1 (e2e) 1791403413267 ✓ ожид=200+id факт=201
api Точка продаж создана: Касса-2 (e2e) 1791403413267 ✓ ожид=200+id факт=201
api Точка 2: переименование + деактивация ✓ ожид=200 факт=204
api Точка 2: повторная активация ✓ ожид=200 факт=204
api Сотрудник создан: Кассир ✓ ожид=200+пароль факт=ok
api Сотрудник создан: Кладовщик ✓ ожид=200+пароль факт=ok
api Сотрудник создан: Администратор ✓ ожид=200+пароль факт=ok
api Кассир → деньги 403 ✓ ожид=403 факт=403
api Кассир → сотрудники/настройки 403 ✓ ожид=403 факт=403
api Кассир → продажи доступны ✓ ожид=200 факт=200
api Кассир → свои смены доступны (касса) ✓ ожид=200 факт=200
api Кладовщик → деньги 403 ✓ ожид=403 факт=403
api Кладовщик → приёмки доступны ✓ ожид=200 факт=200
api Правка сотрудника (ФИО/тел/должность) ✓ ожид=200 факт=204
api Блокировка (увольнение) сотрудника ✓ ожид=200 факт=204
api Заблокированный кассир не получает токен ✓ ожид=отказ факт=400

✓ Step step03_money_accounts: Деньги — касса, банковский счёт (номер), эквайринг; начальные остатки

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

Тип Проверка Результат
api Касса магазина создана (Cash, нач.остаток 50000) ✓ ожид=200+id факт=201
api Банковский счёт создан (Bank, номер, нач.остаток 200000) ✓ ожид=200+id факт=201
api Счёт эквайринга создан (Acquiring) ✓ ожид=200+id факт=201
api Для 2-й точки созданы своя касса и эквайринг ✓ ожид=2 счёта факт=201/201
api Отчёт «Деньги»: касса currentBalance = начальный остаток ✓ ожид=50000 факт=50000
api Отчёт «Деньги»: банк currentBalance = начальный остаток ✓ ожид=200000 факт=200000

✓ Step step04_initial_supplier_debt: Начальный долг поставщику через корректировку взаиморасчётов (WeOwe) → долг = сумме

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

Тип Проверка Результат
api Корректировка взаиморасчётов создана (WeOwe 100000) ✓ ожид=200+id факт=201
api Корректировка проведена ✓ ожид=204 факт=204
api Долг поставщика = 100000 (только начальный) ✓ ожид=100000 факт=100000

✓ Step step05_supply1_manual: Приёмка №1 вручную (кладовщик) → провести → остатки +кол-во; себестоимость

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

Тип Проверка Результат
api Кладовщик авторизован для приёмки ✓ ожид=token факт=keeper
api Приёмка №1 создана (черновик) ✓ ожид=200+id факт=201
api Приёмка №1 проведена ✓ ожид=204 факт=204
api Остаток 0bd54f29… +20 ✓ ожид=20 факт=20
api Остаток 0cfad6a5… +25 ✓ ожид=25 факт=25
api Остаток e6e79bf2… +30 ✓ ожид=30 факт=30
api Остаток fbe7d065… +35 ✓ ожид=35 факт=35
api Остаток 3a92d8a7… +40 ✓ ожид=40 факт=40
api Остаток 9a6a59f8… +45 ✓ ожид=45 факт=45
api Остаток db59983d… +50 ✓ ожид=50 факт=50
api Остаток 66866675… +55 ✓ ожид=55 факт=55
api Остаток a6d3c6a1… +60 ✓ ожид=60 факт=60
api Остаток f75a5241… +65 ✓ ожид=65 факт=65
api Остаток 519251c8… +70 ✓ ожид=70 факт=70
api Остаток 89f82dd6… +75 ✓ ожид=75 факт=75
api Себестоимость товара = цене приёмки ✓ ожид=900 факт=900

✓ Step step06_supply2_excel: Приёмка №2 из табличной накладной (поставщик не указан → «Поставщик не указан») → провести

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

Тип Проверка Результат
api Табличная накладная загружена ✓ ожид=200+id факт=200
api Накладная разобрана (не pending/parsing) ✓ ожид=needs_review факт=needs_review
api Накладная перенесена в приёмку (apply) ✓ ожид=200+supplyId факт=200
api Поставщик приёмки №2 = «Поставщик не указан» ✓ ожид=Поставщик не указан факт=Поставщик не указан
api Приёмка №2 проведена ✓ ожид=204 факт=204
api Остаток "BIOBLAS" шампунь +7 ✓ ожид=7 факт=7
api Остаток "BIOBLAS" шампунь +4 ✓ ожид=4 факт=4
api Остаток "BIOBLAS" шампунь +9 ✓ ожид=9 факт=9

✓ Step step07_supply3_photo: Приёмка №3 по фото-накладной → ручное сопоставление → провести; снимки удалены с диска

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

Тип Проверка Результат
api Фото-накладная загружена ✓ ожид=200+id факт=200
api Фото-накладная распознана (OCR, needs_review) ✓ ожид=needs_review факт=needs_review
api OCR извлёк хотя бы одну строку ✓ ожид=≥1 факт=5
api Фото-накладная перенесена в приёмку ✓ ожид=200 факт=200
api Приёмка №3 проведена ✓ ожид=204 факт=204
api Снимки удалены с диска после apply (photo → 404) ✓ ожид=404 факт=404

✓ Step step08_supplier_payments: Оплата — №1 частично нал из кассы, №2 полностью с банка; статусы + долг = формуле

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

Тип Проверка Результат
api Оплата №1 частично наличными из кассы ✓ ожид=204 факт=201
api Оплата №2 полностью с банковского счёта ✓ ожид=204 факт=201
api Приёмка №1: оплачено = частичной сумме ✓ ожид=148812 факт=148812
api Приёмка №2: оплачено полностью ✓ ожид=18390 факт=18390
api Долг реального поставщика = начальный + приёмки − оплаты ✓ ожид=349498 факт=349498

✓ Step step09_cashier_shift: Смена — размен, 3 продажи (нал/карта/смеш), oversell→отказ, возврат, внесение/выплата, закрытие с расхождением + Z; продажа без смены→отказ

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

Тип Проверка Результат
api Смена открыта (размен 5000) ✓ ожид=200+id факт=200
api Продажа 1 (наличные) проведена ✓ ожид=204 факт=204
api Продажа 2 (карта) проведена ✓ ожид=204 факт=204
api Продажа 3 (смешанная) проведена ✓ ожид=204 факт=204
api Продажа больше остатка → отказ (409) ✓ ожид=409 факт=409
api Возврат по чеку проведён (1 шт, наличные) ✓ ожид=204 факт=204
api Внесение и выплата зафиксированы ✓ ожид=2×200 факт=200/200
api Смена закрыта ✓ ожид=200 факт=200
api Закрытие: «должно быть» (expectedCash) верно ✓ ожид=14275 факт=14275
api Закрытие: разница (факт − должно) = расхождению ✓ ожид=500 факт=500
api Z-отчёт: нал.продажи и expectedCash сходятся ✓ ожид=3775/14275 факт=3775/14275
api Продажа без открытой смены → отказ ✓ ожид=409 факт=409

✓ Step step09a_points_binding: Привязка кассира к точкам; параллельные смены на 2 точках не смешивают деньги; продажа на неактивной→отказ

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

Тип Проверка Результат
api Вторая смена на той же точке → 409 ✓ ожид=409 факт=409
api Параллельная смена на точке 2 открыта ✓ ожид=200+id факт=200
api Продажи прошли на обеих точках ✓ ожид=2×204 факт=204/204
api Точка 1: касса = размен + её продажа (деньги не смешаны) ✓ ожид=2500 факт=2500
api Точка 2: касса = размен + её продажа (деньги не смешаны) ✓ ожид=3550 факт=3550
api Смена/продажа на неактивной точке → отказ ✓ ожид=4xx факт=400

✓ Step step10_warehouse_ops: Склад — оприходование излишка, списание брака, инвентаризация CSV (часть товаров): непосчитанные не обнулены

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

Тип Проверка Результат
api Оприходование излишка (+8) ✓ ожид=8 факт=8
api Списание брака (−2) ✓ ожид=2 факт=2
api Импорт инвентаризации нашёл 2 товара ✓ ожид=2 факт=2
api Инвентаризация (частичная) создана ✓ ожид=200+id факт=201
api Инвентаризация проведена ✓ ожид=204 факт=204
api Расхождение применено (товар с недостачей → факт) ✓ ожид=48 факт=48
api Непосчитанный товар не обнулён ✓ ожид=53 факт=53

✓ Step step11_reports: Отчёты — продажи за день, прибыль, остатки на дату, «Деньги», долги; по точкам/кассирам

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

Тип Проверка Результат
api Отчёт продаж за день доступен, выручка ≥ 0 ✓ ожид=≥0 факт=7650
api Прибыль = выручка − себестоимость (по каждой строке) ✓ ожид=revenue−cost факт=200
api Отчёт остатков на дату доступен ✓ ожид=список факт=200
api Деньги: касса = начальный − оплата наличными ✓ ожид=-98812 факт=-98812
api Деньги: банк = начальный − оплата с банка ✓ ожид=181610 факт=181610
api Отчёт долгов поставщикам доступен ✓ ожид=200 факт=200
api Отчёт продаж по точкам доступен ✓ ожид=200 факт=200
api Отчёт продаж по кассирам доступен ✓ ожид=200 факт=200

✓ Step step12_invariants: Инварианты — остаток≡Σдвижений; счёт≡начальный+Σопераций; долг≡формуле; изоляция орг

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

Тип Проверка Результат
api Инвариант остаток≡Σдвижений: "BIOBLAS" шампун ✓ ожид=48 факт=48
api Инвариант остаток≡Σдвижений: "BIOBLAS" шампун ✓ ожид=57 факт=57
api Инвариант остаток≡Σдвижений: "BIOBLAS" шампун ✓ ожид=53 факт=53
api Инвариант остаток≡Σдвижений: "BIOBLAS" шампун ✓ ожид=43 факт=43
api Инвариант остаток≡Σдвижений: "IQ уроки" книги ✓ ожид=38 факт=38
api Инвариант остаток≡Σдвижений: "Ludwik" средств ✓ ожид=45 факт=45
api Инвариант остаток≡Σдвижений: "Ludwik" средств ✓ ожид=50 факт=50
api Инвариант остаток≡Σдвижений: "Pero" салфетки ✓ ожид=55 факт=55
api Инвариант остаток≡Σдвижений: "Pero" салфетки ✓ ожид=60 факт=60
api Инвариант остаток≡Σдвижений: "Pero" салфетки ✓ ожид=65 факт=65
api Инвариант остаток≡Σдвижений: "Rice Day" GRANA ✓ ожид=70 факт=70
api Инвариант остаток≡Σдвижений: "Richmond" Gold ✓ ожид=75 факт=75
api Инвариант счёт≡начальный+Σопераций: Касса (e2e) 1791 ✓ ожид=-98812 факт=-98812
api Инвариант счёт≡начальный+Σопераций: Касса-2 (e2e) 17 ✓ ожид=3000 факт=3000
api Инвариант счёт≡начальный+Σопераций: Банк (e2e) 17914 ✓ ожид=181610 факт=181610
api Инвариант счёт≡начальный+Σопераций: Эквайринг (e2e) ✓ ожид=0 факт=0
api Инвариант счёт≡начальный+Σопераций: Эквайринг-2 (e2e ✓ ожид=0 факт=0
api Инвариант долг≡формуле ✓ ожид=349498 факт=349498
api Изоляция: режим B (демо) — проверка через temp-орг в режиме C ✓ ожид=n/a факт=n/a

✓ Step step13_cancel_rollback: Отмена/откат — отмена приёмки с проданным товаром→отказ; отмена платежа→долг вернулся

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

Тип Проверка Результат
api Отмена приёмки с проданным товаром → отказ ✓ ожид=4xx факт=409
api Отмена платежа №1 ✓ ожид=204 факт=204
api Долг вернулся на сумму платежа ✓ ожид=498310 факт=498310

✓ Step step14_finalize: Финал — скриншоты ключевых экранов, деактивация e2e-сущностей (режим B)

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

Тип Проверка Результат
api Режим B: e2e-сотрудники деактивированы (не удалены) ✓ ожид=3 факт=3

Summary

  • Passed: 16
  • Failed: 0
  • Warnings: 0
  • Skipped: 0

Critical bugs

Нет.

UX recommendations

  • Скриншоты ключевых экранов: tests/e2e/reports/full-chain/*.png