food-market/tests/e2e/reports/catalog-edge-2026-05-26T06-28-35-003Z.md
nns f2f64646b1 docs(e2e): финальный системный отчёт 2026-05-26 — все 9 сценариев зелёные
Сводный отчёт systemic-2026-05-26.md + зелёные прогоны всех сценариев
(82 шага, 0 падений). За сессию исправлено: refresh-rotation (TokenId +
zero reuse-leeway), сериализуемое проведение приёмки против lost update,
MoySklad BaseUrl в конфиг. Покрыты впервые: конкурентность приёмок,
дашбордная выручка, импорт MoySklad (идемпотентность/маппинг). Зафиксированы
gap'ы по нереализованным отчётам (профит/ABC/экспорт, ТЗ 2.12).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 11:30:46 +05:00

5 KiB
Raw Blame History

E2E report: catalog-edge

Запущен: 2026-05-26T06:28:32.030Z Длительность: 1.6с

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

✓ Step step01_bootstrap: Орг + admin + lookups

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

Тип Проверка Результат
api Bootstrap lookups получены

✓ Step step02_empty_product_name_rejected: POST product с пустым name → 400

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

Тип Проверка Результат
api POST product с пустым name → 400 ✓ status=400 {"type":"https://tools.ietf.org/html/rfc9110#section-15.5.1","title":"One or more validation errors occurred.","status":

✓ Step step03_negative_price_rejected: POST product с отрицательной ценой amount=-100 → 400

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

Тип Проверка Результат
api POST product с amount=-100 → 400 ✓ status=400 {"type":"https://tools.ietf.org/html/rfc9110#section-15.5.1","title":"One or more validation errors occurred.","status":

✓ Step step04_oversized_name_truncated_or_rejected: POST product с name > 500 символов → 400 (превышение maxLength)

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

Тип Проверка Результат
api POST product с name=600 chars → 4xx ✓ status=400 {"type":"https://tools.ietf.org/html/rfc9110#section-15.5.1","title":"One or more validation errors

✓ Step step05_duplicate_product_article: POST второго product с тем же article → 4xx (если уникальный) или OK + проверка БД

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

Тип Проверка Результат
api POST 1-й product с article OK ✓ status=201
api POST 2-й product с тем же article (gap) ✓ не запрещено сервером

✓ Step step06_self_parent_group_rejected: POST product-group с parentId=собственный id (цикл) → 400

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

Тип Проверка Результат
api PUT product-group parentId=self → 4xx ✓ status=400 {"error":"ParentId cannot be self"}

✓ Step step07_delete_group_with_children: DELETE group у которой есть подгруппы → 409

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

Тип Проверка Результат
api DELETE group с детьми → 4xx ✓ status=400 {"error":"Системную группу удалить нельзя."}

✓ Step step08_delete_group_with_products: DELETE group в которой есть продукты → 409

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

Тип Проверка Результат
api DELETE group с продуктами → 4xx ✓ status=400 {"error":"Системную группу удалить нельзя."}

✓ Step step09_delete_unit_with_products: DELETE enable у unit, на которую ссылаются продукты → 409

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

Тип Проверка Результат
api DELETE enable у unit с продуктами → 4xx ✓ status=409 {"error":"Единица используется в товарах. Перепривяжите товары на другую единицу прежде чем отключать.","products":["First","Second"]}

✓ Step step10_delete_system_price_type: DELETE PriceType.IsSystem=true → 409

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

Тип Проверка Результат
api DELETE системной PriceType → 4xx ✓ status=400 {"error":"Системная запись не может быть удалена."}

✓ Step step11_second_retail_price_type: POST PriceType с IsRetail=true когда уже есть Retail → 409

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

Тип Проверка Результат
api POST второй IsRetail PriceType — 201 (флаг перенесён) или 4xx ✓ status=201
api IsRetail=true ровно у одного PriceType (uniqueness) ✓ count=1

✓ Step step12_delete_counterparty_with_supply: DELETE counterparty который использован в Supply → 409

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

Тип Проверка Результат
api DELETE counterparty с Supply → 4xx ✓ status=409 {"error":"Нельзя удалить контрагента: он используется в документах или товарах.","usedAsSupplier":true,"usedAsCustomer":

Summary

  • Passed: 12
  • Failed: 0
  • Warnings: 0
  • Skipped: 0

Critical bugs

Нет.

Logic gaps

  • Article у Product не уникален per-org — два товара могут иметь одинаковый артикул, путаница в учёте.