Files
Sprimo/docs/RELEASE_TESTING.md
2026-02-14 20:07:03 +08:00

156 lines
5.6 KiB
Markdown

# Release Packaging and Behavior Testing (Windows)
## Artifact Layout
Current release package type: portable ZIP.
Expected contents (Bevy package):
- `sprimo-app.exe`
- `assets/sprite-packs/default/manifest.json`
- `assets/sprite-packs/default/sprite.png`
- `README.txt`
Expected contents (Tauri package):
- `sprimo-tauri.exe`
- `WebView2Loader.dll`
- `assets/sprite-packs/default/manifest.json`
- `assets/sprite-packs/default/sprite.png`
- `README.txt`
Generated outputs:
- `dist/sprimo-windows-x64-v<version>.zip`
- `dist/sprimo-windows-x64-v<version>.zip.sha256`
## Commands
Use `just` for command entry:
```powershell
just check
just test
just build-release-bevy
just package-win-bevy
just smoke-win-bevy
just build-release-tauri
just package-win-tauri
just smoke-win-tauri
just random-backend-test
```
Compatibility aliases:
- `just build-release` -> Bevy release build.
- `just package-win` -> Bevy package.
- `just smoke-win` -> Bevy smoke package check.
Packaging script target selection:
- Bevy: `python scripts/package_windows.py package --frontend bevy`
- Tauri: `python scripts/package_windows.py package --frontend tauri`
## Behavior Test Checklist (Packaged App)
Run tests from an unpacked ZIP folder, not from the workspace run.
1. Launch `sprimo-app.exe`; verify default sprite renders.
2. Verify no terminal window appears when launching release build by double-click.
3. Verify global hotkey recovery (`Ctrl+Alt+P`) forces visibility and top-most recovery.
4. Verify `SetFlags` applies always-on-top and visibility via API commands.
5. Verify `/v1/health` and `/v1/state` behavior with auth.
6. Verify `SetSpritePack`:
- valid pack switches runtime visuals
- invalid pack keeps current visuals and sets `last_error`
7. Restart app and verify persisted config behavior.
8. Confirm overlay background is transparent (desktop visible behind non-sprite pixels).
9. Confirm no magenta matte remains around sprite in default pack.
10. Confirm default startup window footprint is reduced (416x416 before runtime pack resize).
11. Run randomized backend API interaction and review summary output:
- `just random-backend-test`
- validate expected mix of `202`/`400`/`401` without process crash.
## Test Log Template
- Date:
- Artifact:
- Commit:
- Tester:
- Result:
- Notes:
## Issue Evidence Gate
Before release sign-off for a bug fix:
1. Link the issue file (`issues/issueN.md`) in the test log.
2. Ensure before/after screenshot evidence is referenced from the issue:
- before: `issues/screenshots/issueN-before-YYYYMMDD-HHMMSS.png`
- after: `issues/screenshots/issueN-after-YYYYMMDD-HHMMSS.png`
3. Record verification commands and outcomes in the issue:
- `cargo check --workspace`
- `cargo test --workspace`
- `just qa-validate`
Legacy issues may reference `issues/screenshots/issueN.png` as before evidence.
## Tauri Runtime Behavior Testing
Authoritative workflow: `docs/TAURI_RUNTIME_TESTING.md`.
Bevy window-management verification workflow: `docs/BEVY_WINDOW_VERIFICATION.md`.
### Workspace Mode (Required Now)
1. `just build-tauri-ui`
2. `just check-tauri`
3. `just check-runtime-core`
4. `just run-tauri` (smoke and runtime observation)
5. Verify invoke/event contract behavior:
- `current_state`
- `load_active_sprite_pack`
- `runtime:snapshot`
6. Verify API/runtime contract behavior against tauri process:
- `/v1/health`
- `/v1/state` with auth
- `/v1/command`
- `/v1/commands`
7. Verify tauri frameless drag:
- left-mouse drag moves window
- window remains non-resizable
- moved position updates runtime snapshot `x/y` and persists after restart
8. Run randomized backend API interaction:
- `just random-backend-test`
- verify command traffic remains stable and runtime stays alive.
9. Verify scale-fit behavior in tauri runtime:
- send `SetTransform.scale` values above `1.0`
- confirm full sprite remains visible and window auto-resizes without top clipping
10. Verify pop-out settings window behavior:
- open via tray `Settings`
- switch character and confirm immediate renderer reload + persistence after restart
- change scale slider and confirm runtime resize + persistence
- toggle `Visible` and `Always on top` and confirm both runtime behavior + persistence
11. Verify packaged tauri reload stability:
- run repeated character switch cycles (`default` <-> `ferris`) and move scale slider each cycle
- ensure no runtime frontend exception is shown (debug overlay/console)
- ensure no visible magenta fringe remains around sprite edges after chroma-key conversion
12. Verify packaged tauri scale anchoring and bounds:
- repeated scale changes resize around window center (no consistent bottom-right drift)
- window remains visible on the current monitor (no off-screen drift)
- no runtime scale-path exception appears (for example monitor lookup API errors)
- no runtime position-arg exceptions appear during scale (e.g. float passed to integer position API)
- at large scale values (>= 1.8), full sprite remains visible without clipping
13. Verify packaged tauri frontend freshness:
- confirm package run reflects latest `frontend/tauri-ui` changes (no stale embedded UI bundle)
14. Verify packaged tauri overlay edge and scale consistency:
- place overlay over dark background and confirm no white strip/background bleed on left edge
- for same slider value, confirm main-window size is consistent across `default`/`ferris`/`demogorgon`
### Packaged Mode (Required Once Tauri Packaging Exists)
When tauri packaging automation is available, repeat runtime behavior checks on packaged artifacts:
1. Launch packaged tauri app.
2. Re-run invoke/event/API checks from workspace mode.
3. Attach before/after screenshots and command summaries in linked issue.