Smoke test checklist
Smoke test checklist
Содержание
- Быстрый обязательный набор
- Текущий baseline полного smoke
- PDF-документация
- RClone
- GUI
- Sync
- Profiles
- Archive
- Docs
Чеклист нужен после крупных изменений GUI, CLI, installer scripts, RClone/network/archive слоя или документации с изменением команд.
Быстрый обязательный набор
runtime\python.exe -m py_compile system_core\main.py system_core\auditor_core.py system_core\services\disk_auditor_service.py system_core\ui_nicegui\app.py system_core\ui_nicegui\window.py system_core\services\rclone_service.py
runtime\python.exe system_core\ui_nicegui\app.py --smoke
Security guard должен отказать non-loopback host:
runtime\python.exe system_core\ui_nicegui\app.py --host 0.0.0.0 --smoke
Ожидаемый результат: non-zero exit code и сообщение Refusing non-loopback host.
runtime\python.exe system_core\main.py pairs
runtime\python.exe system_core\main.py info
install\Check-CmdEncoding.cmd
Если в portable runtime нет pytest, ставьте его во временную папку, не в проектный runtime:
runtime\python.exe -m pip install --target tmp\pytest-deps pytest
runtime\python.exe -c "import sys; sys.path.insert(0, r'tmp\pytest-deps'); import pytest; raise SystemExit(pytest.main(['tests','-q']))"
После проверки tmp\pytest-deps можно удалить.
Текущий baseline полного smoke
После крупных GUI/RClone/network изменений baseline считается зелёным, если прошли:
py_compileпоmain.py, auditor/service, GUI app/window иrclone_service.py;app.py --smoke;- non-loopback guard через
app.py --host 0.0.0.0 --smokeс ожидаемым отказом; main.py infoиmain.py pairs;launcher_project.cmdиlauncher_profiles.cmdсAUDION_AUTO_EXIT=1;window.py --help, где видны--elevateи--no-elevate;- disposable CLI smoke:
manifest,verify,compare-safe,sync-dry-run,sync-apply,backup-quarantine,backup-hardтолько на disposable target,sync2-dry-run,sync2-apply,sync-mask; - disposable service smoke: archive ZIP/7Z, Robocopy safe/fast/large/update/scan/mirror, pack stage, direct archive to share, verify/extract archive, SMB
show_paths, RClone command preview для всех GUI modes; Tools\rclone\rclone.exe version;rclone listremotesчерез active portable config/cache, даже если remotes ещё не настроены;install\Build-Docs-PDF.cmd --dry-run.
Режимы с внешними side effects проверяются вручную: реальное SMB share create/remove и открытие PeaZip GUI.
PDF-документация
Проверить план:
install\Build-Docs-PDF.cmd --dry-run
Полная пересборка generated PDF:
install\Build-Docs-PDF.cmd --clean
После генерации проверить, что docs\PDF содержит .dark.pdf и .light-sand.pdf, а report\dev_markdown_pdf_manifest.json обновился.
RClone
Если установлен:
Tools\rclone\rclone.exe version
Tools\rclone\rclone.exe --config config\rclone\rclone.conf --cache-dir tmp\rclone-cache listremotes
В GUI проверить:
- root-раздел
ТРАНСФЕР ДАННЫХвиден и стоит первым; - раздел открывается: было падение
Invalid value: cloud, когда слой переименовали, а имя осталось вписанным строкой; - группы
Перенос,Хранилище,Подключения,Диагностикапереключаются; - в
ПереносвидныОперация,Машины,Наполнение,Что произойдёт; - операции:
Односторонняя,Зеркало,Перенести,Двусторонняя,Сверить; строка движка называет Robocopy или RClone и объясняет почему; - назначений можно добавить несколько, и отказ по невозможной паре виден до запуска;
Сначала упаковатьдействительно упаковывает: в журнале появляетсяPACK, и на приёмник приезжают архивы, а не россыпь;- при удалённом источнике упаковка не молчит, а говорит, что упаковывать нечего;
Стоп, если удалений большепоявляется только у зеркала и добавляет--max-deleteв команду;- у ключа и
known_hostsесть кнопка «в проект»: файл ложится вconfig\ssh, путь в поле становится относительным, чужойid_rsaне затирает свой; - блок
RClone configпоявляется только в modeConfig, а вВерсия,Список remote,GUI, OAuth и SFTP не занимает высоту; - компактная линейка
Installer RCloneвНастройкапоказывает кнопкиSystemиPortable; - линейка
ConfigurationвНастройкапоказывает scopePortable,System,Custom path, кнопкиImport,Export,Doctor, а поле custom path появляется только при выбореCustom path; - default scope
Portableдобавляет в preview--config config\rclone\rclone.confи--cache-dir tmp\rclone-cache; - активная команда во вкладке подсвечена приглушённым success-цветом;
- constructor preview показывает EXE, ROUTE, CONFIG, CACHE, LOG и команду;
- endpoint-панели показывают
SOURCE ENDPOINTиTARGET ENDPOINT; - auth-mode показывает панель
REMOTE, SFTP inlineuser@host:portи masked password поле; - SFTP user/host имеют history dropdown, пример host использует
203.0.113.10, а кнопка очистки удаляетconfig\rclone_endpoint_history.json; - tooltip на
ЗАПУСТИТЬвПровайдеры OAuthобъясняет отдельное окно, blankClient ID/Client Secret, default/No для advanced config и Yes/browser для auto config; - tooltip на
ЗАПУСТИТЬвCreate/update SFTP remoteобъясняет, что интерактивного ввода не будет, а remote создаётся/обновляется черезconfig create/update; - SFTP auth-панель умеет записать собранный remote в
SOURCE ENDPOINTилиTARGET ENDPOINT; Remoteвводится без:;- превью переноса строит команду выбранной операции:
copy,sync,move,bisyncилиcheck; Сверитьничего не пишет;Убрать недозалитоевХранилищеобъясняет, что убирает брошенные части многочастных заливок, а не корзину.rclone_log_level=DEBUGпоказывает предупреждение о чувствительном raw log.Ограничение скоростизанимает отдельную строку под flags и переключаетБез лимита/Выбор скорости/Своя скоростьбез дублирования--bwlimit.- режимы
ConfigиGUIоткрываются в отдельной консоли без промежуточногоcmd /k.
GUI
Проверить:
launcher_gui.cmdстартует;- wrapper не запрашивает UAC сам, а
--helpпоказывает opt-in--elevate; - если порт 8080 занят, выбирается другой порт;
- source/target history работает;
Pin,Unpin, open folder работают;- правый терминал показывает кириллицу и перенос длинных строк;
- команда с
Authorization: Bearer ...или7z a -pSecret ...не сохраняется в history/pins; - tooltip появляется после задержки около
1500 ms; - tooltip уходит быстро, около
100 ms; - нативный browser
titleне появляется вторым слоем; доступность остаётся черезaria-label; - общий tooltip скруглённый, с фоном
RGB(23, 33, 43), тонкой рамкой и компактным текстом; - extension cards: три плитки в ряду имеют одинаковую ширину, две плитки делят строку пополам, одиночная/длинная группа занимает всю строку;
- внутри extension card 1-3 чекбокса идут вертикально, а 4+ чекбокса разбиваются на две внутренние колонки;
- тема
code_darkне ломает читабельность; - отчёт
Последнийоткрывается.
Sync
На маленьких test folders:
compareпоказывает diff.Односторонняяс пробным прогоном ничего не пишет.Односторонняякопирует новое и не трогает лишнее в приёмнике.Двусторонняяс пробным прогоном показывает направления.Зеркалос пробным прогоном показывает планируемые удаления.Зеркалос карантином переносит target-only в_audion_quarantine.
Hard delete mirror проверять только на disposable target.
Profiles
Проверить:
pairsне падает;- если
sync_pairs.jsonпустой, GUI показывает example profiles; copy_by_maskтребует маски;dev_backupи другие backup profiles отображаются как BACKUP-MIRROR;- runtime extension override не переписывает JSON config.
Archive
Проверить на маленькой папке:
- ZIP создаётся;
- 7Z создаётся, если backend найден;
- SFX создаётся, если backend найден;
- password mode не предлагает formats, где оно не поддерживается;
- SFX wrapper создаётся только после SFX;
archive_delete_sourceне использовать на реальных данных в smoke.
Docs
Проверить:
- новые docs доступны из
USER_GUIDE_RU.md; - README RU/EN ссылаются на guides;
- имена команд в docs совпадают с GUI;
.cmdкодировка не изменилась.