Skip to content

Latest commit

 

History

History
136 lines (105 loc) · 7.48 KB

File metadata and controls

136 lines (105 loc) · 7.48 KB

QA Verification Report — Issue #84

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


Auth

✅ Register — new account created with valid email/password

  • Result: Works. POST /api/v1/auth/register with {"email":"testuser@example.com","password":"TestPass123!"} returns JWT token and user object.
  • Response: 200 OK with token and user { id, name, email, created_at }.

❌ Register — duplicate email is rejected

  • 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 Conflict or 400 Bad Request with an error like "Email already registered".
  • Linked issue: #3

✅ Login — valid credentials reach the workspace/dashboard

  • Result: Works. POST /api/v1/auth/login with correct credentials returns JWT token and user object.

✅ Login — invalid credentials show an error and do not authenticate

  • Result: Works. POST /api/v1/auth/login with wrong password returns { "error": "Invalid credentials" }.

⬜ Google OAuth login — /auth/google/login

  • Result: Not tested. Requires GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET env vars to be configured with a valid Google OAuth app. The route returns a 302 redirect to Google's consent URL when configured.

⬜ OTP request/verify

  • Result: Not fully testable without a valid BREVO_API_KEY. POST /api/v1/auth/request-otp returns { "error": "External service unavailable" }. Endpoint structure and validation are correct.

⬜ Forgot / reset password

  • Result: Not fully testable without a valid BREVO_API_KEY. POST /api/v1/auth/forgot-password returns { "error": "External service unavailable" }. The API endpoints for forgot-password and reset-password exist and validate input correctly.

✅ Logout — client-side token removal

  • Result: Works. POST /api/v1/auth/logout returns { "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.

Workspace / Dashboard

✅ Workspace switcher / creation

  • Result: Works. POST /api/v1/workspaces creates a workspace with name and workspace_type. GET /api/v1/workspaces returns all workspaces for the authenticated user.
  • Tested: Created "My Test Workspace" (Personal type), retrieved via GET.

✅ Collection + saved request CRUD

  • Result: All CRUD operations work correctly.
    • POST /api/v1/collections — create collection (with workspace_id, name, description)
    • GET /api/v1/collections?workspace_id= — list collections
    • POST /:id/requests — add saved request (with name, method, params, network)
    • PUT /:id/requests/:req_id — update request
    • DELETE /:id/requests/:req_id — delete request
    • DELETE /:id — delete collection
  • Note: The API returns MongoDB BSON format (_id.$oid) rather than a flattened id string.

⬜ Request runner (RPC call)

  • Result: Not fully tested. POST /:id/requests/:req_id/execute endpoint exists but requires a live RPC endpoint. The user's network setting and RPC URLs would need to be configured.

⬜ PTB / Move-call builder & Sign Transaction modal

  • Result: The SignTransactionModal component exists in the frontend and requires a Sui wallet connection. Unable to test without a wallet browser extension in this environment.

✅ Network switcher

  • Result: Works. POST /api/v1/auth/switch-network with {"network":"Mainnet"|"Testnet"|"Devnet"} returns { "message": "Network switched successfully", "user": {...} }.

✅ Terminal panel

  • Result: Partially functional.
    • Allowed command (txio help): Runs but fails because txio CLI 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/:id retrieves async execution results correctly.

⬜ AI console

  • Result: Not testable without valid GROQ_API_KEYS. POST /api/v1/ai/chat returns { "error": "External service unavailable" }. The endpoint correctly validates request format (requires messages array).

⬜ Command palette

  • Result: Frontend component exists. Not tested via API (it's a UI-only feature).

Marketing / Docs pages

/, /features, /infrastructure, /integrations, /partners, /ecosystem, /docs

  • 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

Desktop (Electron)

⬜ Packaged desktop app launches

  • Result: Not tested. The Electron app (desktop/src/index.js) loads dist/index.html which is produced by npm run build. Running Electron requires a display server (not available in CLI-only environment).
  • Build verification: The desktop/ directory exists with correct structure, electron and electron-builder are listed as devDependencies. Configuration for Linux (AppImage), macOS (dmg), and Windows (nsis) is present.

Summary

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:

  1. Duplicate email bug (#3) confirmed — registration allows duplicate emails.
  2. OTP/email flows require valid BREVO_API_KEY to test fully.
  3. AI console requires valid GROQ_API_KEYS to test fully.
  4. Terminal correctly restricts commands to txio-prefixed only but the txio CLI is not present in the current environment.
  5. All CRUD APIs for workspaces, collections, and requests function correctly.
  6. All marketing/docs pages render successfully.