Files
stroy-bot-monorepo/docs/TEST-PLAN.md
T
Тимур Городецкий b18cf50efd docs: add responsive layout checks to the test plan
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 16:19:59 +05:00

26 KiB
Raw Blame History

План ручной проверки StroyBot

Пошаговая проверка нового приложения перед выкаткой. Дополняет MIGRATION-CHECKLIST.md (там — список функций, здесь — что нажать и что должно получиться).

Правила

  • Всё, что записывает данные (создать / изменить / удалить / импорт / утвердить), — только на проекте «ТЕСТ StroyBot». Такие сценарии помечены ✍️.
  • Всё, что только читает, проверяем на настоящих проектах — сравнением со старой страницей (см. «Главный приём»).
  • Нашёл расхождение — не исправляй ничего сам, запиши по шаблону «Как сообщить о баге» и иди дальше.
  • Оформление — в стиле ui-kit (решение 2026-10-16). Отличия во внешнем виде от старых страниц (раскладка, цвета, регистр подписей) багом не считаются. Сравниваем функции, тексты, данные, права. Баг по виду — только если что-то не видно, обрезано, наезжает или не нажимается.
  • Отметки: [x] — совпало, [!] — баг (номер бага рядом), [-] — не применимо.

0. Подготовка (один раз)

0.1 Тестовые данные в SharePoint (/sites/stroy)

  • В списке «Проекты» создать проект «ТЕСТ StroyBot», статус текущий. Записать его Id (видно в адресе элемента): Id = ____.
  • В списке «Доступы» создать строку: проект = «ТЕСТ StroyBot», пользователь = ты, read = да, edit0 = да, aproove = нет.
    • Это разные поля в разных старых web parts (lookup project/user и поля projectId/userId). Если при создании строки видно оба набора — заполни оба. Запиши, какие поля реально есть в списке: ________________.
  • В списке «Объекты» — пока ничего, объекты создадим в приложении (T-OBJ).
  • Убедись, что в «Смены», «Компании», «Профессии», «Техника», «Единицы измерения» есть хотя бы по 2 элемента.

0.2 Переключение ролей одним аккаунтом

Роли меняются правкой твоей строки «Доступы» у «ТЕСТ StroyBot», статус проекта — полем Status в «Проекты». После правки — F5 в приложении.

Роль read edit0 aproove
Р — только чтение да нет нет
Е — редактор да да нет
У — утверждающий да нет да
Н — нет доступа нет нет нет

Начальная роль — Е.

0.3 Запуск workbench

  1. В терминале VS Code (Ctrl+`) в папке stroy-bot-monorepo: npx heft start. Дождаться Starting server.
  2. Открыть https://tnsukz.sharepoint.com/sites/stroy/_layouts/workbench.aspx (именно на сайте stroy, не корневом).
  3. Разрешить загрузку отладочных скриптов, если браузер спросит.
  4. + → web part StroyBot.
  5. Держать открытыми F12 → Console и F12 → Network (фильтр Fetch/XHR) — туда смотрим при любой ошибке.

Workbench не умеет одобрять API-разрешения. Если Dataverse или выгрузки упадут с ошибкой доступа/токена — это ожидаемо до выкатки пакета; помечай [!] с текстом ошибки, разберёмся.


Главный приём — сравнение со старой страницей

Для любого раздела, который показывает данные:

  1. Открыть старую страницу раздела (из старого stroy-bot-main) для проекта X.
  2. Открыть новый раздел в workbench для того же проекта X.
  3. Сравнить: количество строк, названия, числа, даты, порядок, бейджи, какие кнопки видны.

Проекты для сравнения — 2 настоящих: один большой (много объектов и отчётов), один маленький. Запиши:

  • Большой: ________________ (Id __)
  • Маленький: ________________ (Id __)

1. Оболочка — T-APP

  • T-APP-01 Открыть web part. Слева меню с одним пунктом «Проект», справа главная. Ошибок в Console нет.
  • T-APP-02 Выбрать проект → в меню появились разделы. Нажать «Объекты» → адрес стал …?page=objects&projectId=….
  • T-APP-03 Нажать «назад» в браузере → вернулись на главную. «Вперёд» → снова объекты.
  • T-APP-04 Скопировать адрес раздела, открыть в новой вкладке → открылся тот же раздел того же проекта.
  • T-APP-05 F5 на любом разделе → остались в нём.
  • T-APP-06 В той же вкладке удалить из адреса &page=…&projectId=…, Enter, заново добавить web part → на главной уже выбран прежний проект, меню — со всеми разделами. (Выбор хранится в sessionStorage — он живёт только в пределах вкладки; после закрытия вкладки не сохраняется — так было и в старом main.)
  • T-APP-07 Шрифты подгрузились: заголовки разделов — с засечками (Lora), остальной текст — Inter.
  • T-APP-08 Узкое окно (< 768px) → меню прячется, появляется кнопка-бургер, меню открывается поверх.

2. Главная — T-HUB (сравнение со старым stroy-bot-main)

  • T-HUB-01 Клик в поле «Проект» → список; набор совпадает со старым main; сверху до 7 недавно активных.
  • T-HUB-02 Ввести часть названия (разный регистр) → фильтруется, не больше 7 строк; несуществующее → «Проекты не найдены».
  • T-HUB-03 Esc и клик мимо → список закрылся, в поле — выбранный проект.
  • T-HUB-04 Бейджи статусов совпадают по цвету: текущий — зелёный, завершён — серый, архивный — золотой, пусто — «Без статуса».
  • T-HUB-05 Без выбранного проекта все карточки неактивны, видна подсказка.
  • T-HUB-06 «ТЕСТ StroyBot», роль Е, статус текущий → все 6 карточек активны; меню — все разделы.
  • T-HUB-07 Роль Р → неактивна только «Отправить отчёт»; в меню нет «Отправить отчёт» и «Привязка к справочнику».
  • [-] T-HUB-08 Статус «завершен» — не применимо: в SharePoint у поля «Статус» только «Текущий» и «Архивный» (проверено 2026-10-16). Правило в коде остаётся на случай, если вариант появится.
  • T-HUB-09 Статус «Архивный» (менять в SharePoint, список «Проекты») → бейдж золотой, активен только «Архив», выгрузка неактивна, в меню только «Проект». Вернуть «Текущий».
    • ⚠️ Статус меняем в списке SharePoint, а не на портале проектов: портал пишет статус («Текущий» / «Архив») в справочник API, StroyBot его не читает.
  • T-HUB-10 «Архив проекта» → в новой вкладке папка Документы/Архив/{проект} (та же, что открывает старый main).
  • T-HUB-11 Ctrl+клик по карточке «Объекты» → раздел открылся в новой вкладке.
  • T-HUB-12 Выгрузка: «?» показывает 3 строки и закрывается кликом мимо. Даты 13.10–19.10 → «Отчёт за период»; 12.10–18.10 (Пн–Вс) → «Еженедельный»; один день → «Ежедневный»; начало позже конца → ошибка, кнопка неактивна.
  • T-HUB-13 «Выгрузить» на большом проекте за неделю → скачался weekly_…xlsx. Сравнить с файлом из старого main за тот же период — содержимое одинаковое.

3. Ресурсы проекта — T-RES

  • T-RES-01 Большой проект: вкладки «Профессии (N)», «Компании (N)» — числа и списки совпадают со старой страницей.
  • T-RES-02 Поиск слева, «✕» очищает; «уже добавлено» у привязанных.
  • ✍️ T-RES-03 «ТЕСТ StroyBot»: «+» у профессии → сразу справа; F5 → осталась. Проверить строку в «Профессии по проекту».
  • ✍️ T-RES-04 «−» → исчезла; F5 → не вернулась; строка удалена из списка.
  • ✍️ T-RES-05 То же для компании.
  • T-RES-06 Узкое окно → колонки друг под другом.

4. Привязка к справочнику — T-BND

  • T-BND-01 Большой проект: карточка проекта (описание, адрес, статус, даты, координаты) совпадает со старой страницей; бейдж «Привязан/Не привязан» тот же.
  • T-BND-02 Поиск по справочнику: результаты, «←/→», «стр / всего» — как в старой.
  • ✍️ T-BND-03 «ТЕСТ StroyBot»: выбрать проект справочника → «Связать» → сообщение успеха, бейдж «Привязан». В «Проекты» заполнились UniqueId0, UniqueName.
  • ✍️ T-BND-04 «Отвязать» → «Привязка удалена», поля очищены. Снова привязать (нужно для T-IMP).

5. Объекты — T-OBJ

  • T-OBJ-01 Большой проект: число объектов в тулбаре и дерево (названия, вложенность, счётчики детей) совпадают со старой страницей.
  • T-OBJ-02 «Развернуть» / «Свернуть», клик по строке раскрывает.
  • T-OBJ-03 Роль Р → нет «Добавить объект», нет меню ⋮, нет перетаскивания.
  • ✍️ T-OBJ-04 «ТЕСТ StroyBot», роль Е: пустое дерево → «Объекты не найдены» + кнопка. Добавить объект-пятно «Корпус 1».
  • ✍️ T-OBJ-05 Меню ⋮ у «Корпус 1» → «Добавить объект» → «Раздел» «Фундамент». У «Фундамент» → «Вид работ» «Бетонирование». У вида работ нет пункта «Добавить объект».
  • ✍️ T-OBJ-06 Пустое название → сообщение «Поле обязательно…»; Enter сохраняет.
  • ✍️ T-OBJ-07 Редактировать «Фундамент» → сменить родителя (нужен второй объект-пятно «Корпус 2»).
  • [-] T-OBJ-08 Перетаскивание — убрано (решение 2026-10-16). Проверить, что строку дерева мышкой больше не перетащить.
  • ✍️ T-OBJ-09 Удалить объект с детьми → подтверждение с числом детей; дети остаются (🐞 так было).
  • T-OBJ-10 «Экспорт» → скачался objects-{id}.xlsx, содержимое как у старой страницы.
  • T-OBJ-11 Меню ⋮ → «Работы» → открылся раздел «Работы» этого объекта.

6. Работы — T-WRK

  • T-WRK-01 Объект большого проекта: список работ, единицы, объёмы (3 знака), даты, вложенность — как в старой странице.
  • T-WRK-02 Родители свёрнуты; нумерация считает только видимые строки.
  • ✍️ T-WRK-03 «ТЕСТ StroyBot», «Бетонирование»: «Добавить работу» «Бетон В25», м3, 12.5, даты.
  • ✍️ T-WRK-04 «Сохранить и добавить еще» → окно не закрылось, поля пустые, родитель тот же.
  • ✍️ T-WRK-05 ⋮ → «Добавить дочернюю» → родитель предвыбран.
  • ✍️ T-WRK-06 «Редактировать» дочернюю → убрать родителя → сохранить → стала корневой.
  • ✍️ T-WRK-07 В списке «Родительская работа» при правке нет самой работы и её потомков.
  • ✍️ T-WRK-08 Удалить → «Подтвердите удаление» → исчезла.
  • T-WRK-09 Роль Р → нет кнопок добавления и меню ⋮.

7. Импорт работ — T-IMP

⛔ T-IMP-02…07 заблокированы (2026-10-19): сначала GET https://api.tnsu.kz/Project/{oid}/works отвечал 500 42703: column l.name does not exist — команда API исправила. Теперь он отвечает 200, но totalCount: 0 у всех проектов: сметы в справочник ещё не загружены. Старый web part показывает то же «Работы не найдены». Повторить, когда появится хотя бы один проект со сметой (тестовый проект 51 привязать к нему; настоящие проекты не привязывать). T-IMP-01 ✅. Проверено по коду: API урезает pageSize=200 до 100, но число страниц берётся из totalPages ответа — работы не теряются.

  • T-IMP-01 Проект без привязки к справочнику → «Проект не привязан к справочнику…».
  • T-IMP-02 Большой привязанный проект: «Загрузка работ… X из Y», затем число работ совпадает со старой страницей.
  • T-IMP-03 Поиск (код СНБ, объём, название), страницы по 100.
  • ✍️ T-IMP-04 «ТЕСТ StroyBot» (привязан в T-BND-04): выбрать объект → отметить 2 работы → «Импортировать» → тост «✓ Успешно импортировано: 2»; строки стали «✓ импортировано» и неактивны.
  • ✍️ T-IMP-05 Работы появились в разделе «Работы» этого объекта.
  • ✍️ T-IMP-06 «Импорт с созданием объекта» → в «Объекты» созданы объект и раздел из сметы, работы — под ними.
  • T-IMP-07 «Импортировать» без объекта → тост «Выберите объект…».

8. Отчёты по проекту — T-RPL

  • T-RPL-01 Большой проект, текущая неделя: число карточек, номера, даты, авторы, компании, объекты — как в старой странице.
  • T-RPL-02 Сменить период → «Применить» → совпадает со старой за тот же период.
  • T-RPL-03 Поиск по автору, компании, объекту, комментарию.
  • T-RPL-04 Роль Н → «Нет доступа».
  • T-RPL-05 Роль Р → нет «Отправить отчёт», копирования и удаления.
  • T-RPL-06 Клик по карточке → форма отчёта в новой вкладке с reportId.

9. Форма отчёта — T-REP (самое важное)

Роль Е, «ТЕСТ StroyBot», объекты и работы из T-OBJ / T-WRK.

  • ✍️ T-REP-01 «Отправить отчёт» → «Новый отчет», дата — сегодня, смена — первая.
  • ✍️ T-REP-02 «Сохранить» пустым → все 5 ошибок валидации, тексты как в старой форме.
  • ✍️ T-REP-03 Выбрать объект, компанию; «+ Выбрать работу» → работы объекта; drill-down по родителям; «Выбрать «X»».
  • ✍️ T-REP-04 У работы: значение 3.5, комментарий; «Персонал на работе» + профессия (2 чел., 8 ч); «Техника на работе» + техника.
  • ✍️ T-REP-05 Общий персонал с типом «Часы простоя» без комментария → ошибка валидации; с комментарием — ок.
  • ✍️ T-REP-06 Общая техника «Часы ремонта» + комментарий.
  • ✍️ T-REP-07 Добавить 2 фото → превью; удалить одно.
  • ✍️ T-REP-08 «Сохранить отчет» → «Отчет успешно сохранен!», кнопка стала «← Вернуться назад». Записать номер отчёта: № ____.
  • ✍️ T-REP-09 Проверить в данных: отчёт в Dataverse; строки — работа, её персонал и техника с родителем = строка работы, общий персонал и техника без родителя; фото в DocLib/{projectId}_{номер}.
  • ✍️ T-REP-10 Открыть отчёт из «Отчёты по проекту» → режим правки, всё заполнено как сохраняли (включая персонал внутри работы).
  • ✍️ T-REP-11 Изменить значение работы, удалить общую технику → сохранить → открыть заново → изменения на месте, лишних и задвоенных строк нет.
  • ✍️ T-REP-12 Сменить объект в форме → работы очистились.
  • ✍️ T-REP-13 «Создать на основе» (копирование) → новая форма, всё скопировано, дата — сегодня, фото — пусто; сохранить → новый номер.
  • ✍️ T-REP-14 Пикер техники: группы, фильтр, «Все». Создать новую технику из пикера → появилась в списке «Техника».
  • ✍️ T-REP-15 Пикер работ: создать новую работу (ед., план, родитель) → появилась в «Работах» объекта.
  • ✍️ T-REP-16 Роль У → открыть неутверждённый отчёт → «На утверждении», поля только для чтения, «Утвердить отчет» → подтверждение → «Отчет утвержден!», бейдж «Утверждён».
  • ✍️ T-REP-17 Роль Е → утверждённый отчёт открывается только для чтения.
  • T-REP-18 Роль Р → отчёт только для чтения, кнопок нет.
  • T-REP-19 Роль Н → «Нет доступа» при открытии существующего отчёта.
  • T-REP-20 Большой проект: открыть 3 разных старых отчёта → всё совпадает со старой формой (план-факт, персонал, техника, фото-папка).
    • Проверено на проекте 17: №2030 и ещё 2 отчёта совпали, режим правки тот же. Отчёт с персоналом/техникой внутри работы найти не удалось (прямого доступа к Dataverse нет) — вложенные строки проверены только на тестовом проекте (T-REP-10/11). Дополнительно: встретится такой отчёт — сверить со старой формой.
  • T-REP-21 «← Вернуться назад» → вернулись туда, откуда пришли.
  • T-REP-22 Enter в любом поле не перезагружает страницу.
  • ✍️ T-REP-23 Удалить тестовый отчёт из «Отчёты по проекту» → «Удалить отчёт?» → пропал из списка (мягкое удаление).

10. Адаптивность — T-RSP

Как: F12 → кнопка «телефон/планшет» (Ctrl+Shift+M) → сверху выбрать ширину → F5. Только просмотр, ничего не сохранять. Ширины: 360 (обычный телефон), 768 (планшет), 1280 (ноутбук), плюс твой монитор как есть. На каждой ширине — признаки бага: горизонтальная прокрутка всей страницы, текст/кнопка вылезает за край, элементы налезают друг на друга, что-то нельзя нажать.

  • T-RSP-01 360: меню скрыто, кнопка ☰ открывает его поверх, выбор раздела закрывает меню.
  • T-RSP-02 360: главная — выбор проекта, даты в столбик, карточки в одну колонку.
  • T-RSP-03 360: «Отчёты по проекту» — фильтр дат над поиском, карточки в одну колонку, кнопки копирования/удаления нажимаются.
  • T-RSP-04 360: форма отчёта — поля во всю ширину, «Кол-во/Часы» друг под другом, пикер — шторка снизу, список прокручивается, «Сохранить» видна.
  • T-RSP-05 360: «Объекты» и «Работы» — дерево не уезжает вправо, длинные названия переносятся/обрезаются, меню ⋮ не уходит за экран.
  • T-RSP-06 360: «Ресурсы», «Привязка», «Импорт» — колонки складываются, модалки помещаются в экран.
  • T-RSP-07 768: все разделы — то же беглым просмотром; пикер отчёта — окно по центру.
  • T-RSP-08 1280 и свой монитор: меню слева, ничего не растянуто на всю ширину неудобно, форма отчёта — узкая колонка.
  • T-RSP-09 После деплоя: открыть страницу на настоящем телефоне (браузер и приложение SharePoint) — меню, форма отчёта, пикер (сохранять только на тестовом проекте 51).

Как сообщить о баге

Скопируй и заполни:

Баг: T-XXX-NN
Роль / проект: Е / ТЕСТ StroyBot
Что сделал: 1) … 2) … 3) …
Ожидал: …
Получил: …
Старая страница в этом случае: … (если сравнивал)
Console (F12): текст красной ошибки
Network (F12): красный запрос — адрес и ответ (вкладка Response)
Скриншот: (если про внешний вид)

Итог

Раздел Пройдено Багов
Оболочка
Главная
Ресурсы
Привязка
Объекты
Работы
Импорт
Отчёты по проекту
Форма отчёта