4.1 KiB
Skill: Testing, CI and Release
Когда использовать
Используй этот skill при изменениях CI, release scripts, tests, dependencies, Tauri/NSIS packaging, offline component catalog или перед финальным отчётом по крупной задаче.
Minimal local checks
Frontend:
npm ci
npm run format:check
npm run lint
npm run typecheck
npm test -- --run
npm run build
Rust:
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:
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.