Чек-лист проверки
То, что нельзя проверить ни тестами, ни скриншотами: всё это живёт в настоящем клиенте Telegram.
На живом клиенте
- [ ] Синхронизация между двумя устройствами под одним аккаунтом Telegram: отметить блок на телефоне — увидеть его на компьютере.
- [ ] Тактильная отдача на «+», при перетаскивании приоритетов и при выдаче достижения.
- [ ] Кнопка «назад» клиента: закрывает шторку, потом вложенный экран, и только потом мини-приложение.
- [ ] Системные подтверждения: удаление приоритета, применение набора, привязка навыка, оба сброса.
- [ ] Сохранение обоев: на iOS через «Поделиться», на Android — скачиванием.
- [ ] Выгрузка копии в клиенте, который не даёт сохранять файлы: должна уходить в буфер обмена с объяснением, а не молча ничего не делать.
- [ ] Ярлык на главный экран: на клиентах старше Bot API 8.0 кнопки быть не должно; после добавления она заменяется строкой «Ярлык уже на главном экране».
- [ ] Вход в демо и выход обратно: плашка сверху, чужие приоритеты, «Выйти» с подтверждением — и свои данные на месте, включая клик, сделанный перед самым входом.
- [ ] Демо не переживает закрытие мини-приложения: закрыть и открыть заново — должны быть свои данные, а не чужие.
- [ ] Ссылка-приглашение
?startapp=demo_fоткрывает демо сразу, а «Выйти» из него не возвращает в демо на следующем кадре.
Пограничные состояния
- [ ] Выключить и снова включить модуль «Навыки» — список должен вернуться прежним, а не пустым.
- [ ] Копия, сделанная до появления модулей, обязана читаться без ошибки.
- [ ] Экран шириной 320 px — таб-бар с пятью вкладками не должен вылезать за край.
- [ ] Клиент без CloudStorage — в настройках должно стоять «Только это устройство» и жёлтое предупреждение, а не тишина.
- [ ] Свернуть мини-приложение в полоску и развернуть обратно — каркас обязан снова занять экран целиком. Признак поломки: шапка, обрезанный переключатель периода и чёрное поле под ними при живом таб-баре внизу.
- [ ] Открыть на компьютере — окно клиента должно остаться окном: со своим заголовком, перетаскиваемым и уменьшаемым. Во весь экран приложение себя не разворачивает.
- [ ] Оставить приложение открытым через полночь — режим записи в прошлый день должен сброситься на сегодня.
- [ ] Ответить на вопрос о разряде после полуночи — ответ должен прикрепиться к вчерашнему переключению, а не потеряться.
Панель отладки
Проверяется только на настоящем устройстве: растеризация DOM в вебвью — то самое место, где браузеры расходятся сильнее всего.
- [ ] Жест тремя пальцами на живом iPhone внутри Telegram — панель открывается, и при этом ни один обычный жест (долгое нажатие, перетаскивание строк, листание) не сломался.
- [ ] Пролистать список статистики наполовину и снять кадр — кадр обязан совпадать с экраном, а не показывать список сверху.
- [ ] Собрать тикет в самолётном режиме — панель говорит «отправлю позже»; после возвращения сети тикет доезжает сам.
Что проверяет автоматика
Это перечислено, чтобы не проверять руками:
| Что | Чем |
|---|---|
| Окна периодов, серии, интервалы заряда через полночь и переход на летнее время | npm test |
| Пороги лестницы, аддитивность часов навыка, обратимость отвязки | npm test |
| Условия достижений, несъёмность автоматических | npm test |
| Что худший месяц влезает в 4096 байт | npm test |
| Что копия читается кругом и отвергает чужой файл | npm test |
| Что демо-профили валидны, детерминированы и открывают весь реестр достижений | npm test |
| Что у каждого экрана есть страница документации, а у каждого кадра — ссылка | npm test |
| Что панель отладки не тянет ничего из приложения и список зависимостей не вырос | npm test |
| Что из тикета вычищено личное: длинные строки, почта, токены | npm test |
| Что интерфейс выглядит как задумано | npm run docs:shots (два прогона подряд → «Изменилось 0») |
| Что в документации нет битых ссылок | npm run docs:build |