Donutgramплагины
На этой страницеТри уровня проверки

Тестирование

Проверяйте формат, выбранную логику и реальный интерфейс отдельно.

Три уровня проверки

Пакет может пройти проверку формата, но ошибаться при выполнении команды. Mock-тест может пройти без настоящего нативного экрана. Проверяйте эти уровни по отдельности.

Статическая проверка

python tools/dgplugin.py validate my-plugin
python tools/dgplugin.py pack my-plugin my-plugin.dgplugin
python tools/dgplugin.py validate my-plugin.dgplugin

Для собственной страницы дополнительно используйте:

python tools/dgplugin.py validate-ui page.json

Mock-хост

Нужен Node.js. Команда запускает код разрабатываемого примера в отдельном процессе с ограничением времени и заранее заданными результатами нативных операций.

python tools/dgplugin.py test examples/quiet-links tests/quiet-links.json
python tools/dgplugin.py test examples/native-controls tests/native-controls.json

Фикстуры описывают команды, UI-callbacks, публичные ответы и входы трансформаций. Фактические сетевые запросы, Telegram-сервер и UIKit здесь не участвуют. Запускайте этот разработческий тест для собственного или просмотренного кода.

Проверка на устройстве

Установите чистый собранный файл. Проверьте обычный путь, отсутствие контекста, отмену, отказ возможности, переключение аккаунта и повторное включение.

Для UI проверьте светлую и тёмную темы, длинные подписи, максимальный шрифт, узкий экран и клавиатуру. При обновлении проверьте данные предыдущей версии и сценарий ошибки активации.

Контроль результата

  • Команда находится там, где обещано.
  • Отмена не вызывает скрытого действия.
  • queued не выдаётся за доказанную доставку.
  • При общей паузе runtime не продолжает выполнение.
  • Удалённые страницы и callbacks больше не действуют.
  • Ошибка не приводит к незаметной отправке исходной команды.

Проверки самого хоста

В исходном репозитории Donutgram есть production-тесты Swift/QuickJS, валидаторов и жизненного цикла. Они проверяют хост отдельно от вашего плагина и не заменяют реальный просмотр нового экрана.