РУБРИК · портал

← Ко всем документам

Ручной тест, этап 1 — первый запуск ученического приложения

Первый запуск задаёт один вопрос: «Где работает этот компьютер?» — «В классе» или «Самостоятельно» (D-121). От ответа расходятся два пути, и проверять надо оба.

Ветки A и B (самостоятельный режим) проходятся без учительского приложения. Ветки C и D требуют его. Ветка E — смена режима задним числом.

Пометка НОВОЕ — поведение появилось 30.08 и человеком ещё не проверялось.


Подготовка

cd mvp/student-app && npm run dev

Сброс к первому запуску — приложение закрыть, потом:

rm ~/Library/Application\ Support/student-app/rubrick.db

Файл db.key.enc рядом не трогать — это ключ шифрования, без него новая база не откроется. Сброс нужен перед каждой веткой A–D: вопрос про режим задают один раз за жизнь базы.

Учительское приложение (для веток C и D), в отдельном терминале:

cd mvp/teacher-app && npm run dev:electron

Ветка A — самостоятельный режим, без учителя

Домашний сценарий. Учительское приложение не нужно и не должно быть запущено.

№Что сделатьЧто должно быть
A1Запустить на чистой базеНОВОЕ Экран «Где работает этот компьютер?» с двумя карточками. Углы прямые, лишних подписей нет
A2Нажать «Самостоятельно»Экран «Выбери свою карточку». Есть «Локальная группа» и кнопка «Добавить ученика»
A3Закрыть и запустить сноваНОВОЕ Вопрос не задают второй раз — сразу выбор карточки
A4«Добавить ученика» → «Сохранить» с пустыми полями«Напиши имя и фамилию…», карточка не создаётся
A5Имя из одних пробеловТо же сообщение (раньше форма молчала)
A6Имя + PIN из 2 цифр → «Сохранить»НОВОЕ «PIN — это ровно четыре цифры…». Главная проверка Д-6: раньше короткий PIN молча выбрасывался и карточка создавалась без защиты
A7Дописать PIN до 4 цифрКарточка создана
A8Создать вторую карточку с тем же именемНОВОЕ «Такая карточка уже есть. Твоя — выбери её; другого человека — сохрани ещё раз»
A9Нажать «Сохранить» ещё разТёзка создаётся — это законно
A10Создать третью карточку без PINСоздана; нужна для A12
A11Выбрать карточку с PIN, ввести неверныйТочки краснеют, «Неверный PIN-код…»
A12Выбрать карточку без PINЭкран робота сразу, PIN не спрашивают
A13На экране PIN нажать «Это не я — выбрать другую карточку»НОВОЕ Возврат к выбору. Главная проверка Д-5: раньше выхода не было
A14Неверный PIN 5–6 раз подрядПоявляется задержка между попытками, но насмерть не блокирует

Ветка B — работа без робота и без сети

Продолжение ветки A, база не сбрасывается. Проверяет, что автономное устройство самодостаточно.

№Что сделатьЧто должно быть
B1Экран робота: посмотреть на две кнопкиОбе активны: «Найти робота» и «Виртуальный робот». Серых нет
B2«Найти робота» (робота рядом нет)«Роботов не нашлось» + два шага. НОВОЕ Инструкция ровно одна — было пять
B3«Виртуальный робот»Главный экран
B4ГлавнаяКарточки «Продолжить урок» нет. НОВОЕ «0% выполнено» не должно быть нигде
B5«Курсы»«Курсы появятся после синхронизации». НОВОЕ Секции «Датчики — Скоро» быть не должно
B6«Настройки» → «Синхронизация»НОВОЕ Текст согласован с индикатором в шапке (Д-4)
B7«Настройки» → «Режим устройства»НОВОЕ Написано «Самостоятельно»
B8Главная → «Новая программа»Диалог с «Блоки» и «Python». НОВОЕ Слоганов быть не должно
B9«Блоки» → собрать: старт, вперёд 20 см, поворотPython появляется справа
B10«Старт»Программа идёт, телеметрия живая, кнопка становится «Стоп»
B11«Стоп» на длинной программеОстанавливается сразу
B12Уйти с экрана и вернутьсяПрограмма на месте; в проектах один проект, не два
B13«Проверить работу» до запускаКнопка называет условие («Сначала запусти») и сама запускает

Ветка C — классный режим, учитель ЕСТЬ

Главный школьный сценарий. Сбросить базу, поднять учительское приложение.

№Что сделатьЧто должно быть
C1Учитель: создать класс и в нём 2–3 учеников; записать выданные PINPIN показывают один раз
C2Учитель: «Подключение» → открыть сопряжениеВиден отпечаток и срок
C3Ученик: чистая база → «В классе»НОВОЕ Сразу экран поиска учителя, без требования сперва создать карточку
C4Дождаться находкиУчитель найден сам; при единственном кандидате сопряжение начинается автоматически
C5Учитель: подтвердить устройствоУ ученика «Готово! Устройство сопряжено» + код
C6Сверить код с экраном учителяСовпадают. НОВОЕ Обе стороны говорят «код», а не «отпечаток безопасности»
C7«Продолжить»НОВОЕ Экран выбора карточки — не главная: ученик ещё не выбран
C8Посмотреть списокПриехали класс и ученики учителя. НОВОЕ Кнопки «Добавить ученика» быть не должно — ростер ведёт учитель
C9Выбрать себя, ввести PIN от C1Вход
C10«Курсы»Если учитель опубликовал курс — он здесь; иначе «Учитель пока не опубликовал ни одного курса»
C11Настройки → Синхронизация«Синхронизировано с приложением учителя»
C12Закрыть учительское приложение, у ученика открыть НастройкиЧерез несколько секунд «сопряжено, нет связи». Урок при этом не прерывается

Ветка D — классный режим, учителя НЕТ

Что видит ребёнок, если ноутбук привезли в класс раньше, чем подняли учителя. Сбросить базу.

№Что сделатьЧто должно быть
D1Чистая база → «В классе», учительское приложение не запущеноПоиск идёт, потом «нашлось: ничего» и форма ручного адреса. Внизу два выхода: «Подключиться позже» и «Работать самостоятельно»
D2Нажать «Подключиться позже» — уйти к выбору карточки, оставшись классным устройствомНОВОЕ Видна строка «Компьютер ещё не подключён к классу» и кнопка «Подключиться к учителю»
D3Проверить кнопку «Добавить ученика»НОВОЕ Её нет: на неподключённом классном устройстве плодить дубли нечем
D4Нажать «Подключиться к учителю»Снова экран поиска — путь не тупиковый
D5Поднять учительское приложение и повторитьСопрягается, дальше как ветка C

Ветка E — смена режима задним числом

Проверяет, что ответ на первый вопрос не приговор. База не сбрасывается — продолжение любой ветки.

№Что сделатьЧто должно быть
E1Настройки → «Режим устройства» → «Сменить режим»НОВОЕ Сначала показывают, что изменится, и только потом кнопку подтверждения
E2Подтвердить переход в классныйУводит на экран сопряжения
E3«Отмена» на шаге подтвержденияНичего не поменялось
E4Сменить обратно в самостоятельныйПрофили и работы на месте — режим меняет только источник ростера

Ветка F — повреждённая база НОВОЕ

Единственный сценарий, который подстраивается руками. Приложение закрыть.

printf 'мусор' > ~/Library/Application\ Support/student-app/rubrick.db
npm run dev
Что должно быть
Диалог «Локальная база данных повреждена или недоступна» с двумя кнопками
«Закрыть» — приложение выходит (проверить и это)
Запустить снова, «Начать заново» — стартует с чистой базы и снова спрашивает про режим
Сообщение называет путь, куда отложен битый файл; файл там лежит и не удалён

Проход глазами по текстам

Отдельным заходом, без кликов по функциям. Правило D-117: закрыть строку пальцем — если следующий клик не изменился, строка мертва.

Красные флаги: абзац там, где хватило бы фразы (потолок 90 символов, следит CI); успокоения («это не поломка», «придёт само»); подпись, пересказывающая кнопку рядом; одна мысль дважды на экране; скруглённые углы там, где брендбук требует прямых.

Найденное — присылай строкой и экраном, добавлю в чёрный список теста.


Журнал прогонов

Кто прогнал, когда, на чём и что вышло. Ветка без записи здесь считается непроверенной.

31.08.2026, ветка feat/scenarios-plan, macOS, dev-сборка

ВеткаИтог
A — самостоятельный режим (A1–A14 + подготовка)✅ пройдена целиком, человеком
B — работа без робота и сетине прогонялась
C — класс с учителемне прогонялась
D — класс без учителяне прогонялась
E — смена режимане прогонялась
F — повреждённая базане прогонялась

Отдельно, автоматикой: живые сценарии на телефоне Pixel 9a — 9 из 9 (npm run test:live, подключение по adb forward); моторы и датчики модуля не проверялись, модуля нет.

Все четыре поведения, помеченные НОВОЕ в ветке A, проверены человеком впервые: отказ от недописанного PIN (Д-6), выход с экрана PIN (Д-5), однократность вопроса о режиме (D-121) и предупреждение о тёзке. Найденное по дороге и исправленное тем же днём: скруглённые углы у поля поиска и чипов групп, аватары не по размеру и не по центру, экран сопряжения без центрирования, разная высота поля и кнопки, тупик в ответе «В классе».

Что этап НЕ проверяет