Staging Test: Support Chat & Ticketing

Test Area: Support Tickets & Real-time Chat
Estimated Time: 30-40 minutes
Difficulty: Medium
Prerequisites: Complete 01-authentication first.

Overview

This guide tests the support ticketing and real-time chat system. The system enables:
  • Investors to create support tickets and message with support staff
  • Support Staff (Agent/Admin) to manage tickets, assign them, and add internal notes
  • Super Admin to send one-way direct messages to users and reopen closed tickets

Ticket Status Flow

OPEN → IN_PROGRESS → RESOLVED → CLOSED
  │         │            │          │
  └─────────┴────────────┴──────────┘
            (any status can go to CLOSED)
            (Super Admin can reopen CLOSED → OPEN)

Ticket Categories

CategoryWhen to Use
DEPOSITQuestions about deposits
WITHDRAWALIssues with withdrawals
KYCIdentity verification questions
TECHNICALTechnical issues with the platform
EARLY_WITHDRAWALRequests to withdraw before lock-in ends
OTHERAnything else

Before You Start

URLs

Note: All support routes use /support/* (investor) and /admin/support/* (staff). The old /investor/tickets and /admin/tickets routes no longer exist.
PageURLNotes
Loginhttps://zestamc.savibm.com/loginAll users
Investor Pages
Support Hubhttps://zestamc.savibm.com/supportDashboard with tickets + inbox
My Ticketshttps://zestamc.savibm.com/support/ticketsInvestor’s ticket list
Ticket Detailhttps://zestamc.savibm.com/support/tickets/:idChat view
Inboxhttps://zestamc.savibm.com/support/inboxDirect messages from admin
Note:Ticket creation uses a modal dialogClick “New Ticket” button on Support Hub or My Tickets page
Staff Pages
Support Dashboardhttps://zestamc.savibm.com/admin/supportAll tickets overview
All Ticketshttps://zestamc.savibm.com/admin/support/ticketsStaff ticket queue
Ticket Detailhttps://zestamc.savibm.com/admin/support/tickets/:idChat + notes + status
Agent Workloadhttps://zestamc.savibm.com/admin/support/agentsSuper Admin only
Direct Messageshttps://zestamc.savibm.com/admin/support/dmSuper Admin only

Test Accounts

RoleEmailOTPPurpose
Investortestinvestor@zestamc.comCheck emailPrimary investor for ticket creation
Investortest@zestamc.comCheck emailSecondary investor for DM testing
Support Agentsupportagent@zestamc.comCheck emailAgent for ticket management
Super Adminadmin@zestamc.comCheck emailAdmin for DM and reopen testing

User Capabilities

RoleCan Do
INVESTORCreate tickets, send messages, close own tickets, receive DMs
SUPPORT_AGENTView all tickets, claim tickets, change status, add notes, send messages
SUPER_ADMINAll agent actions + assign to others, send DMs, reopen closed tickets, view workload
RoleHow to Access Support
InvestorClick “Support” in sidebar navigation
Support AgentClick “Support Center” in sidebar (shows under Admin layout)
Super AdminClick “Support Center” in sidebar

Test Cases

Test 1: Create Support Ticket

Goal: Verify investor can create a support ticket with initial message Steps:
  1. Log in as testinvestor@zestamc.com
  2. Navigate to Support page (/support)
  3. Click the “New Ticket” button (opens a modal dialog)
  4. Fill in the form in the modal:
    • Category: DEPOSIT
    • Subject: Question about my deposit
    • Message: I submitted a deposit yesterday but it hasn't been approved yet. Can you help?
  5. Click “Create Ticket” button in the modal
Expected Results:
StepWhat You Should See
Modal opensCategory dropdown, subject field, message textarea in dialog
After submitSuccess message, modal closes, redirected to ticket detail view
Ticket statusShows “OPEN”
Initial messageYour message appears in the chat
Note: You can also create tickets from the “My Tickets” page (/support/tickets) by clicking the “New Ticket” button there. Pass Criteria: ✅ Ticket created with initial message visible

Test 2: View Ticket List

Goal: Verify investor can see their support tickets Steps:
  1. On the Support page
  2. Look for the ticket list/table
Expected Results:
ElementWhat You Should See
Ticket rowShows subject, category, status, date
Status badgeColor-coded (e.g., green=open, blue=in progress)
Click actionClicking ticket opens detail view
Pass Criteria: ✅ Ticket list displays with correct information

Test 3: Send Message in Ticket

Goal: Verify investor can send messages in an open ticket Steps:
  1. Open an existing ticket
  2. Type a message: Adding more details to my question.
  3. Click “Send” or press Enter
Expected Results:
StepWhat You Should See
Message inputText area at bottom of chat
After sendMessage appears immediately
Sender infoShows your name/avatar
TimestampShows when message was sent
Pass Criteria: ✅ Message sent and displayed in chat

Test 4: Close Ticket (Investor)

Goal: Verify investor can close their own ticket Steps:
  1. Open an OPEN or IN_PROGRESS ticket
  2. Find “Close Ticket” button
  3. Click to close
  4. Confirm if prompted
Expected Results:
StepWhat You Should See
Close buttonAvailable on open tickets
After closeStatus changes to “CLOSED”
Message inputDisabled (cannot message closed ticket)
Pass Criteria: ✅ Ticket closed successfully

Test 5: Cannot Message Closed Ticket

Goal: Verify users cannot send messages in closed tickets Steps:
  1. Open a CLOSED ticket
  2. Try to type and send a message
Expected Results:
StepWhat You Should See
Message inputDisabled or hidden
Error”Cannot send messages to closed ticket” (if attempted)
Pass Criteria: ✅ Message sending blocked on closed tickets

Test 6: Staff Views All Tickets

Goal: Verify support agent can see all tickets Steps:
  1. Log out and log in as supportagent@zestamc.com
  2. You should be redirected to the admin portal (sidebar shows “Support Center”)
  3. Click “Support Center” in the sidebar
  4. Then navigate to Tickets tab or /admin/support/tickets
Expected Results:
ElementWhat You Should See
Navigation”Support Center” link in sidebar
Ticket listAll tickets from all users
FiltersStatus, category, priority filters
User infoShows which user created each ticket
AssignmentShows assigned agent (if any)
Pass Criteria: ✅ Staff can see all tickets in /admin/support/tickets

Test 7: Claim/Assign Ticket

Goal: Verify agent can claim an unassigned ticket Steps:
  1. As supportagent@zestamc.com
  2. Find an unassigned ticket (no agent assigned)
  3. Click “Claim” or “Assign to Me”
Expected Results:
StepWhat You Should See
Before claimShows “Unassigned”
After claimShows your name as assigned agent
StatusMay change to “IN_PROGRESS”
System message”Ticket assigned to [Agent Name]” in chat
Pass Criteria: ✅ Ticket assigned with system message

Test 8: Agent Limit (5 Active Tickets)

Goal: Verify agent cannot claim more than 5 active tickets Preparation: This test requires claiming 5 tickets first. If already at limit, proceed. Steps:
  1. As an agent with 5 active tickets
  2. Try to claim a 6th ticket
Expected Results:
StepWhat You Should See
Claim attemptError message
Error”Agent has reached maximum active tickets (5)“
TicketRemains unassigned
Pass Criteria: ✅ System prevents exceeding 5-ticket limit

Test 9: Add Internal Note

Goal: Verify staff can add internal notes (not visible to users) Steps:
  1. As supportagent@zestamc.com
  2. Open a ticket
  3. Find “Add Note” or “Internal Note” section
  4. Enter: Customer has been contacted via phone.
  5. Click “Add Note”
Expected Results:
StepWhat You Should See
Note inputSeparate from message input
After addNote appears in notes section
Note stylingVisually distinct from chat messages
User viewNotes NOT visible when investor views ticket
Pass Criteria: ✅ Internal note added and hidden from investor

Test 10: Verify Notes Hidden from Investor

Goal: Confirm internal notes are not visible to the ticket owner Steps:
  1. Log out and log in as testinvestor@zestamc.com
  2. Open the same ticket that has internal notes
  3. Look for the note content
Expected Results:
StepWhat You Should See
Ticket viewRegular messages visible
NotesNo internal notes section visible
Note contentCannot see staff notes
Pass Criteria: ✅ Internal notes not visible to investor

Test 11: Staff Changes Status

Goal: Verify staff can update ticket status Steps:
  1. Log in as supportagent@zestamc.com
  2. Open an OPEN ticket
  3. Change status to “IN_PROGRESS”
  4. Then change to “RESOLVED”
Expected Results:
TransitionExpected Result
OPEN → IN_PROGRESS✅ Allowed
IN_PROGRESS → RESOLVED✅ Allowed
RESOLVED → CLOSED✅ Allowed
Status displayUpdates immediately
Pass Criteria: ✅ Status transitions work correctly

Test 12: Staff Sends Message

Goal: Verify staff can send messages to investors Steps:
  1. As supportagent@zestamc.com
  2. Open a ticket
  3. Send message: Thank you for contacting support. We are looking into your issue.
Expected Results:
StepWhat You Should See
After sendMessage appears in chat
SenderShows agent name
Investor viewInvestor can see staff message
Pass Criteria: ✅ Staff message visible to investor

Test 13: Super Admin Sends Direct Message

Goal: Verify Super Admin can send one-way direct messages to users Steps:
  1. Log in as admin@zestamc.com
  2. Navigate to Support Center > Direct Messages (or /admin/support/dm)
  3. Select recipient: test@zestamc.com
  4. Enter message: Important: Please update your KYC documents.
  5. Click Send
Expected Results:
StepWhat You Should See
Navigation”Direct Messages” tab available in Support Center
DM formRecipient dropdown/search, message textarea
After sendSuccess message, DM appears in sent list
Pass Criteria: ✅ DM sent successfully

Test 14: Investor Receives Direct Message

Goal: Verify investor can receive and view direct messages Steps:
  1. Log in as test@zestamc.com
  2. Navigate to Support > Inbox (or /support/inbox)
  3. Look for the DM from admin
Expected Results:
StepWhat You Should See
NotificationBadge showing unread DM count in navigation
InboxDM from admin visible in list
MessageShows sender name and content
ReplyNo reply option (one-way DM)
Pass Criteria: ✅ Investor receives DM in inbox at /support/inbox

Test 15: Mark Messages Read

Goal: Verify read status updates when viewing messages Steps:
  1. As test@zestamc.com with unread DMs
  2. Open and view the DM
  3. Check if unread count updates
Expected Results:
StepWhat You Should See
Before viewUnread badge/count
After viewBadge cleared or count decremented
DM appearanceMay show as “read”
Pass Criteria: ✅ Read status updates after viewing

Test 16: Reopen Closed Ticket (Super Admin Only)

Goal: Verify Super Admin can reopen a closed ticket Steps:
  1. Log in as admin@zestamc.com
  2. Find a CLOSED ticket
  3. Click “Reopen” button
Expected Results:
StepWhat You Should See
Reopen buttonOnly visible to Super Admin
After reopenStatus changes to OPEN
System message”Ticket reopened by [Admin Name]“
MessagingCan now send messages again
Pass Criteria: ✅ Closed ticket reopened by Super Admin

Test 17: Agent Cannot Reopen Ticket

Goal: Verify regular support agent cannot reopen closed tickets Steps:
  1. Log in as supportagent@zestamc.com
  2. Find a CLOSED ticket
  3. Look for reopen option
Expected Results:
StepWhat You Should See
Reopen buttonNot visible or disabled
StatusCannot change from CLOSED
Pass Criteria: ✅ Regular agents cannot reopen tickets

Test 18: Agent Workload View (Super Admin)

Goal: Verify Super Admin can see agent workload Steps:
  1. Log in as admin@zestamc.com
  2. Navigate to Support Center > Agents (or /admin/support/agents)
  3. View agent ticket counts
Expected Results:
ElementWhat You Should See
Agent listAll support staff listed
Ticket countNumber of active tickets per agent
Limit indicatorShows X/5 format
AvailabilityAgents at limit marked differently
Note: This page is only accessible to Super Admin, not regular support agents. Pass Criteria: ✅ Workload view shows agent assignments

Test 19: Real-time Message Updates

Goal: Verify messages appear in real-time without refresh Preparation: Open same ticket in two browser windows (one as investor, one as agent) Steps:
  1. Window 1: Log in as testinvestor@zestamc.com, open a ticket
  2. Window 2: Log in as supportagent@zestamc.com, open same ticket
  3. In Window 2, send a message
  4. Observe Window 1
Expected Results:
StepWhat You Should See
Window 1Message appears without refresh
DelayNear-instant (< 2 seconds)
UIMessage animates/slides in
Pass Criteria: ✅ Real-time message delivery works
Goal: Verify tickets can be linked to deposit/withdrawal transactions Steps:
  1. Log in as testinvestor@zestamc.com
  2. Create a new ticket (click “New Ticket” button, opens modal)
  3. Select category: DEPOSIT or WITHDRAWAL
  4. Submit ticket
  5. After ticket is created, check if a transaction is automatically linked (staff may also link transactions manually)
Expected Results:
StepWhat You Should See
Ticket detail viewIf transaction is linked, shows linked transaction card
Linked transactionDisplays transaction amount, status, and network
Staff viewStaff can see transaction details in ticket sidebar
Note: Transaction linking may happen automatically based on ticket category or be done manually by staff. The transaction link appears in the ticket detail view if a deposit or withdrawal is associated with the ticket. Pass Criteria: ✅ Ticket shows linked transaction info (if transaction is linked)

Test Results Summary

TestStatusNotes
Test 1: Create Ticket⬜ Pass / ⬜ Fail
Test 2: View Ticket List⬜ Pass / ⬜ Fail
Test 3: Send Message⬜ Pass / ⬜ Fail
Test 4: Close Ticket⬜ Pass / ⬜ Fail
Test 5: Cannot Message Closed⬜ Pass / ⬜ Fail
Test 6: Staff Views All⬜ Pass / ⬜ Fail
Test 7: Claim Ticket⬜ Pass / ⬜ Fail
Test 8: Agent Limit⬜ Pass / ⬜ Fail
Test 9: Add Internal Note⬜ Pass / ⬜ Fail
Test 10: Notes Hidden⬜ Pass / ⬜ Fail
Test 11: Staff Status Change⬜ Pass / ⬜ Fail
Test 12: Staff Message⬜ Pass / ⬜ Fail
Test 13: Send DM⬜ Pass / ⬜ Fail
Test 14: Receive DM⬜ Pass / ⬜ Fail
Test 15: Mark Read⬜ Pass / ⬜ Fail
Test 16: Reopen (Admin)⬜ Pass / ⬜ Fail
Test 17: Agent Cannot Reopen⬜ Pass / ⬜ Fail
Test 18: Workload View⬜ Pass / ⬜ Fail
Test 19: Real-time Updates⬜ Pass / ⬜ Fail
Test 20: Transaction Link⬜ Pass / ⬜ Fail

Status Transition Reference

FromAllowed ToWho Can
OPENIN_PROGRESS, CLOSEDStaff (status), Anyone (close)
IN_PROGRESSOPEN, RESOLVED, CLOSEDStaff only
RESOLVEDIN_PROGRESS, CLOSEDStaff only
CLOSEDOPENSuper Admin only (reopen)

Troubleshooting

”Access Denied” when accessing /admin/support

  1. Verify the support agent user has the SUPPORT_AGENT role in user_roles table
  2. Check the staging seed was run correctly (seed-staging.sql)
  3. Clear browser cache and re-login
  4. Verify you’re logging in with the correct email (supportagent@zestamc.com)

“Cannot send message” error

  1. Check if ticket is closed - closed tickets cannot receive messages
  2. Verify you have access to the ticket
  3. Try refreshing the page

”Agent limit reached” error

Agent already has 5 active (non-closed) tickets. To resolve:
  1. Close or resolve some existing tickets
  2. Or reassign to a different agent

Messages not appearing in real-time

  1. Check your internet connection
  2. Try refreshing the page
  3. Real-time may take 1-2 seconds
  4. Check browser console for WebSocket errors

Cannot see internal notes

Internal notes are only visible to support staff, not to the ticket owner. This is expected behavior.

Cannot find “Reopen” button

Reopen is only available for Super Admin users. Regular support agents cannot reopen closed tickets.

DM not received

  1. Check the recipient email is correct
  2. Verify you’re logged in as Super Admin when sending
  3. Check investor’s inbox/notification area

Rate Limits

The support system has rate limits to prevent abuse:
ActionLimitWindow
Create ticket5Per hour
Send message30Per minute
Send DM60Per minute
Mark read100Per minute
Staff members are exempt from ticket creation and message rate limits.

Next Steps

After completing support chat testing:
  • Review any failed tests and report issues
  • If all tests pass, the support chat feature is ready for production