- stage-ui-uat-controls: в браузере контролы списков шлют правильный параметр (поиск→search, сортировка→sort, фильтр→свой параметр, пагинация→page=2, экспорт→/export&format), + жизненный цикл документа приёмки (провести чекбоксом «Проведено»→POST /post, снять→/unpost, удалить→DELETE). 16/16 ✓. Семантику параметр→строки независимо держит filters-sweep. - stage-ui-uat-permissions: кассир/кладовщик по ПРЯМОМУ URL к админ-разделам видят «Нет доступа» (RoleGuard), разрешённые разделы открываются. 2/2 ✓. - docs/uat-per-control-progress.md — реестр экранов × контролов. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
61 lines
4.5 KiB
Markdown
61 lines
4.5 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. [ ] Browser e2e `stage-ui-uat-controls.spec.ts`: по каждому экрану — осмысленная проверка
|
||
контролов (поиск сужает до известного, фильтр меняет набор, сортировка меняет порядок,
|
||
пагинация разбивает, экспорт отдаёт файл). Ожидаемое считает тест по данным temp-орга.
|
||
2. [ ] Browser e2e действий документа: черновик → провести → отменить проведение → удалить →
|
||
создать на основании (приёмка/оприходование/списание/чек).
|
||
3. [ ] Browser e2e прав `stage-ui-uat-permissions.spec.ts`: кассир/кладовщик — RoleGuard-URL →
|
||
«Нет доступа»; кнопки «Удалить/Отменить проведение» скрыты без прав.
|
||
4. [ ] Сводка в uat-report (часть C): экран → элемент → ✓/✗, сначала ✗. P1–P2 в nightly.
|
||
|
||
## Что НЕ трогаем
|
||
Прод, shared-postgres, global.json, gateway nginx, sklad.
|