krona-front/docs/handoff/control-center/ACCEPTANCE-TESTS.md

117 lines
8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Реестр приёмочных сценариев (Acceptance Tests) Krona Control Center
Все приёмочные сценарии автоматизированы в Playwright E2E сьюте (`e2e/11-control-center.spec.ts`) и покрывают как функциональные требования, так и устойчивость интерфейса.
---
### Сценарий 1: Поиск организации и открытие 360° Инспектора
- **Предусловия**: Оператор находится на странице `/control/organizations`.
- **Шаги**:
1. Ввести в поле поиска `"Северная"`.
2. Убедиться, что в таблице отображается только «Северная Ритейл Группа».
3. Нажать кнопку `"360° Карточка"`.
- **Ожидаемый результат**:
- Открывается боковой Drawer инспектора с карточкой организации, ИНН, датой регистрации.
- Доступны вкладки «Обзор», «Модули», «Инсталляции», «Биллинг».
- Переключение на вкладку «Модули» отображает установленные версии модулей и их статус.
---
### Сценарий 2: Подтверждение опасного действия с обязательным обоснованием
- **Предусловия**: Открыт 360° инспектор организации.
- **Шаги**:
1. Нажать кнопку `"Выдать Trial +14 дней"`.
2. Проверить появление модального диалога `ConfirmOperatorAction`.
3. Проверить, что кнопка подтверждения отключена при пустом поле обоснования.
4. Ввести обоснование `"Запрос от аккаунт-директора на пилотное тестирование филиала"`.
5. Нажать `"Подтвердить операцию"`.
- **Ожидаемый результат**:
- Диалог закрывается, дата окончания trial продлевается на 14 дней.
- В журнал аудита добавляется запись с SHA-256 хешем и введенным обоснованием.
---
### Сценарий 3: Фильтрация подписок, истекающих в течение 7 дней
- **Предусловия**: Оператор открывает раздел `/control/billing`.
- **Шаги**:
1. Активировать быстрый фильтр `"Истекают в течение 7 дней"`.
- **Ожидаемый результат**:
- Таблица фильтруется, остаётся только «ТехноПарк Восток» (срок окончания подписки через 2 дня).
- Отображается сумма регулярного платежа в рублях через `MoneyDisplay`.
---
### Сценарий 4: Мониторинг терминалов и выявление устаревших Android-касс
- **Предусловия**: Переход в `/control/installations`.
- **Шаги**:
1. Нажать на быстрый фильтр `"Устаревшие версии"`.
2. Проверить строки с бейджем `"Устарело"` (POS-терминал кассы №4, Android 11, клиент v1.8.4).
3. Нажать действие `"Отозвать токен"`.
- **Ожидаемый результат**:
- Открывается окно подтверждения с фиксацией отзыва токена устройства.
---
### Сценарий 5: Мониторинг узлов кластера и сбой Server Monitor (Circuit Breaker)
- **Предусловия**: Переход в `/control/infrastructure`.
- **Шаги**:
1. Проверить список нод: `node-krona-prod-01`, `node-krona-prod-02`, `node-krona-prod-03`.
2. В шапке нажать кнопку симуляции `"Simulate SM Outage"`.
- **Ожидаемый результат**:
- Вверху экрана появляется предупреждающий баннер `Server Monitor Unreachable (Fallback to Local Cache)`.
- Все экраны сохраняют интерактивность и читают данные из последнего валидного снимка IndexedDB.
---
### Сценарий 6: Создание инцидента из критического алерта
- **Предусловия**: Переход в `/control/incidents`.
- **Шаги**:
1. В списке обнаруженных аномалий выбрать `"Деградация p99 latency в кластере баз данных"`.
2. Нажать `"Создать инцидент P1"`.
3. Заполнить описание и назначить дежурного инженера.
- **Ожидаемый результат**:
- Инцидент регистрируется со статусом `Investigating` и уровнем `P1 Critical`.
---
### Сценарий 7: Публикация таргетированного системного оповещения
- **Предусловия**: Переход в `/control/announcements`.
- **Шаги**:
1. Заполнить форму объявления: заголовок `"Плановое ночное техобслуживание"`, уровень `Warning`.
2. Нажать кнопку `"Опубликовать"`.
3. В модальном окне ввести причину публикации.
- **Ожидаемый результат**:
- Оповещение появляется в списке активных трансляций.
---
### Сценарий 8: Управление Rollout-конвейером (Пауза / Возобновление)
- **Предусловия**: Переход в `/control/modules`.
- **Шаги**:
1. Выбрать модуль с активной раскаткой («Омниканальные коммуникации», фаза Pilot).
2. Нажать `"Поставить на паузу"`.
3. Ввести причину в модальном диалоге.
- **Ожидаемый результат**:
- Статус раскатки переходит в `"На паузе"`, конвейер замораживается.
---
### Сценарий 9: Смена роли оператора и проверка соблюдения RBAC
- **Предусловия**: Открыт любой раздел Control Center.
- **Шаги**:
1. В переключателе сессии в шапке выбрать роль `"Аудитор безопасности"`.
2. Перейти в раздел `/control/modules`.
- **Ожидаемый результат**:
- Кнопки запуска и остановки раскатки становятся неактивными (`disabled`) для аудитора.
- Повторное переключение на `"Владелец платформы"` восстанавливает полный доступ.
---
### Сценарий 10: Сохранение состояния при перезагрузке страницы (IndexedDB)
- **Предусловия**: В журнал аудита добавлены записи операторских действий.
- **Шаги**:
1. Зафиксировать количество строк в журнале `/control/audit`.
2. Выполнить полную перезагрузку страницы в браузере (`F5` / `page.reload()`).
- **Ожидаемый результат**:
- Интерфейс восстанавливает данные из локальной базы IndexedDB.
- Количество строк журнала аудита и SHA-256 хеши сохраняются неизменными.