На этой страницеТри уровня проверки
Тестирование
Проверяйте формат, выбранную логику и реальный интерфейс отдельно.
Три уровня проверки
Пакет может пройти проверку формата, но ошибаться при выполнении команды. 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, валидаторов и жизненного цикла. Они проверяют хост отдельно от вашего плагина и не заменяют реальный просмотр нового экрана.