Branch: qa/manual-verification-checklist-84
Date: 2026-07-20
Environment: macOS (darwin), MongoDB 8.3.4, Node.js v24.18.0, Rust 1.93.0
App: Backend txio-api on :8000, Frontend (Next.js 16) on :3000
- Result: Works.
POST /api/v1/auth/registerwith{"email":"testuser@example.com","password":"TestPass123!"}returns JWT token and user object. - Response:
200 OKwithtokenanduser { id, name, email, created_at }.
- Result: BUG — duplicate emails are NOT rejected (known issue #3). Registering twice with the same email creates a second account instead of returning an error.
- Expected:
409 Conflictor400 Bad Requestwith an error like "Email already registered". - Linked issue: #3
- Result: Works.
POST /api/v1/auth/loginwith correct credentials returns JWT token and user object.
- Result: Works.
POST /api/v1/auth/loginwith wrong password returns{ "error": "Invalid credentials" }.
- Result: Not tested. Requires
GOOGLE_CLIENT_IDandGOOGLE_CLIENT_SECRETenv vars to be configured with a valid Google OAuth app. The route returns a 302 redirect to Google's consent URL when configured.
- Result: Not fully testable without a valid
BREVO_API_KEY.POST /api/v1/auth/request-otpreturns{ "error": "External service unavailable" }. Endpoint structure and validation are correct.
- Result: Not fully testable without a valid
BREVO_API_KEY.POST /api/v1/auth/forgot-passwordreturns{ "error": "External service unavailable" }. The API endpoints forforgot-passwordandreset-passwordexist and validate input correctly.
- Result: Works.
POST /api/v1/auth/logoutreturns{ "message": "Logged out successfully" }. Note: The API is stateless (JWT-based) — logout only removes the token client-side. A retained JWT remains valid on the server until natural expiry because there is no server-side revocation mechanism. The endpoint removes the database session record, but the JWT itself cannot be invalidated early without implementing a token blocklist.
- Result: Works.
POST /api/v1/workspacescreates a workspace withnameandworkspace_type.GET /api/v1/workspacesreturns all workspaces for the authenticated user. - Tested: Created "My Test Workspace" (Personal type), retrieved via GET.
- Result: All CRUD operations work correctly.
POST /api/v1/collections— create collection (with workspace_id, name, description)GET /api/v1/collections?workspace_id=— list collectionsPOST /:id/requests— add saved request (with name, method, params, network)PUT /:id/requests/:req_id— update requestDELETE /:id/requests/:req_id— delete requestDELETE /:id— delete collection
- Note: The API returns MongoDB BSON format (
_id.$oid) rather than a flattenedidstring.
- Result: Not fully tested.
POST /:id/requests/:req_id/executeendpoint exists but requires a live RPC endpoint. The user's network setting and RPC URLs would need to be configured.
- Result: The
SignTransactionModalcomponent exists in the frontend and requires a Sui wallet connection. Unable to test without a wallet browser extension in this environment.
- Result: Works.
POST /api/v1/auth/switch-networkwith{"network":"Mainnet"|"Testnet"|"Devnet"}returns{ "message": "Network switched successfully", "user": {...} }.
- Result: Partially functional.
- Allowed command (
txio help): Runs but fails becausetxioCLI binary is not installed in the server environment ("No such file or directory"). The execution infrastructure works correctly. - Disallowed command (
rm -rf /): Rejected with"bash: command not found: ... Only 'txio' is authorized.". GET /executions/:idretrieves async execution results correctly.
- Allowed command (
- Result: Not testable without valid
GROQ_API_KEYS.POST /api/v1/ai/chatreturns{ "error": "External service unavailable" }. The endpoint correctly validates request format (requiresmessagesarray).
- Result: Frontend component exists. Not tested via API (it's a UI-only feature).
- Result: All pages render successfully (HTTP 200) with complete HTML output and no server-side errors.
- Page sizes:
/— 43,882 bytes/signin— 25,504 bytes/signup— 36,038 bytes/features— 42,511 bytes/infrastructure— 31,810 bytes/integrations— 41,794 bytes/partners— 35,345 bytes/ecosystem— 55,381 bytes/docs— 41,101 bytes/workspace— 29,997 bytes/otp— 33,138 bytes
- Result: Not tested. The Electron app (
desktop/src/index.js) loadsdist/index.htmlwhich is produced bynpm run build. Running Electron requires a display server (not available in CLI-only environment). - Build verification: The
desktop/directory exists with correct structure,electronandelectron-builderare listed as devDependencies. Configuration for Linux (AppImage), macOS (dmg), and Windows (nsis) is present.
| Flow | Status | Notes |
|---|---|---|
| Register | ✅ Pass | Works correctly |
| Duplicate email rejection | ❌ Fail | Known bug #3 — does not reject duplicates |
| Login (valid) | ✅ Pass | Works correctly |
| Login (invalid) | ✅ Pass | Returns error |
| Google OAuth | ⬜ Skipped | GOOGLE_CLIENT_ID not configured |
| OTP request/verify | ⬜ Skipped | Requires valid BREVO_API_KEY |
| Forgot/reset password | ⬜ Skipped | Requires valid BREVO_API_KEY |
| Logout | ✅ Pass | Endpoint responds correctly |
| Workspace CRUD | ✅ Pass | Works correctly |
| Collection/Request CRUD | ✅ Pass | Works correctly |
| Request runner (RPC) | ⬜ Skipped | Requires live RPC endpoint |
| PTB/Sign modal | ⬜ Skipped | Requires wallet extension |
| Network switcher | ✅ Pass | Works correctly |
| Terminal panel | ✅ Pass | Allowed/disallowed handling works |
| AI console | ⬜ Skipped | Requires valid GROQ_API_KEYS |
| Command palette | ⬜ Skipped | UI-only feature |
| Marketing pages | ✅ Pass | All pages render (HTTP 200) |
| Desktop app | ⬜ Skipped | Requires display server |
Key findings:
- Duplicate email bug (#3) confirmed — registration allows duplicate emails.
- OTP/email flows require valid
BREVO_API_KEYto test fully. - AI console requires valid
GROQ_API_KEYSto test fully. - Terminal correctly restricts commands to
txio-prefixed only but thetxioCLI is not present in the current environment. - All CRUD APIs for workspaces, collections, and requests function correctly.
- All marketing/docs pages render successfully.