# Phase 2 — User Acceptance Testing > Phase 2 is NOT YET IMPLEMENTED. This is a pre-written test plan. ## Prerequisites - Phase 1 UAT fully passing - WASM toolchain installed (`wasm-pack`) - Two devices or VMs for multi-device testing --- ## 1. WASM Build (Web-CLI Interop) ```bash cd warzone/crates/warzone-protocol wasm-pack build --target web ``` - [ ] WASM build succeeds - [ ] Web client loads WASM module - [ ] Web client uses X25519 + ChaCha20 (same as CLI) - [ ] Web → CLI: message sent from browser, decrypted by CLI `recv` - [ ] CLI → Web: message sent from CLI, decrypted in browser - [ ] Bidirectional conversation works across web and CLI --- ## 2. Delivery Receipts **Alice sends to Bob:** - [ ] Alice's UI shows "sent" checkmark (✓) after server accepts - [ ] When Bob's client polls and receives, server generates delivery receipt - [ ] Alice's UI updates to "delivered" (✓✓) - [ ] When Bob reads/decrypts, Bob's client sends read receipt - [ ] Alice's UI updates to "read" (✓✓ blue/colored) **Offline Bob:** - [ ] Alice sends while Bob is offline - [ ] "sent" (✓) shown immediately - [ ] Bob comes online, polls → "delivered" (✓✓) on Alice's side - [ ] Receipts themselves are E2E encrypted --- ## 3. File Transfer **CLI:** ``` /file /path/to/document.pdf ``` - [ ] File is chunked, encrypted, and sent - [ ] Recipient sees "[file: document.pdf (1.2 MB)]" - [ ] `/save` or auto-download saves to disk - [ ] File integrity check (hash matches) - [ ] Files up to 10 MB work - [ ] Progress shown during transfer **Web:** - [ ] File upload button in chat - [ ] File encrypted and sent - [ ] Recipient gets download link - [ ] Downloaded file is correct --- ## 4. Multi-Device **Setup: Alice on two devices (same seed):** ```bash # Device 1 cargo run --bin warzone-client -- init # Note mnemonic # Device 2 WARZONE_HOME=/tmp/alice2 cargo run --bin warzone-client -- recover WARZONE_HOME=/tmp/alice2 cargo run --bin warzone-client -- register -s http://localhost:7700 ``` - [ ] Both devices have same fingerprint - [ ] Bob sends to Alice's fingerprint - [ ] Device 1 receives and decrypts - [ ] Device 2 receives and decrypts (separate session) - [ ] Messages sent from Device 1 are visible on Device 2 (via sync) - [ ] Device list shown on server: `GET /v1/devices/` --- ## 5. Hardware Wallet Delegation **Connect Ledger/Trezor:** ```bash cargo run --bin warzone-client -- hw-delegate ``` - [ ] Detects hardware wallet via USB - [ ] Shows "Sign delegation certificate on device" - [ ] User confirms on hardware wallet - [ ] Session key generated, delegation cert stored - [ ] Subsequent operations use session key (no wallet needed) - [ ] After 30 days, prompts for re-delegation **Without hardware wallet (session key only):** - [ ] All operations work using cached session key - [ ] No USB prompts during normal chat --- ## 6. Group Management **Kick member:** ``` /gkick @troublemaker ``` - [ ] Member removed from group - [ ] Sender Keys rotated for remaining members - [ ] Kicked member can no longer decrypt new messages **Leave group:** ``` /gleave ops ``` - [ ] You are removed - [ ] Remaining members rotate keys **Group info:** ``` /ginfo ops ``` - [ ] Shows: name, creator, member list, creation date --- ## 7. Message History Persistence - [ ] Close and reopen TUI → previous messages still shown - [ ] History stored in local sled DB - [ ] `/history 50` shows last 50 messages - [ ] History is encrypted at rest (tied to seed) --- ## Summary | # | Feature | Result | |---|---------|--------| | 1 | WASM web-CLI interop | ☐ | | 2 | Delivery receipts | ☐ | | 3 | File transfer | ☐ | | 4 | Multi-device | ☐ | | 5 | Hardware wallet delegation | ☐ | | 6 | Group management | ☐ | | 7 | Message history | ☐ | **Tester:** _______________ **Date:** _______________