# Skill: Testing, CI and Release ## Когда использовать Используй этот skill при изменениях CI, release scripts, tests, dependencies, Tauri/NSIS packaging, offline component catalog или перед финальным отчётом по крупной задаче. ## Minimal local checks Frontend: ```powershell npm ci npm run format:check npm run lint npm run typecheck npm test -- --run npm run build ``` Rust: ```powershell Push-Location src-tauri cargo fmt --all -- --check cargo clippy --all-targets --all-features -- -D warnings cargo test --all-targets Pop-Location ``` Tauri/build/release boundaries: ```powershell npm run tauri -- info & .\scripts\check-runtime-powershell-boundary.ps1 -CheckOnly & .\scripts\update-component-bundle.ps1 -PlanOnly & .\scripts\update-component-bundle.ps1 -CheckOnly & .\scripts\audit-windows-smoke.ps1 -Mode PlanOnly & .\scripts\prepare-release.ps1 -PlanOnly -SkipBuild ``` `PlanOnly`/`CheckOnly` должны возвращать structured JSON с `changed: false` и не менять repo, ProgramData, services или network state. ## Interaction smoke for UI motion Build, lint и unit tests не проверяют motion/geometry. Для hover, disclosure, stagger или hit-target изменений проверь first/repeated/rapid toggle, keyboard focus, loading/long labels, `prefers-reduced-motion`, desktop и narrow window. Если visual smoke не выполнен, так и напиши. ## CI contract Windows baseline должен включать: - frontend format/lint/typecheck/tests/build; - Rust fmt/clippy/all-target tests; - Tauri environment check; - runtime PowerShell boundary check; - offline bundle PlanOnly + CheckOnly; - Windows audit PlanOnly; - release preparation PlanOnly with build skipped. CI не изображает реальную SCM/UAC/driver проверку. Artifact upload и tag/publish допустимы только в отдельном trusted release workflow после принятой VM evidence. ## Dependency updates - Обновить lockfiles. - Проверить Tauri v2 и Windows x64 compatibility. - Не добавлять dependency, если stdlib/native API или уже установленный crate решает задачу. - Не добавлять shell/process library, возвращающую production PowerShell path. - Объяснить, зачем dependency нужна и какой owner её вызывает. ## Release hygiene Перед release candidate: - версии совпадают в `package.json`, `package-lock.json`, `src-tauri/tauri.conf.json` и `src-tauri/Cargo.toml`; - packaged component catalog, asset hashes, licenses и `THIRD_PARTY_NOTICES.md` согласованы; - installer содержит consolidated offline component bundle и WebView2 Offline Installer; - runtime PowerShell checker проходит, bundled cleanup script отсутствует; - NSIS hook разделяет verify-only upgrade и full managed uninstall; - fresh offline VM, legacy upgrade/rollback, foreign service refusal, UAC cancel, uninstall/reboot и реальные routing flows записаны в evidence; - tag/publish выполняются только для того же проверенного commit. Установка Control App не должна скрыто install/start/update routing-компоненты. Payloads могут быть в installer, но component mutation остаётся отдельным user action. ## Финальный отчёт Разделить: - `Проверено`: точные команды и результаты; - `Не проверено`: Windows VM/UAC/SCM/driver/installer gaps; - `Риски`: только конкретные release blockers. Не писать «все тесты проходят», если весь релевантный набор действительно не запускался. Перед ответом применить `.agent/skills/communication-reporting/SKILL.md` и `.agent/checklists/communication.md`.