74
Total
30
High
33
Medium
11
Low

Overview Tab

IDTest CasePreconditionsStepsExpected ResultPriority
ANA-001 Load Overview tab with default date range (last 7 days) Logged in as Agent with analytics:read permission, WhatsApp account connected, conversation history exists 1. Navigate to /analytics 2. Observe Overview tab is active by default 3. Check date range selector shows "7d" preset Overview tab loads, Hero KPIs widget displays total messages, conversations, and automation stats for last 7 days. Message Volume Chart shows daily breakdown. Conversation Status donut and Automation Wins widget render without errors High
ANA-002 Load Overview tab with custom date range Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Click date range selector 3. Click "Custom" option 4. Enter start date as 2026-01-01 5. Enter end date as 2026-03-31 6. Click Apply Overview stats refresh to show data only for Jan-Mar 2026. Charts and KPIs update to reflect custom range. Date selector shows custom range label High
ANA-003 Switch between date presets Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Click date range selector 3. Select "Today" preset 4. Observe charts update 5. Click selector again and select "30d" 6. Observe charts update again Each preset change triggers immediate data refresh. Charts update to reflect selected time period. No loading errors occur High
ANA-004 Widget visibility toggle persists on Overview tab Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Click Settings icon (gear) in Overview tab header 3. Toggle off "Message Volume Chart" widget 4. Close settings panel 5. Refresh page Message Volume Chart remains hidden after page refresh. Widget Settings panel shows toggle state persists in localStorage. Other widgets remain visible Medium
ANA-005 Hide all widgets on Overview tab Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Click Settings icon 3. Toggle off all 4 widgets (Hero KPIs, Message Volume Chart, Conversation Status, Automation Wins) 4. Close panel All widgets disappear from Overview tab. Empty state message appears: "No widgets selected. Open Widget Settings to show widgets." Medium
ANA-006 Re-enable hidden widgets on Overview tab Logged in as Agent with analytics:read permission, all Overview widgets hidden 1. Navigate to /analytics 2. Click Settings icon 3. Toggle on "Hero KPIs" widget 4. Toggle on "Message Volume Chart" widget 5. Close panel Previously hidden widgets reappear in correct positions on Overview tab. Widget Settings panel reflects enabled state with toggle switches Medium
ANA-007 Overview tab loads with no conversation data Logged in as Agent with analytics:read permission, no messages sent in date range 1. Navigate to /analytics 2. Set date range to future dates (e.g., 2026-12-01 to 2026-12-31) 3. Observe Overview tab Hero KPIs show 0 or "—" for metrics (Total Messages, Active Conversations, Automation Rate). Charts display empty state or flat lines. No error toasts appear Medium
ANA-008 Permission denied: User without analytics:read cannot access Overview Logged in as user with no analytics:read permission 1. Try to navigate to /analytics Redirected to /dashboard or receive 403 Forbidden error. Toast shows "You don't have permission to view analytics" High

Conversations Tab

IDTest CasePreconditionsStepsExpected ResultPriority
ANA-009 Load Conversations tab with Response Time KPIs Logged in as Agent with analytics:read permission, conversations with response times logged 1. Navigate to /analytics 2. Click Conversations tab 3. Set date range to last 30 days Response Time KPIs widget displays Avg Response Time, 95th Percentile, and SLA Compliance % for selected date range. Conversation Volume Trend chart loads showing status breakdown (open, closed, pending) High
ANA-010 Agent Performance Table displays all agents Logged in as Admin with analytics:read permission, 3+ agents in org 1. Navigate to /analytics 2. Click Conversations tab 3. Scroll to Agent Performance Table 4. Observe table rows Table shows one row per agent with columns: Agent Name, Total Conversations, Response Time (avg), Conversations Resolved, Resolution Rate (%). Agents sorted by most conversations by default High
ANA-011 Sort Agent Performance Table by column Logged in as Agent with analytics:read permission, Agent Performance Table visible 1. Navigate to /analytics → Conversations tab 2. Click "Response Time (avg)" column header Agent rows re-sort ascending by response time (lowest first). Click again sorts descending (highest first). Sort indicator arrow appears on column header Medium
ANA-012 Team Rollup Table shows team-level metrics Logged in as Agent with analytics:read permission, 2+ teams with assigned agents 1. Navigate to /analytics 2. Click Conversations tab 3. Scroll to Team Rollup Table Table displays one row per team with columns: Team Name, Total Conversations, Avg Response Time, Avg Resolution Time. Row totals match sum of agent rows from Agent Performance Table High
ANA-013 Filter Conversations tab by date range Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Click Conversations tab 3. Change date range from "7d" to "30d" 4. Observe tables and charts Response Time KPIs, SLA Compliance Trend, Conversation Volume Trend, Agent Performance, and Team Rollup all refresh immediately. No page reload required. All data reflects selected 30-day range High
ANA-014 Resolution Time widget displays histogram Logged in as Agent with analytics:read permission, resolved conversations exist 1. Navigate to /analytics 2. Click Conversations tab 3. Scroll to Resolution Time widget Bar chart renders showing number of conversations resolved in 0-1h, 1-4h, 4-24h, 24h+ buckets. Hover over bar shows exact count Medium
ANA-015 Conversations tab with no data in date range Logged in as Agent with analytics:read permission, date range selected with no conversation activity 1. Navigate to /analytics 2. Click Conversations tab 3. Set date range to future dates All widgets display empty states or show "—" for metrics. No errors thrown. KPI cards show 0 or blank values Medium
ANA-016 SLA Compliance Trend line chart updates with date range Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Click Conversations tab 3. Set date range to "daily" period for last 7 days 4. Observe SLA Compliance Trend chart Line chart shows one data point per day with SLA compliance percentage (0–100%). X-axis shows date labels. Trend line color changes based on overall compliance (green >95%, yellow 85–95%, red <85%) Medium

Bot Performance (Automation) Tab

IDTest CasePreconditionsStepsExpected ResultPriority
ANA-017 Load Automation tab with Automation KPIs Logged in as Agent with analytics:read permission, flows exist and have been executed 1. Navigate to /analytics 2. Click "Bot Performance" tab 3. Set date range to last 30 days Automation KPIs widget displays: Total Bot Messages, Flow Completion Rate (%), Total Flows Executed, Automation Win Rate (%). AI vs Human Split donut chart renders showing percentage split High
ANA-018 Flow Performance Table displays all flows with execution stats Logged in as Agent with analytics:read permission, 3+ flows with execution history 1. Navigate to /analytics 2. Click Bot Performance tab 3. Scroll to Flow Performance Table Table shows one row per flow: Flow Name, Sessions, Completed, Dropped Off, Completion Rate (%). Default sorted by Dropped Off (highest first) to surface problem flows High
ANA-019 Sort Flow Performance Table by Completion Rate Logged in as Agent with analytics:read permission, Flow Performance Table visible 1. Navigate to /analytics 2. Click Bot Performance tab 3. Click "Completion Rate" column header in Flow Performance Table Flow rows sort by completion rate descending (worst performers first). Sort indicator arrow appears. Click again sorts ascending (best performers first) Medium
ANA-020 Sort Flow Performance Table alphabetically by flow name Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Click Bot Performance tab 3. Click "Flow Name" column header in Flow Performance Table Flows sort A–Z alphabetically. Click again sorts Z–A. Sort indicator shows direction Medium
ANA-021 Keyword Rule Leaderboard displays top keywords Logged in as Agent with analytics:read permission, keyword rules with message matches exist 1. Navigate to /analytics 2. Click Bot Performance tab 3. Scroll to Keyword Rule Leaderboard Table shows top 10 keywords by match count: Keyword, Matches, Response Flow, Success Rate (%). Sorted descending by match count Medium
ANA-022 Nurture Sequence Table shows sequence performance Logged in as Agent with analytics:read permission, nurture sequences active 1. Navigate to /analytics 2. Click Bot Performance tab 3. Scroll to Nurture Sequence Table Table displays: Sequence Name, Total Enrolled, Completed, Dropped, Completion Rate (%). Shows engagement metrics for automated nurture workflows Medium
ANA-023 Reminders Summary widget shows reminder stats Logged in as Agent with analytics:read permission, reminders sent in date range 1. Navigate to /analytics 2. Click Bot Performance tab 3. Scroll to Reminders Summary widget Widget displays Total Reminders Sent, Sent Rate (%), Completed (contacts who acted after reminder), Completion Rate (%). KPI cards with numeric values Medium
ANA-024 AI vs Human Split donut shows accurate percentages Logged in as Agent with analytics:read permission, mixed bot and human messages in history 1. Navigate to /analytics 2. Click Bot Performance tab 3. Set date range to capture both bot and human traffic 4. Observe donut chart Donut shows 3 segments: AI (blue), Bot/Flow (green), Human (gray) with percentages adding to 100%. Hover shows exact message counts. Legend identifies each segment High
ANA-025 Automation tab with no flow executions Logged in as Agent with analytics:read permission, no flows run in selected date range 1. Navigate to /analytics 2. Click Bot Performance tab 3. Set date range to future with no activity Flow Performance Table shows "No flows executed in this period." Keyword Leaderboard empty. Automation KPIs show 0 or "—". No error toast Medium

Campaigns Tab

IDTest CasePreconditionsStepsExpected ResultPriority
ANA-026 Load Campaigns tab with Campaign KPIs Logged in as Agent with analytics:read permission, broadcast/campaign messages sent 1. Navigate to /analytics 2. Click Campaigns tab 3. Set date range to last 30 days Campaign KPIs widget displays: Total Sent, Delivery Rate (%), Read Rate (%), Failed Rate (%). Delivery Funnel visualization shows sent → delivered → read flow with conversion percentages High
ANA-027 Campaign Performance Table displays all campaigns Logged in as Agent with analytics:read permission, 3+ campaigns with delivery history 1. Navigate to /analytics 2. Click Campaigns tab 3. Scroll to Campaign Performance Table Table shows one row per campaign: Campaign Name, Sent, Delivered, Read, Failed, Delivery Rate (%), Read Rate (%). Campaigns listed in descending order by sent count High
ANA-028 Delivery Funnel shows conversion percentages Logged in as Agent with analytics:read permission, campaigns with message stats 1. Navigate to /analytics 2. Click Campaigns tab 3. Observe Delivery Funnel visualization Funnel displays 4 stages: Sent (100%), Delivered (e.g., 95%), Read (e.g., 42%), Failed (e.g., 3%). Each stage shows count and percentage of previous stage. Color coding: green for success, red for failed High
ANA-029 Delivery Trend line chart shows daily delivery performance Logged in as Agent with analytics:read permission, campaigns sent over 7+ days 1. Navigate to /analytics 2. Click Campaigns tab 3. Set date range to last 7 days 4. Scroll to Delivery Trend chart Line chart displays 3 lines: Delivered (green), Read (blue), Failed (red) by date. X-axis shows day labels, Y-axis shows message count. Hover shows exact values Medium
ANA-030 Template Performance Table ranks templates by engagement Logged in as Agent with analytics:read permission, 5+ templates used in campaigns 1. Navigate to /analytics 2. Click Campaigns tab 3. Scroll to Template Performance Table Table shows: Template Name, Used Count, Delivered, Read, Delivery Rate (%), Read Rate (%). Sorted descending by Read Rate (best performers first) High
ANA-031 Filter Campaign metrics by date range Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Click Campaigns tab 3. Change date range from "7d" to "month" 4. Observe KPIs and tables refresh All campaign metrics (KPIs, funnel, performance table, trend, template performance) refresh without page reload. Data reflects selected month only High
ANA-032 Campaigns tab with no campaign activity Logged in as Agent with analytics:read permission, no campaigns sent in date range 1. Navigate to /analytics 2. Click Campaigns tab 3. Set date range to future with no activity Campaign Performance Table shows "No campaigns in this period." Template Performance Table empty. KPIs show 0 or "—". Delivery Funnel shows 0 for all stages Medium
ANA-033 Sort Campaign Performance Table by Delivery Rate Logged in as Agent with analytics:read permission, Campaign Performance Table visible 1. Navigate to /analytics 2. Click Campaigns tab 3. Click "Delivery Rate" column header Campaigns sort descending by delivery rate (best performers first). Click again sorts ascending. Sort indicator appears on header Medium

Contacts Tab

IDTest CasePreconditionsStepsExpected ResultPriority
ANA-034 Load Contacts tab with Contact KPIs Logged in as Agent with analytics:read permission, contacts imported/created 1. Navigate to /analytics 2. Click Contacts tab 3. Set date range to last 30 days Contact KPIs widget displays: Total Contacts, Active Contacts (opt-in), Opt-out Rate (%), New Contacts (in period). Contact Growth Chart loads showing cumulative contact count over time High
ANA-035 Contact Growth Chart displays cumulative growth Logged in as Agent with analytics:read permission, contact history spanning 30+ days 1. Navigate to /analytics 2. Click Contacts tab 3. Set date range to last 30 days 4. Scroll to Contact Growth Chart Line chart shows cumulative contact count ascending over time. X-axis shows dates, Y-axis shows total contact count. No data gaps unless no activity on specific days High
ANA-036 Opt-in/Opt-out Trend chart shows daily changes Logged in as Agent with analytics:read permission, contacts with opt-in/opt-out history 1. Navigate to /analytics 2. Click Contacts tab 3. Set date range to 30 days 4. Scroll to Opt-in/Opt-out Trend Stacked bar chart shows daily opt-in count (green) and opt-out count (red). X-axis shows dates. Tooltip shows exact counts per day. Net growth calculated Medium
ANA-037 Contact Source Breakdown donut shows channel distribution Logged in as Agent with analytics:read permission, contacts from multiple sources (manual, import, form, API) 1. Navigate to /analytics 2. Click Contacts tab 3. Scroll to Contact Source Breakdown Donut chart segments show: Manual Add, CSV Import, Web Form, API, WhatsApp, etc. with percentages. Hover shows exact contact count per source. Legend identifies sources High
ANA-038 Tag Distribution widget shows most-used tags Logged in as Agent with analytics:read permission, contacts tagged with multiple tags 1. Navigate to /analytics 2. Click Contacts tab 3. Scroll to Tag Distribution widget Bar chart or list displays top 10 tags by contact count: Tag Name, Contact Count. Sorted descending by usage. Shows tag adoption across database Medium
ANA-039 Assignment Coverage shows agent-to-contact ratio Logged in as Agent with analytics:read permission, agents assigned to contacts 1. Navigate to /analytics 2. Click Contacts tab 3. Scroll to Assignment Coverage widget Widget displays: Assigned Contacts, Unassigned Contacts, Assignment Coverage (%). Pie chart shows ratio. Identifies coverage gaps if >20% unassigned Medium
ANA-040 Filter Contacts metrics by date range Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Click Contacts tab 3. Change date range to "month" 4. Observe KPIs and charts refresh Contact KPIs, Growth Chart, Opt-in/Opt-out Trend, and other widgets refresh without reload. Data reflects new date range High
ANA-041 Contacts tab with no contacts in org Logged in as Agent with analytics:read permission, zero contacts created 1. Navigate to /analytics 2. Click Contacts tab Contact KPIs show 0 for all metrics. Growth Chart flat line at 0. Other charts display empty states. Message appears: "No contacts yet. Import or create contacts to get started." Medium
ANA-042 Export Contacts analytics (if feature exists) Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Click Contacts tab 3. Look for Export button If export button exists: clicking exports data as CSV or PDF. File downloads with timestamp in filename (e.g., contacts_analytics_2026-04-17.csv). Success toast shown Low

Date Range & Refresh Controls

IDTest CasePreconditionsStepsExpected ResultPriority
ANA-043 Refresh button updates all analytics data Logged in as Agent with analytics:read permission, on any analytics tab 1. Navigate to /analytics 2. Wait 30 seconds 3. Click Refresh button (circular arrow icon) if visible All widgets and charts reload immediately. Loading spinner appears briefly. Data refreshes to latest values. Timestamp shows refresh time Medium
ANA-044 URL query parameter persists selected tab Logged in as Agent with analytics:read permission 1. Navigate to /analytics?tab=campaigns 2. Refresh page Campaigns tab remains selected after refresh. URL query parameter ?tab=campaigns persists. Browser back/forward works correctly Medium
ANA-045 URL query parameter persists date range Logged in as Agent with analytics:read permission 1. Navigate to /analytics?start=2026-01-01&end=2026-03-31 2. Refresh page Custom date range persists in URL and UI. Charts show data for specified range. URL parameters remain intact Low
ANA-046 Preset date change updates all tabs Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Go to Overview tab 3. Change date range to "30d" 4. Click to Conversations tab Date range "30d" is applied to Conversations tab as well. All tabs share the same date range state. Change in one tab applies globally High
ANA-047 Manual date picker validates end date after start date Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Click date range selector 3. Select Custom 4. Enter start: 2026-03-01 5. Enter end: 2026-02-01 (before start) 6. Click Apply Error message appears: "End date must be after start date." Apply button remains disabled. Date range not applied Medium
ANA-048 Manual date picker limits maximum range to 365 days Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Click date range selector 3. Select Custom 4. Enter start: 2025-01-01 5. Enter end: 2026-04-17 (>365 days) 6. Click Apply Warning or info message appears: "Date range is limited to 365 days." Dates auto-adjust to fit limit, or Apply button disables. Final range ≤365 days Low

Permission & Multi-Tenancy

IDTest CasePreconditionsStepsExpected ResultPriority
ANA-049 Agent cannot access analytics if no analytics:read permission Logged in as user with role lacking analytics:read permission 1. Try to navigate to /analytics Page is blocked. Toast or error message: "You don't have permission to view analytics." Redirect to dashboard or home High
ANA-050 Admin can access all agent/team performance data Logged in as Admin with analytics:read permission 1. Navigate to /analytics 2. Click Conversations tab 3. Observe Agent Performance Table and Team Rollup Table Admin sees all agents and teams in organization. No filtering or redaction. Tables display all rows without access restrictions High
ANA-051 Only org_id data appears in analytics Logged in as Agent in Org A, WhatsApp account linked 1. Navigate to /analytics 2. Check all visible data (messages, campaigns, contacts, conversations) All metrics reflect only data from Org A. No data leakage from Org B or other orgs. API filters by org_id automatically High
ANA-052 Agent from Org A cannot see Org B analytics Logged in as Agent in Org A, Org B exists with different admin 1. Attempt to access /analytics?org_id= (if URL allows org switching) OR 2. Verify API call to /analytics/overview includes own org_id only Either: (a) URL org_id param is ignored and own org_id used, or (b) 403 Forbidden if different org specified. No Org B data visible High

API & Data Validation

IDTest CasePreconditionsStepsExpected ResultPriority
ANA-053 Overview endpoint returns OverviewStats schema Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Open browser DevTools Network tab 3. Check GET /analytics/overview request Response status 200. Response body includes: total_messages_sent, total_conversations, automation_rate, active_conversations fields. Schema matches OverviewStats model Medium
ANA-054 Message volume endpoint accepts period parameter Logged in as Agent with analytics:read permission 1. Open browser console or DevTools 2. Call API with ?period=weekly 3. Call again with ?period=monthly Both requests return 200. Data aggregated by week/month. Invalid period like ?period=yearly returns 400 Bad Request Medium
ANA-055 Campaign stats endpoint returns zero fields if no campaigns Logged in as Agent with analytics:read permission, no campaigns sent 1. Navigate to /analytics 2. Click Campaigns tab 3. Observe CampaignStats response Response returns CampaignStats with total_sent: 0, total_delivered: 0, total_read: 0, total_failed: 0, no error. Null fields are omitted or set to 0 Medium
ANA-056 Agent performance endpoint filters by org_id Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Click Conversations tab 3. Observe Agent Performance Table data Agent Performance Table shows only agents in current org_id. No agents from other orgs visible. Query parameters include org_id filter High
ANA-057 Team performance endpoint returns team rollup data Logged in as Agent with analytics:read permission, 2+ teams 1. Navigate to /analytics 2. Click Conversations tab 3. Scroll to Team Rollup Table Team Rollup Table displays one row per team. API /analytics/teams returns TeamPerformanceResponse with teams array. Each team record includes team_name, total_conversations, avg_response_time High
ANA-058 Response times endpoint returns trend data Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Click Conversations tab 3. Observe SLA Compliance Trend chart SLA Compliance Trend chart renders daily/hourly compliance %. API /analytics/response-times returns ResponseTimeTrendResponse with data points. No errors in console Medium

Error Handling & Edge Cases

IDTest CasePreconditionsStepsExpected ResultPriority
ANA-059 Analytics page handles API timeout gracefully Logged in as Agent with analytics:read permission, API latency >10s 1. Navigate to /analytics 2. Observe loading state 3. Wait for timeout Loading spinner shows for up to 30 seconds. If API fails: error toast appears "Failed to load analytics data. Please try again." Retry button appears. Page remains interactive Medium
ANA-060 Missing WhatsApp account shows empty analytics Logged in as Agent with analytics:read permission, no WhatsApp account configured 1. Navigate to /analytics 2. Observe all tabs All metrics show 0 or "—". Empty state message: "No WhatsApp account connected. Connect an account in Settings to start collecting analytics." Link to Settings provided Medium
ANA-061 Widget Settings persists across logout/login Logged in as Agent, widgetized analytics settings saved 1. Navigate to /analytics 2. Hide a widget via Settings 3. Log out 4. Log in as same user 5. Go to /analytics Same widget remains hidden. Widget visibility preferences persisted in localStorage and restored on login Low
ANA-062 Analytics handles special characters in data (campaign names, flow names) Logged in as Agent with analytics:read permission, campaign/flow with special chars (emoji, quotes, unicode) 1. Navigate to /analytics 2. Click Campaigns or Bot Performance tab 3. Observe tables with special character names Names display correctly without encoding errors. Donut charts, tables, and charts render without breaking. No console errors Low
ANA-063 Large dataset (10,000+ contacts, 1000+ conversations) loads without freezing Logged in as Agent in large org with 10K+ contacts, 1K+ conversations 1. Navigate to /analytics 2. Click Contacts tab 3. Observe Contact Growth Chart 4. Click Conversations tab 5. Observe Agent Performance Table Charts and tables render responsively within 3 seconds. No page freeze or white screen. Lazy loading or pagination used for large tables. Console shows no memory warnings Low
ANA-064 Analytics respects timezone settings (if implemented) Logged in as Agent with custom timezone set 1. Navigate to /analytics 2. Observe date labels on charts 3. Check KPI timestamps Dates and times on charts match user's timezone setting (not server timezone). Daily/weekly boundaries align with user's midnight/week start. If no timezone setting exists: UTC displayed consistently Low

Widget Settings Panel

IDTest CasePreconditionsStepsExpected ResultPriority
ANA-065 Widget Settings panel opens from gear icon Logged in as Agent with analytics:read permission, on Overview tab 1. Navigate to /analytics 2. Look for Settings (gear) icon in tab header 3. Click it Widget Settings panel slides in from right side. Panel title: "Widget Settings". List of all 4 Overview widgets with toggle switches. Close button (X) in top-right High
ANA-066 Widget Settings panel shows all tab widgets Logged in as Agent, on Conversations tab 1. Navigate to /analytics 2. Click Conversations tab 3. Click Settings icon Panel lists all 6 Conversations widgets: Response Time KPIs, SLA Compliance Trend, Conversation Volume Trend, Agent Performance Table, Team Rollup Table, Resolution Time. Each has toggle switch High
ANA-067 Widget toggle persists per tab independently Logged in as Agent with analytics:read permission 1. Navigate to /analytics 2. Go to Overview tab 3. Hide "Message Volume Chart" 4. Go to Campaigns tab 5. Hide "Delivery Trend" 6. Return to Overview tab Message Volume Chart remains hidden on Overview. Go to Campaigns: Message Volume Chart is visible there (independent setting). Settings do not cross-pollinate between tabs Medium
ANA-068 Minimum one widget must stay visible (if enforced) Logged in as Agent, on Overview tab with 1 widget enabled 1. Click Settings icon 2. Attempt to toggle off the last remaining visible widget Toggle disabled/greyed out OR warning message: "At least one widget must be visible." Last widget cannot be hidden Low
ANA-069 Widget Settings panel closes on Escape key Logged in as Agent with Widget Settings panel open 1. Press Escape key Panel slides out to the right. Backdrop fades. Focus returns to main tab content Low
ANA-070 Click outside Widget Settings panel closes it Logged in as Agent with Widget Settings panel open 1. Click on backdrop (grey area outside panel) Panel closes. Backdrop disappears. Medium

Real-time Updates (if WebSocket supported)

IDTest CasePreconditionsStepsExpected ResultPriority
ANA-071 New conversation appears in metrics without refresh Logged in as Agent on Analytics > Conversations tab, colleague sends/receives message in separate window 1. Observe Conversation Volume metric 2. Have colleague send message to org's WhatsApp number 3. Wait 2-3 seconds without refreshing Conversation count updates in real-time. Agent Performance table updates if applicable. No manual refresh needed. Timestamp shows update occurred Low
ANA-072 Campaign delivery metric updates live Logged in as Agent on Analytics > Campaigns tab, campaign sending in background 1. Observe Delivery Rate KPI 2. Trigger campaign send (or observe ongoing campaign) 3. Watch metrics Delivery Rate, Sent count, Delivered count update in real-time as messages are sent/delivered. Charts refresh without page reload Low

Performance & Load Time

IDTest CasePreconditionsStepsExpected ResultPriority
ANA-073 Analytics page loads in <3 seconds on fast network Logged in as Agent with analytics:read permission, 4G/LTE connection or better 1. Open DevTools Network tab 2. Navigate to /analytics 3. Observe Time to Interactive (TTI) Page interactive within 3 seconds. All tabs render within 5 seconds total. Network waterfall shows no slow requests. Hero KPIs visible within 2 seconds High
ANA-074 Analytics loads gracefully on slow 3G network Logged in as Agent, browsing on 3G connection 1. Open DevTools → Network tab → set throttling to Slow 3G 2. Navigate to /analytics Page begins rendering within 5 seconds. KPI cards visible first (high priority). Charts load after (lower priority). No white screen or stalled loading Medium