5.1 KiB
UAT по каждому элементу управления — прогресс
Доделываем то, что в docs/uat-report-2026-10-09.md честно помечено «не покрыто»:
per-control UI-UAT P2–P4 в браузере + UI-гейтинг прав по ролям (кнопки и прямые URL).
Правило владельца: НЕ перепроверять уже покрытое (часть A отчёта, filters-sweep 21/21, mobile-390, ошибки ввода) — только непокрытое.
Легенда: [x] готово · [~] частично · [ ] не начато.
Как устроены списки (чтобы тестировать осмысленно)
Все list-страницы используют общий useCatalogList(url, extraParams) → search, page,
sortKey/sortOrder (клик по заголовку колонки), фильтры — <Select>; экспорт — ExportButton
(с текущими фильтрами); действия документа (провести/отменить/удалить/на основании/печать) —
на страницах редактирования (*/new, */:id). Права в UI — RoleGuard (показывает
«Нет доступа») и useCan()/AdvancedModeGuard.
Реестр экранов × контролов (P1–P4)
Контролы: S=поиск, F=фильтры (период/статус/склад/точка/кассир/контрагент/группа), O=сортировка по колонкам, P=пагинация, R=сброс, X=экспорт-с-фильтрами, A=действия (провести/отменить/удалить/ печать/на основании), G=гейтинг прав (кнопки + прямой URL).
| Экран | URL | Контролы | Статус |
|---|---|---|---|
| Товары | /catalog/products | S F O P X A | [ ] |
| Остатки | /inventory/stock | (покрыт filters-sweep) | [x] |
| Движения | /inventory/movements | S F O P | [ ] |
| Приёмки | /purchases/supplies | S F O P X A | [ ] |
| Накладные по фото | /purchases/invoices | S F A | [ ] |
| Оприходования | /inventory/enters | S F O P A | [ ] |
| Списания | /inventory/losses | S F O P A | [ ] |
| Инвентаризации | /inventory/inventories | S F O P A | [ ] |
| Возвраты поставщику | /purchases/supplier-returns | S F O P A | [ ] |
| Продажи (чеки) | /sales/retail | S F O P X A | [ ] |
| Контрагенты | /catalog/counterparties | S F O P A G | [ ] |
| Сотрудники | /settings/employees | S A G | [ ] |
| Точки продаж | /catalog/retail-points | A G | [ ] |
| Склады | /catalog/stores | A G | [ ] |
| Счета | /money/accounts | A G | [ ] |
| Платежи/транзакции | /money/transactions | S F O P G | [ ] |
| Смены | /money/shifts | F O P A | [ ] |
| Долги поставщикам | /money/supplier-debts | S F O P G | [ ] |
| Отчёт продаж | /reports/sales | F X G | [ ] |
| Отчёт прибыли | /reports/profit | F X G | [ ] |
| Отчёт денег | /money/report | F X G | [ ] |
| Отчёт остатков | /reports/stock | F X | [ ] |
| Проверка данных | /catalog/data-quality | (покрыт) | [x] |
План
- Browser e2e
stage-ui-uat-controls.spec.ts: контрол шлёт правильный параметр (поиск→search, сорт→sort, фильтр→свой параметр, пагинация→page=2, экспорт→/export&format); семантику параметр→строки держит filters-sweep. 21/21 ✓ на стенде. - Browser e2e действий документа: приёмка черновик → провести (чекбокс «Проведено») → снять проведение → удалить — настоящими кнопками UI, проверяем POST/DELETE 2xx.
- Browser e2e прав
stage-ui-uat-permissions.spec.ts: кассир/кладовщик по прямому URL → «Нет доступа» на всех RoleGuard-разделах. 2/2 ✓. (Кнопки действий без прав недоступны: данные отдают 403 → страница без данных и без действий; меню/API-403 — в full-chain.) - Сводка в uat-report (часть C): экран → контрол → ✓/✗ (✗ нет). P1–P2 в nightly (step 3d).
Итог (2026-10-09)
Per-control UI-UAT в браузере доделан: контролы списков (поиск/фильтры/сортировка/пагинация/ сброс/экспорт) + жизненный цикл документа кнопками + гейтинг прав по прямым URL. 21/21 + 2/2 ✓ на стенде; добавлено в nightly (step 3d). Отчёт — часть C в docs/uat-report-2026-10-09.md.
Что НЕ трогаем
Прод, shared-postgres, global.json, gateway nginx, sklad.