Smoke-Test Checklist
Smoke-Test Checklist
Содержание
- Audion DevOps Tools Specific
- Runtime Imports
- Pytest
- Maintenance Scripts
- Module Launchers
- Syntax
- CMD Encoding
- NiceGUI Smoke
- Server Check
- Window Check
- Picker Check
- Layout Check
- Visual Smoke Screenshots
- Nested Menu And Fields Check
- PowerShell / CLI Window Check
- NiceGUI ProcessPool Fallback
Audion DevOps Tools Specific
После изменений в этом проекте дополнительно проверить:
- корневой список содержит отдельные секции
Network Cleaner,Подключение и адаптерыиОбслуживание и очистка; - корневые секции не подсвечиваются красным из-за
kind: dangerous; - в шапке есть selector темы, default
Code Темная, выбор темы не обрезает заголовок и controls; runtime\python.exe system_core\doctor.pyпоказывает[GUI themes]без ошибок;WSL Toolkit / Базовые и установкапоказывает не пустой экран, а команды WSL status/features/update/list online/install/install from image/list/status/shutdown;- в
WSL Toolkitнет обязательного выбораAudion_WSL_Block_E/S; установка принимает выбранную папку и локальный.wslфайл; Виртуализациястоит отдельной секцией послеWSL Toolkit;Статус виртуализацииread-only печатает hypervisorlaunchtype, optional features и VBS/Core Isolation;Статус оптимизацииread-only печатает Core Isolation/VBS, power plan, Defender exclusions,.wslconfigи WSL VHDX placement;- destructive-команды
Виртуализацияпоказывают confirm, делают BCD backup вbackup\virtualizationи явно пишут, что нужен reboot; Подключение и адаптеры / Wi-Fi профилипоказывает import XML рядом с export profiles, с file/folder import и scopecurrent/all;Подключение и адаптеры / SMB вход в сетьпоказывает кэш computer/user, ручные поля, save/delete/clear cache, checkbox открытия Explorer; пароль вводится только во внешнейnet useконсоли и не появляется в GUI/log;Hosts and Bitrix / Detect current endpointне меняет hosts, принимает только local/private DNS IP и возвращаетfield_updatesдляip_address/bitrix_ports;Hosts and Bitrixdefault:portal.itpgrad.ru -> 192.168.0.130,bitrix_ports=443;Hosts and Bitrix / Status / DNS / portsпоказывает hosts entries, effective resolution, DNS without hosts, configured DNS servers, авто-скан портов и итоговую TCP-проверку custom/detected ports;Hosts and Bitrix / Disable overrideвосстанавливаетhostsпобитово изbackup=hosts_prepatch_....bakв managed-комментарии, а не пересобирает файл построчно;docs\BITRIX_HOSTS_RU.mdописывает рабочий сценарий detect -> status -> enable -> disable и bitwise depatch;Default Apps Guardпоказывает команды списком с компактным описанием справа и полным tooltip: status, snapshot, rescan/update, import XML, apply/repair policy, remove policy, cleanup backups и open folders;Default Apps Guard / Statusможно запускать read-only; он показывает current/profile/policy comparison и не пытается правитьUserChoice;Default Apps Guard / Проверить защиту defaultsпоказывает Windows edition и поддержкуDefaultAssociationsConfiguration; на Home/CoreВключить / починить защиту defaultsпо умолчанию должен отказать, кроме expert override;docs\DEFAULT_APPS_GUARD_RU.mdсодержит короткий сценарий для свежей Windows: status -> rescan -> remove Suggested -> apply -> sign out/reboot -> status, плюс gotchas;Runtime and shellсодержит только preflight/runtime status, Windows DEV settings и portable PowerShell install; Nuke-утилит там быть не должно;Обслуживание и очисткасодержит отдельные русские блокиОчистка CodexиОчистка Pythonс Audit/DryRun/destructive leaf-командами плюсОчистить workspace; висячих cleanup-команд в корне быть не должно;HardwareсодержитНакопители / дисковые процедурыс disk inventory, selected disk details, SSD/NVMe wizard и WinRE; отдельного корневогоStorageбыть не должно;Ключи, шрифты и настройки Windows— отдельный раздел верхнего уровня с шестью паками: OpenSSH KeyKit, Сертификаты, Шрифты пользователя, Среда оболочки, Доступы из конфигурации, Переезд на новую машину; VSCode kits в проекте больше нет, ими занимается отдельный проектAudion Setup for VS Code;Сертификаты (экспорт/импорт)стоит рядом сOpenSSH KeyKit; status read-only, PFX export имеетrisk_level: secret_export, import PFX/CA меняют certificate store;Utilities / Documentation PDFсодержит dry-run plan, generate и open folder; output root должен бытьdocs\PDF, неoutput\docs_pdfи не рядом с Markdown;AI CLI Backupпоказывает отдельные поля для export/import/merge: auth выключен по умолчанию, import/merge начинаются с Dry run, Full влияет и на экспорт, и на импорт; новый bundle содержит проверяемыйmanifest.json;- длинные command buttons читаются в две строки без грубого обрезания первого слова/смысла;
- видимые descriptions у длинных операций остаются короткими, а полный текст доступен в tooltip по кнопке или описанию;
- парные workflow-команды визуально связаны скруглёнными рамками: backup/restore, export/import, block/unblock, capture/apply;
- мягкие цветовые тона кнопок видны только там, где соседние сценарии различаются силой, и не превращают UI в тревожную раскраску;
- большие checkbox-группы, например Default Apps Guard
Отслеживать, лежат в ровной сетке внутри Advanced-блока и имеют быстрые пресетыВсе,Снять,По умолчанию,IMAGE,VIDEO,AUDIO,OFFICE; - в Workbench-панели строго показаны
Источник,Добавить файл...,Назначение,Сбросить,Удалить,Список;Сброситьвозвращает проектные пути, аУдалитьочищает выбранные пути после подтверждения; - в правой панели возле журнала есть
ROOT,INPUT,OUTPUT,WORK,Logs,Report,Config; - нижняя command bar терминала показывает shell selector, command history/pin controls, cwd picker и file picker;
- command bar различает
ИсторияиКэш:Историяочищает незакреплённые команды,Кэшсбрасывает history/pinned/last command, но сохраняет shell и CWD; - выбор файла в command bar добавляет путь файла в команду и ставит cwd в папку файла;
wsl_online_distro_options()возвращает чистые distro ids вродеUbuntu,Ubuntu-26.04,Ubuntu-24.04,Debian, а не строки с кракозябрами.wsl.exe --list --onlineв GUI-терминале декодируется как читаемый русский/английский текст, даже когда WSL ещё не установлен и команда выходит с кодом 1.
Быстрая проверка WSL provider:
runtime\python.exe -c "from pathlib import Path; import sys; sys.path.insert(0, str(Path.cwd())); import system_core.services.devops_tools as d; print(d.wsl_online_distro_options(Path.cwd())[:8])"
Runtime Imports
runtime\python.exe -c "import nicegui, webview, yaml, rich; print('OK GUI imports')"
Если проекта ещё нет в portable runtime, используйте системный Python 3.12.
Pytest
runtime\python.exe -m pytest -q
Ожидается: 36 passed, без skipped при включённом Windows Developer Mode. Два symlink-теста проверяют, что cleaner не следует по ссылке за пределы workspace и отказывается чистить workspace, который сам является ссылкой. На Windows без права создания symlink только эти проверки пропускаются с явным WinError 1314.
Maintenance Scripts
init_folders.cmd
cleanup_project.cmd /DRYRUN /Y
cleanup_project.cmd /BACKUP /DRYRUN
Ожидается: init_folders выходит с кодом 0, cleaner в dry-run показывает очистку generated/downloaded зон проекта (runtime, wheelhouse, release, install\download, system_core\powershell, fzf.exe, logs/report/workspace/output/input/data/backup). Папки и .gitkeep восстанавливаются. /BACKUP /DRYRUN показывает более узкий план очистки только backup-снимков и требует отдельный Y/N/Q при реальном запуске.
Module Launchers
Короткая проверка меню без запуска тяжёлых операций:
"0" | cmd /d /c launcher_project.cmd
"0" | cmd /d /c launcher_project_ru.cmd
"0" | cmd /d /c cli\launcher_wsl.cmd
"0" | cmd /d /c cli\launcher_bitrix.cmd
"0" | cmd /d /c cli\launcher_default_apps.cmd
"0" | cmd /d /c cli\launcher_association_defense.cmd
"0" | cmd /d /c cli\launcher_hardware.cmd
"0" | cmd /d /c cli\launcher_docs_pdf.cmd --dry-run
Ожидается: меню открывается, кириллица читаемая, выход по 0 без ошибки. cli\launcher_wsl.cmd, cli\launcher_bitrix.cmd и cli\launcher_default_apps.cmd должны вызывать manifest-операции через system_core\cli_operation.py, а не копировать сервисную логику. cli\launcher_docs_pdf.cmd --dry-run должен показать план PDF без записи файлов.
Отдельно проверить руками, потому что эти wrappers передают управление Nuke.cmd с UAC elevation:
cli\launcher_codex_nuke.cmd
cli\launcher_python_nuke.cmd
Ожидается: открывается меню встроенного tools\...\Nuke.cmd; destructive modes всё ещё требуют typed confirmation.
Syntax
runtime\python.exe -m py_compile system_core\ui_nicegui\app.py system_core\ui_nicegui\window.py
CMD Encoding
Все .cmd должны быть:
UTF-8 without BOM + CRLF
ВАЖНО: ВСЕ .CMD ФАЙЛЫ ОБЯЗАТЕЛЬНО UTF-8 БЕЗ BOM И СТРОГО CRLF.
LF-only .cmd перед релизом исправить. После любого patch/edit проверять BOM=False и LoneLF=0.
Штатная проверка/ремонт для проекта:
install\Check-CmdEncoding.cmd -Fix
Эта же проверка встроена в portable build, offline install, verify и release archive gate.
NiceGUI Smoke
runtime\python.exe system_core\ui_nicegui\app.py --smoke
Ожидается строка OK nicegui shell.
Эта проверка также вызывается из:
install\verify_portable_env.cmd
если system_core\ui_nicegui\app.py существует.
Server Check
Запустите на свободном тестовом порту:
runtime\python.exe system_core\ui_nicegui\app.py --host 127.0.0.1 --port 8099 --no-browser
Проверьте http://127.0.0.1:8099/.
Window Check
launcher_gui.cmd
Ожидается UAC-запрос, затем отдельное desktop-окно pywebview уже в elevated-контексте. Браузер не должен открываться сам.
Read-only/debug запуск без UAC:
set AUDION_GUI_NO_ELEVATE=1
launcher_gui.cmd
Ожидаемый стартовый размер окна: 1600x900. Минимальный размер около 1180x720.
Picker Check
Проверьте:
Add files...открывает Windows file picker;- можно выбрать несколько файлов;
- файлы копируются в
input; Add folder...копирует папку вinput;- повторяющиеся имена получают уникальные suffix;
- попытка добавить сам
inputне проходит.
Layout Check
На WUXGA 1920x1200 с Windows scale 150%:
- окно можно сжать до ноутбучного логического профиля без развала двух колонок;
- команды остаются слева, статус и терминал справа;
- терминал не уезжает под список команд;
- нет раннего перехода в вертикальную ленту.
На FullHD/4K:
- кнопки в одну строку;
- терминал справа занимает большую часть высоты;
- status/progress не раздувают layout;
Cancelвиден только во время операции;Logsрядом с терминалом.- под терминалом есть постоянный итоговый индикатор: серый в ожидании, синий во время выполнения, зеленый после успешного завершения, красный после ошибки.
- левая колонка не растягивается бессмысленно;
- терминал остается читаемым;
- нет пустых карточек ради декора.
Visual Smoke Screenshots
После заметных GUI/layout-правок сохраняйте smoke-скриншоты в проектной зоне отчётов, например:
report\gui_smoke_screenshots\
Минимальный набор:
- корневое меню с рабочими папками и терминалом;
- один главный экран команды с основными полями;
- тот же или похожий экран с раскрытым
Дополнительно, если менялись редкие поля; - экран TASK/длинной формы, если проект использует nested
operation_groups; - терминал и нижний статус после короткого успешного запуска.
Цель не в красивом альбоме, а в том, чтобы портирование ловило реальные UI-регрессии: не помещающиеся dropdown, слишком яркие рамки, дублирующие controls, ранний перенос в одну колонку, лишний scroll и невидимый финальный статус.
Nested Menu And Fields Check
Если проект использует operation_groups и fields:
- переходы по вложенному меню меняют только левую область команд;
- правый терминал, статус, прогресс и кнопки папок остаются на месте;
- leaf-команда сначала показывает финальный экран
Запустить/Назад; text,number,select,checkboxиcheckboxesотображаются корректно;radio,profile_buttons/preset_buttonsотображаются корректно, если используются;options_sourceзагружает динамические варианты, кэшируется и обновляется кнопкойОбновить список;checkboxesпереносится на несколько строк и не ломает ширину окна;min_selected: 1блокирует запуск, если пользователь снял все флажки;- выбранные значения видны в
context.operation.parametersили в итоговой CLI-команде; - пустые строки сохраняются, если они означают auto/default.
- схожие выборы на форме стоят рядом и читаются как один блок;
- маленький фиксированный single-choice не спрятан в dropdown без причины;
- нет двух почти одинаковых кнопок запуска для одного пользовательского результата;
- нет дублирующих controls избранного для одного и того же списка;
- нет оторванных команд без объекта:
В избранное,Сохранить,Проверить,Удалитьдолжны быть переименованы или визуально привязаны к единственному полю; - второстепенные параметры не отодвигают основной запуск ниже видимой области.
- редкие параметры можно свернуть в
Дополнительно, а состояние блока запоминается, если проект это поддерживает.
PowerShell / CLI Window Check
Если проект вызывает pwsh.exe, powershell.exe, Office COM helpers, ffmpeg или другой дочерний CLI:
- запуск через GUI не должен создавать всплывающие консольные окна на каждый файл;
-WindowStyle Hiddenне считается достаточной защитой;- проверьте, что subprocess использует
run_process()илиSTARTUPINFO/SW_HIDEиCREATE_NO_WINDOW; - вывод дочерней команды должен идти в правый GUI-терминал или лог, а не в отдельное пользовательское CLI-окно;
- после завершения операции зеленый индикатор под терминалом остается видимым, даже если окно было неактивно.
NiceGUI ProcessPool Fallback
В закрытых portable/sandbox окружениях NiceGUI может не создать multiprocessing process pool. GUI должен стартовать всё равно, если проект использует только обычные GUI-задачи и run.io_bound.
Проверка считается успешной, если runtime\python.exe system_core\ui_nicegui\app.py --smoke проходит, а серверный запуск не падает на PermissionError / WinError 5.
Для native picker dialogs PowerShell ищется в таком порядке:
system_core\powershell\pwsh.exepwsh.exeизPATH- встроенный
powershell.exe
Наличие хотя бы одного варианта видно в секции [GUI portability] команды:
runtime\python.exe system_core\doctor.py