Skip to content

Real-Time & Cross-Cutting

QA test plan covering real-time messaging, notifications, file uploads, search, link previews, suggestions, infinite scroll, empty states, and error handling.


IDDescriptionPreconditionsStepsExpected ResultPriority
RT-M-001Send message in a roomLogged in; member of a room1. Open room 2. Type message 3. SendMessage appears in room instantly for all membersP0
RT-M-002Receive message in real-timeLogged in; in a room; another user sends message1. Stay in room viewIncoming message appears without page refreshP0
RT-M-003Send direct messageLogged in; DM permissions allow1. Open DM with another user 2. Type message 3. SendMessage delivered to recipient in real-timeP0
RT-M-004Receive DM in real-timeLogged in; another user sends DM1. Have DM conversation openMessage appears without refresh; notification if not in conversationP0
RT-M-005Typing indicator shownLogged in; in conversation1. Other user starts typingTyping indicator visible (e.g., “User is typing…”)P1
RT-M-006Typing indicator disappearsLogged in; in conversation1. Other user stops typingTyping indicator disappears after timeoutP2
RT-M-007Presence — online statusLogged in; contacts online1. View contact list or conversationOnline users show active/online indicatorP1
RT-M-008Presence — offline statusLogged in; contact goes offline1. View contact listUser’s status changes to offline/last seenP1
RT-M-009Message persistence after reconnectLogged in; messages sent while offline1. Disconnect from network 2. ReconnectMissed messages load upon reconnectionP1
RT-M-010Send message in DM when recipient has DMs restrictedLogged in; recipient restricts DMs to followers only; not a follower1. Attempt to send DMError: cannot message this user; DM blockedP1

Route: /notifications

IDDescriptionPreconditionsStepsExpected ResultPriority
RT-N-001Display notificationsLogged in; notifications exist1. Navigate to /notificationsList of notifications displayed with type, content, timestampP0
RT-N-002Mark single notification as readLogged in; unread notification exists1. Click on a notificationNotification marked as read; visual indicator changesP0
RT-N-003Mark all notifications as readLogged in; multiple unread notifications1. Click “Mark All as Read”All notifications marked as read; badges clearedP0
RT-N-004Delete a notificationLogged in1. Click delete on a notification 2. ConfirmNotification removed from listP1
RT-N-005Unread badge countLogged in; unread notifications exist1. View navigation barBadge shows correct unread countP0
RT-N-006Badge updates in real-timeLogged in; new notification arrives1. Stay on any pageBadge count increments without page refreshP0
RT-N-007Empty notifications stateLogged in; no notifications1. Navigate to /notifications”No notifications” empty state displayedP1
RT-N-008Notification links to sourceLogged in; notification for a comment1. Click notificationNavigated to the relevant content (post, message, etc.)P1

IDDescriptionPreconditionsStepsExpected ResultPriority
RT-FU-001Upload document within size limitLogged in1. Select a file under 50MB 2. UploadFile uploaded successfully; preview or link shownP0
RT-FU-002Reject document exceeding 50MBLogged in1. Select a file over 50MB 2. Attempt uploadError: file exceeds maximum size of 50MBP0
RT-FU-003Reject unsupported file typeLogged in1. Select a disallowed file type (e.g., .exe) 2. Attempt uploadError: file type not supportedP0
RT-FU-004Upload multiple product imagesLogged in as business user; creating/editing product1. Select multiple image files 2. UploadAll images uploaded; displayed in product galleryP0
RT-FU-005Upload chat attachmentLogged in; in a conversation1. Click attachment icon 2. Select file 3. SendFile sent as message attachment; downloadable by recipientP1
RT-FU-006Upload room mediaLogged in; in a room1. Attach media file 2. SendMedia shared in room; viewable by all membersP1
RT-FU-007Upload progress indicatorLogged in1. Upload a larger fileProgress bar or spinner shown during uploadP2
RT-FU-008Cancel upload in progressLogged in1. Start uploading a file 2. Click cancelUpload cancelled; no file savedP2

IDDescriptionPreconditionsStepsExpected ResultPriority
RT-SR-001Search for usersLogged in1. Open search 2. Enter username or nameMatching users displayed in resultsP0
RT-SR-002Search for productsLogged in1. Open search 2. Enter product keywordMatching products displayedP0
RT-SR-003Search for jobsLogged in1. Open search 2. Enter job keywordMatching jobs displayedP1
RT-SR-004Admin search usersLogged in as admin1. Navigate to /admin/users 2. Search by name or emailMatching users shown in admin contextP0
RT-SR-005Search with empty queryLogged in1. Submit search with empty inputNo results or prompt to enter a search termP2
RT-SR-006Search result navigationLogged in1. Search and get results 2. Click a resultNavigated to the correct detail pageP1

Endpoint: /api/link-preview

IDDescriptionPreconditionsStepsExpected ResultPriority
RT-LP-001Generate link preview for valid URLLogged in; in a message context1. Paste a URL with Open Graph metadataLink preview card shows title, description, and imageP1
RT-LP-002Handle URL without metadataLogged in1. Paste a URL with no OG tagsBasic preview with URL displayed; no errorP2
RT-LP-003Handle invalid URLLogged in1. Paste an invalid URLNo preview generated; no error thrownP2
RT-LP-004Handle unreachable URLLogged in1. Paste a URL to a non-existent domainGraceful failure; URL displayed as plain textP2

Endpoint: /api/suggestions

IDDescriptionPreconditionsStepsExpected ResultPriority
RT-SG-001Display suggested usersLogged in; not following many users1. View suggestions section (feed sidebar or discover)Relevant user suggestions displayedP1
RT-SG-002Display suggested productsLogged in1. View marketplace or feedSuggested products shown based on interestsP1
RT-SG-003Display suggested roomsLogged in1. View rooms or discover sectionSuggested rooms displayedP2
RT-SG-004Follow from suggestionLogged in1. Click “Follow” on a suggested userUser followed; suggestion removed or updatedP1

IDDescriptionPreconditionsStepsExpected ResultPriority
RT-IS-001Feed infinite scrollLogged in; following users with many posts1. Scroll to bottom of feedNext batch of posts loads automaticallyP0
RT-IS-002Marketplace infinite scrollLogged in; many products1. Scroll to bottom of marketplace gridNext batch of products loadsP0
RT-IS-003Scroll loading indicatorLogged in1. Scroll to trigger next page loadLoading spinner or skeleton shown while fetchingP1
RT-IS-004End of content reachedLogged in; scrolled to last page1. Scroll past all content”No more content” indicator or scroll stopsP1
RT-IS-005Scroll position preserved on back navigationLogged in; scrolled down in feed1. Click on a post 2. Navigate backFeed scroll position restoredP2

IDDescriptionPreconditionsStepsExpected ResultPriority
RT-ES-001No search resultsLogged in1. Search for non-matching term”No results found” with optional suggestionsP1
RT-ES-002No posts in feedLogged in; not following anyone1. View feedEmpty state with prompt to follow users or exploreP1
RT-ES-003No messagesLogged in; no conversations1. Navigate to messagesEmpty state: “No messages yet” with prompt to start oneP1
RT-ES-004No notificationsLogged in; no notifications1. Navigate to /notificationsEmpty state: “No notifications”P1
RT-ES-005No products in marketplaceLogged in; no approved products1. Navigate to /marketplaceEmpty state displayedP2
RT-ES-006No jobs availableLogged in; no approved jobs1. Navigate to /jobsEmpty state: “No jobs available”P2

IDDescriptionPreconditionsStepsExpected ResultPriority
RT-EH-001Network error during API callLogged in; network disconnected1. Perform any action requiring API callError message: “Network error” or retry prompt; no crashP0
RT-EH-002401 Unauthorized — expired sessionSession token expired1. Perform any authenticated actionRedirected to login page; session clearedP0
RT-EH-003404 Not Found — invalid routeLogged in1. Navigate to /nonexistent-pageCustom 404 page displayed with navigation optionsP0
RT-EH-004404 Not Found — deleted resourceLogged in; resource previously existed1. Navigate to URL of deleted post/product”Not found” or “This content has been removed” messageP1
RT-EH-005Expired session automatic refreshSession approaching expiry1. Continue using the appToken silently refreshed; no interruption to userP0
RT-EH-006Server error (500)Logged in; server returns 5001. Trigger server errorUser-friendly error message; option to retryP1
RT-EH-007Rate limitingLogged in; rapid repeated requests1. Send many requests in quick successionRate limit error shown; requests throttled; no crashP2
RT-EH-008Offline mode indicatorNetwork disconnected1. Lose network connection while using appOffline banner or indicator shown to userP1