4.8 KiB
4.8 KiB
Multi-Account Testing Sheet
Branch: feat/desktop-multi-account
Date: 2026-04-28
Tester:
Pre-test Setup
- Clean build:
./gradlew :desktopApp:clean :desktopApp:run - Delete
~/.amethyst/accounts.json.encif exists (fresh state)
T1: Fresh Launch (No Accounts)
| # | Step | Expected | Pass? | Notes |
|---|---|---|---|---|
| 1.1 | Launch app | Login screen shown | ||
| 1.2 | Check sidebar | Person icon visible at top of sidebar (replaces "A" logo) | ||
| 1.3 | Click person icon | Dropdown shows "No accounts" + "Add Account" |
T2: Login with nsec (First Account)
| # | Step | Expected | Pass? | Notes |
|---|---|---|---|---|
| 2.1 | Paste nsec on login screen | Login succeeds, feed loads | ||
| 2.2 | Click "Save" (if prompted) | Account saved to encrypted storage | ||
| 2.3 | Check ~/.amethyst/accounts.json.enc exists |
File exists, not readable as plaintext | ||
| 2.4 | Click person icon in sidebar | Dropdown shows 1 account with checkmark + "Add Account" | ||
| 2.5 | Verify account npub shown | First 16 chars of npub visible |
T3: Login with Bunker (Second Account)
| # | Step | Expected | Pass? | Notes |
|---|---|---|---|---|
| 3.1 | Log out current account | Login screen shown | ||
| 3.2 | Login with bunker:// URI | Bunker connection succeeds, feed loads | ||
| 3.3 | Click person icon | Dropdown shows 2 accounts (nsec + bunker) | ||
| 3.4 | Bunker account shows "Bunker" label | Signer type label visible under npub | ||
| 3.5 | Active account has checkmark | Only current account checked |
T4: Login with npub (View-Only, Third Account)
| # | Step | Expected | Pass? | Notes |
|---|---|---|---|---|
| 4.1 | Log out, paste npub on login | Login succeeds (read-only mode) | ||
| 4.2 | Click person icon | Dropdown shows 3 accounts | ||
| 4.3 | View-only shows label | "View only" label visible |
T5: Account Switching
| # | Step | Expected | Pass? | Notes |
|---|---|---|---|---|
| 5.1 | Click different account in dropdown | App switches, feed reloads | ||
| 5.2 | Check relay reconnection | Relay indicators show reconnection activity | ||
| 5.3 | Switch back to first account | Feed loads with first account's data | ||
| 5.4 | Verify active checkmark moves | Checkmark on newly active account | ||
| 5.5 | Switch to bunker account | Bunker heartbeat indicator appears | ||
| 5.6 | Switch away from bunker | Heartbeat stops, NIP-46 cleaned up |
T6: Persistence Across Restarts
| # | Step | Expected | Pass? | Notes |
|---|---|---|---|---|
| 6.1 | Close app (Cmd+Q) | Clean exit | ||
| 6.2 | Relaunch app | Auto-login to last active account | ||
| 6.3 | Click person icon | All previously added accounts still listed | ||
| 6.4 | Switch to different account, restart | Restarts into the account you switched to |
T7: Account Removal
| # | Step | Expected | Pass? | Notes |
|---|---|---|---|---|
| 7.1 | Remove a non-active account | Account disappears from list, active stays | ||
| 7.2 | Remove the active account | App switches to next account or shows login | ||
| 7.3 | Remove all accounts | Login screen shown |
T8: Encrypted Storage Security
| # | Step | Expected | Pass? | Notes |
|---|---|---|---|---|
| 8.1 | cat ~/.amethyst/accounts.json.enc |
Binary/encrypted data, no plaintext npubs | ||
| 8.2 | `hexdump -C ~/.amethyst/accounts.json.enc | head` | No readable strings | |
| 8.3 | File permissions: ls -la ~/.amethyst/accounts.json.enc |
-rw------- (owner only) |
T9: Edge Cases
| # | Step | Expected | Pass? | Notes |
|---|---|---|---|---|
| 9.1 | Login with invalid nsec | Error message, stays on login screen | ||
| 9.2 | Login with same account twice | Updates existing entry, no duplicate | ||
| 9.3 | Rapid account switching (click fast) | No crash, settles on last clicked | ||
| 9.4 | Switch while relays still connecting | Handles gracefully, no stuck state |
T10: UI/UX
| # | Step | Expected | Pass? | Notes |
|---|---|---|---|---|
| 10.1 | Dropdown positioning | Opens to the right of 48dp sidebar | ||
| 10.2 | Click outside dropdown | Dropdown dismisses | ||
| 10.3 | "Add Account" button | Visible at bottom with divider | ||
| 10.4 | Sidebar icon size | Person icon fits within 48dp width |
Known Limitations (Not Bugs)
- "Add Account" button is wired but has no dialog yet (TODO)
- No keyboard shortcut (Cmd+Shift+A) yet
- No background notification counts yet
- No system tray integration yet
- Account removal not yet exposed in UI (only programmatic)
- NWC connection is global, not per-account
Test Environment
- OS:
- JDK version:
- Amethyst version: 1.10.0 (feat/desktop-multi-account)