119 lines
3.2 KiB
Markdown
119 lines
3.2 KiB
Markdown
# Skill: Testing, CI and Release
|
|
|
|
## Когда использовать
|
|
|
|
Используй этот skill при добавлении CI, release scripts, build fixes, test changes, dependency updates, packaging changes или перед финальным отчетом по крупной задаче.
|
|
|
|
## Minimal local checks
|
|
|
|
Frontend:
|
|
|
|
```powershell
|
|
npm ci
|
|
npm run build
|
|
```
|
|
|
|
Rust:
|
|
|
|
```powershell
|
|
cd src-tauri
|
|
cargo fmt --all -- --check
|
|
cargo clippy --all-targets --all-features -- -D warnings
|
|
cargo test --all-targets
|
|
```
|
|
|
|
Tauri:
|
|
|
|
```powershell
|
|
npm run tauri -- info
|
|
npm run tauri -- build
|
|
```
|
|
|
|
PowerShell plan-only:
|
|
|
|
```powershell
|
|
& .\scripts\install-control-app.ps1 -PlanOnly
|
|
& .\scripts\install-proxyfier.ps1 -PlanOnly
|
|
& .\scripts\install-singbox.ps1 -PlanOnly
|
|
```
|
|
|
|
## Interaction smoke for UI motion
|
|
|
|
Build, lint, and unit tests do not validate motion or pointer behavior. For any hover, disclosure, stagger, or hit-target change, verify:
|
|
|
|
- first open and first close;
|
|
- repeated and rapid toggle;
|
|
- hover and click before, during, and after transition;
|
|
- keyboard focus and hidden-control tab order;
|
|
- loading and longest localized labels;
|
|
- `prefers-reduced-motion`;
|
|
- desktop and narrow window geometry.
|
|
|
|
Use a controlled mock or preview state when backend status is difficult to reproduce. If no visual interaction smoke is possible, report that evidence as missing and do not claim the motion task is complete.
|
|
|
|
## CI recommendation
|
|
|
|
Add GitHub Actions with at least:
|
|
|
|
- frontend build on Windows and Ubuntu if practical;
|
|
- Rust fmt/clippy/test;
|
|
- PowerShell syntax/plan-only smoke on Windows;
|
|
- Tauri build on Windows for release branches/tags;
|
|
- artifact upload only for trusted release workflow.
|
|
|
|
## Dependency updates
|
|
|
|
When changing dependencies:
|
|
|
|
- Update lockfiles.
|
|
- Check Tauri v2 compatibility.
|
|
- Avoid adding large UI/runtime dependencies for tiny tasks.
|
|
- Avoid adding shell/process libraries that bypass existing backend boundaries.
|
|
- Note why dependency is needed.
|
|
|
|
## Release hygiene
|
|
|
|
Before release:
|
|
|
|
- Verify app version in `package.json` and Tauri config if applicable.
|
|
- Verify icons/assets size.
|
|
- Verify CSP and capabilities.
|
|
- Verify no raw secrets/test URLs in repo.
|
|
- Verify installer scripts with `-PlanOnly`.
|
|
- Verify clean install on Windows VM.
|
|
- Verify external SOCKS5 flow.
|
|
- Verify local sing-box subscription flow.
|
|
- Verify uninstall/safe cleanup behavior.
|
|
|
|
## Final report format
|
|
|
|
```text
|
|
Changed:
|
|
- ...
|
|
|
|
Verified:
|
|
- npm run build
|
|
- cargo test
|
|
|
|
Not verified:
|
|
- Windows elevated install/uninstall, because ...
|
|
|
|
Risks:
|
|
- ...
|
|
```
|
|
|
|
Do not write “all tests pass” unless all listed relevant tests actually ran. Humanity has enough fictional dashboards.
|
|
|
|
## Как отчитываться
|
|
|
|
Перед финальным ответом применить `.agent/skills/communication-reporting/SKILL.md` и `.agent/checklists/communication.md`.
|
|
|
|
Минимум для нетривиальной задачи:
|
|
|
|
- короткая сводка;
|
|
- таблица файлов `Файл / Что изменилось / Зачем`;
|
|
- важные места без пересказа каждой строки;
|
|
- что проверено;
|
|
- что не проверено;
|
|
- конкретные риски.
|