94 lines
4.1 KiB
Markdown
94 lines
4.1 KiB
Markdown
# 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`.
|