67 lines
5.1 KiB
Markdown
67 lines
5.1 KiB
Markdown
# 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] |
|
||
|
||
## План
|
||
1. [x] Browser e2e `stage-ui-uat-controls.spec.ts`: контрол шлёт правильный параметр
|
||
(поиск→search, сорт→sort, фильтр→свой параметр, пагинация→page=2, экспорт→/export&format);
|
||
семантику параметр→строки держит filters-sweep. 21/21 ✓ на стенде.
|
||
2. [x] Browser e2e действий документа: приёмка черновик → провести (чекбокс «Проведено») →
|
||
снять проведение → удалить — настоящими кнопками UI, проверяем POST/DELETE 2xx.
|
||
3. [x] Browser e2e прав `stage-ui-uat-permissions.spec.ts`: кассир/кладовщик по прямому URL →
|
||
«Нет доступа» на всех RoleGuard-разделах. 2/2 ✓. (Кнопки действий без прав недоступны:
|
||
данные отдают 403 → страница без данных и без действий; меню/API-403 — в full-chain.)
|
||
4. [x] Сводка в 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.
|