UAT/PHASE1.md — 20 test scenarios, 80+ checkboxes Identity, encryption, messaging, TUI, web, groups, aliases, auth, OTP replenishment, session persistence, cross-client UAT/PHASE2.md — 7 scenarios (WASM, receipts, files, multi-device, HW wallet, groups, history) UAT/PHASE3.md — 6 scenarios (DNS discovery, key transparency, federation, mutual TLS, gossip) UAT/PHASE4.md — 10 scenarios (mule identity, pickup, delivery, receipts, dedup, expiry, compression) UAT/PHASE5.md — 6 scenarios (Bluetooth, LoRa, mDNS, Wi-Fi Direct, USB export, fallback chain) UAT/PHASE6.md — 3 scenarios (sealed sender, traffic analysis resistance, onion routing) UAT/PHASE7.md — 8 scenarios (ntfy, DoH, DB encryption, admin CLI, rate limiting, audit, CI, monitoring) Each test has exact commands to run and checkboxes for pass/fail. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.4 KiB
3.4 KiB
Phase 5 — User Acceptance Testing (Transport Fallbacks)
Phase 5 is NOT YET IMPLEMENTED. This is a pre-written test plan.
Prerequisites
- Phase 4 UAT fully passing
- Bluetooth-capable devices
- LoRa hardware (e.g. Heltec ESP32 LoRa, RAK WisBlock)
- Two devices on same Wi-Fi for Wi-Fi Direct testing
1. Bluetooth Mule Transfer
Mule device (phone/laptop) near Server A:
cargo run --bin warzone-mule -- pickup --transport bluetooth
- Mule scans for nearby warzone-server via BLE advertisement
- Connects via Bluetooth Classic (RFCOMM)
- Picks up messages (same protocol as HTTP, different transport)
- Transfer speed reasonable (> 100 KB/s)
Mule near Server B:
cargo run --bin warzone-mule -- deliver --transport bluetooth
- Delivers messages via Bluetooth
- Receipts returned
2. LoRa Transport (Emergency)
Setup two LoRa nodes with warzone-mule:
cargo run --bin warzone-mule -- lora-beacon --freq 868.0
- Device broadcasts presence beacon (< 50 bytes)
- Nearby LoRa node detects beacon
Send short text over LoRa:
cargo run --bin warzone-mule -- lora-send "SOS need evac" --to <fingerprint>
- Message fits in single LoRa packet (< 250 bytes)
- Compact binary format used (not JSON)
- Recipient receives and decrypts
- Delivery receipt sent back over LoRa
LoRa limitations:
- Messages > 200 chars rejected with warning
- Files cannot be sent over LoRa
- Latency shown: "Sent via LoRa (estimated 2-5 seconds)"
3. mDNS / LAN Discovery
Two devices on same LAN, no internet:
cargo run --bin warzone-server -- --mdns
- Server advertises via mDNS:
_warzone._tcp.local - Client discovers server without typing IP/URL:
cargo run --bin warzone-client -- chat --discover - Shows: "Found warzone server at 192.168.1.42:7700"
- Chat works normally over LAN
4. Wi-Fi Direct (Nearby Mesh)
Two devices, no router needed:
cargo run --bin warzone-client -- chat --wifi-direct
- Devices discover each other via Wi-Fi Direct
- Form ad-hoc connection
- Messages synced peer-to-peer (no server)
- Group sync: all messages replicated to all peers in range
- Bandwidth: > 10 MB/s
5. USB / Sneakernet Export
Export messages:
cargo run --bin warzone-client -- export --since 24h --to /mnt/usb/messages.wz
- Messages exported as encrypted file
- File is portable (copy to USB drive)
- Export size shown: "Exported 142 messages (2.3 MB)"
Import on another machine:
cargo run --bin warzone-client -- import /mnt/usb/messages.wz
- Messages imported and decrypted
- Deduplication: already-seen messages skipped
- "Imported 142 messages (38 new)"
6. Transport Fallback Priority
Configure fallback chain:
warzone-server --transport https,bluetooth,lora
- Server tries HTTPS first
- If HTTPS fails → falls back to Bluetooth
- If Bluetooth unavailable → falls back to LoRa
- Each fallback logged with reason
Summary
| # | Feature | Result |
|---|---|---|
| 1 | Bluetooth mule | ☐ |
| 2 | LoRa transport | ☐ |
| 3 | mDNS discovery | ☐ |
| 4 | Wi-Fi Direct | ☐ |
| 5 | USB export/import | ☐ |
| 6 | Transport fallback | ☐ |
Tester: _______________ Date: _______________