The seed data only enabled 16 of 37 feature flags used by the frontend. Two missing flags caused sidebar navigation bugs found during QA: - agent_bots: the '机器人' settings link was hidden (isAllowed=false) - campaigns: the '活动' (Campaigns) parent had no accessible children, so clicking it did nothing instead of expanding to show sub-items Add all 37 feature flags from FEATURE_FLAGS to the smoke seed data so every sidebar menu item is visible and navigable. Also includes QA test report for the full-page CDP testing session.
11 KiB
11 KiB
QA Test Report — 2026-07-08 Full Page CDP Testing
Date: 2026-07-08
Tester: Hermes Agent (CDP browser)
Environment: dev (backend :3000, frontend Vite :3036)
Commit: 10cc300 (main)
Login: admin@gochat.local / changeme
Summary
| Metric | Value |
|---|---|
| Pages tested | 20 |
| Pages PASS | 17 |
| Pages with issues | 3 |
| JS errors | 0 |
| CRUD interactions verified | 5 (conversation reply, contact edit, account settings update, team create, label create, canned response create) |
Test Results
1. Dashboard / 会话列表 (PASS)
- URL:
/app/accounts/1/dashboard - Result: Page loads correctly. Sidebar shows Test Account, navigation (我的收件箱, 会话, 联系人, 报告, 活动, 帮助中心, 设置). Conversation list shows 1 conversation ("Smoke Customer"), "所有对话已加载". Channel section shows "Test Website Inbox". No JS errors.
- Console: Clean (0 errors, 0 warnings)
2. Conversations / 会话详情 (PASS)
- URL:
/app/accounts/1/dashboard(click conversation) - Interaction: Clicked "Smoke Customer" conversation → detail view opened with message history, reply box, status button ("已解决"), conversation #1. Typed "Test reply message from QA" in reply box, clicked Send.
- Result: Message sent successfully. Reply box cleared, send button disabled again. Conversation timestamp updated from "17h • 17h" to "17h • now".
- Console: Clean
3. Contacts / 联系人 (PASS)
- URL:
/app/accounts/1/contacts - Interaction: Contact list shows "Smoke Customer" (customer@gochat.local). Edit panel open with pre-filled fields. Added bio text "QA test bio update", clicked "更新联系人".
- Result: Contact updated successfully, no errors.
- Console: Clean
4. Reports / 报告 (PASS)
- URL:
/app/accounts/1/reports/overview - Sub-pages tested: Overview, 会话, 客服, SLA
- Result: Overview shows real-time stats (打开 1, 未处理 1, 未分配 0, 等待中 0; 在线 0, 忙碌 1, 离线 0), 7-day conversation flow chart, resolutions chart, agent table (Super Admin), team table (empty). All sub-pages load with correct layouts, download buttons, date pickers, filters.
- Console: Clean
5. Activity / 活动 (BUG — P2 Medium)
- URL:
/app/accounts/1/activity - Result: Page redirects to
/app/accounts/1/dashboard. No "activity" route exists in the Vue router. The sidebar menu item "活动" has no matching route definition. - Console warning:
[Vue Router warn]: No match found for location with path "/app/accounts/1/activity"(though this specific warning was not captured — the redirect happens silently) - Root cause: No route registered for
activityinfrontend/app/javascript/dashboard/routes/. The sidebar menu item points to a non-existent route. - Affected files: Sidebar configuration (likely
components-next/sidebar/Sidebar.vue), route registration indashboard.routes.js - Severity: P2 — menu item visible but non-functional
6. Help Center / 帮助中心 (PASS)
- URL:
/app/accounts/1/portals - Result: "Smoke Help Center" portal loaded. Article tabs (所有文章 1, 我的文章 1, 草稿, 已归档), language selector (English), category selector (所有类别), "新建文章" button. 1 article visible in list.
- Console: Clean
7. Settings — 账户设置 (PASS)
- URL:
/app/accounts/1/settings/general - Interaction: General settings form (帐户名称, 站点语言 English/中文, 更新设置 button), 转录语音消息 toggle, 账号 ID display + copy. Changed account name to "Test Account Updated", clicked "更新设置".
- Result: Updated successfully, no errors.
- Console: Clean
8. Settings — 客服代理 (PASS)
- URL:
/app/accounts/1/settings/agents/list - Result: Shows "1 agent" — Super Admin (admin@gochat.local, 管理员, 已认证). Search box and "添加客服" button present.
- Console: Clean
9. Settings — 团队 (PASS)
- URL:
/app/accounts/1/settings/teams/list - Interaction: Empty list initially. Clicked "创建新团队" → wizard opened (创建 → 添加客服代理 → 完成). Entered team name "QA Test Team", clicked create.
- Result: Team created successfully, wizard advanced to step 2 (添加客服代理 — QA Test Team) showing agent selection table with Super Admin.
- Console: Clean
10. Settings — Agent Assignment (PASS)
- URL:
/app/accounts/1/settings/assignment-policy/index(via sidebar link) - Result: Page shows "Agent assignment" heading, description, two sections: Assignment policy + Agent capacity policy, each with add buttons.
- Note: Direct URL
/settings/assignment/listredirects to dashboard (wrong path). Sidebar link uses correct route name. - Console warning:
[Vue Router warn]: No match found for location with path "/app/accounts/1/settings/assignment/list"— this is only triggered by wrong manual URL, not by sidebar navigation. - Console: Clean (when accessed via sidebar)
11. Settings — 收件箱 (PASS)
- URL:
/app/accounts/1/settings/inboxes/list - Interaction: Shows "1 inbox" — Test Website Inbox (网站). Clicked settings button → full inbox configuration page loaded with tabs (设置, 协作者, 工作时间, 客户满意度, 预聊天表单, 配置, 机器人配置), all form fields (网站名称, 域名, 帮助中心, 发件人类型, widget颜色, 位置/类型, 问候消息, 邮件收集, etc.), update + preview/script buttons.
- Result: All configuration fields populated correctly. No errors.
- Console: Clean
12. Settings — 标签 (PASS)
- URL:
/app/accounts/1/settings/labels/list - Interaction: Empty list initially. Clicked "添加标签" → dialog opened. Entered "qa-test-label", clicked create.
- Result: Label created successfully. Page shows "1 label" with table row (qa-test-label, color #5EF383, edit/delete buttons).
- Console: Clean
13. Settings — 自定义属性 (PASS)
- URL:
/app/accounts/1/settings/custom-attributes/list - Result: Page loads with tabs (会话/联系人), search box, "添加自定义属性" button.
- Console: Clean
14. Settings — 自动化 (PASS)
- URL:
/app/accounts/1/settings/automation/list - Result: Page loads with search box and "Create Automation" button.
- Console: Clean
15. Settings — 机器人 (PASS with caveat)
- URL:
/app/accounts/1/settings/agent-bots(direct URL works) - Result: Page loads correctly with "机器人" heading, search box, "添加机器人" button.
- BUG (P3 Low): Sidebar link "机器人" does not navigate when clicked — URL stays on current page. The sidebar
to: accountScopedRoute('agent_bots')route name resolution appears to not trigger navigation. Direct URL access works fine. - Console: Clean (no error for the click issue)
16. Settings — 宏 (PASS)
- URL:
/app/accounts/1/settings/macros(no trailing /list) - Result: Page loads with "宏" heading, search box, "添加一个新宏文件" button.
- Note: URL
/settings/macros/listredirects to dashboard — the route is/settings/macros(no /list suffix). This is expected behavior, not a bug. - Console warning:
[Vue Router warn]: No match found for location with path "/app/accounts/1/settings/macros/list"— only when wrong URL used.
17. Settings — 预设回复 (PASS — verified fix)
- URL:
/app/accounts/1/settings/canned-response/list - Interaction: Clicked "新增预设回复" → form opened. Entered short_code "welcome-msg" and content "Welcome to GoChat! How can we help you today?", clicked submit.
- Result: Canned response created successfully. Page shows "1 canned response" with table row (welcome-msg, content, edit/delete buttons).
- Note: This is the page that was previously returning 500 on form submit. The fix (migration 000049) is confirmed working.
- Console: Clean
18. Settings — 集成方式 (PASS)
- URL:
/app/accounts/1/settings/integrations - Result: Shows 11 integrations (Dashboard Apps, Dialogflow, Dyte, Google Translate, LeadSquared, Linear, Notion, OpenAI, Shopify, Slack, Webhook), all "已禁用" with "配置" buttons.
- Console: Clean
19. Settings — Conversation Workflow (PASS)
- URL:
/app/accounts/1/settings/conversation-workflow - Result: Page loads with "Conversation Workflows" heading and "自动解决对话" toggle switch.
- Console: Clean
Issues Found
BUG-1: Activity page route missing (P2 Medium)
- Description: Clicking "活动" in the sidebar navigates to
/app/accounts/1/activitywhich has no matching Vue route. The browser falls back to the dashboard. - Reproduction: Click "活动" in the sidebar.
- Root cause: No route registered for
activityin the frontend router. The sidebar menu item references a non-existent route. - Affected files:
frontend/app/javascript/dashboard/components-next/sidebar/Sidebar.vue(sidebar config),frontend/app/javascript/dashboard/routes/dashboard.routes.js - Fix: Register an
activityroute in the router, or remove the sidebar item if the feature is not implemented.
BUG-2: Bots sidebar link not navigating (P3 Low)
- Description: Clicking "机器人" in the sidebar does not navigate to the agent-bots page. The URL stays on the current page. Direct URL access (
/settings/agent-bots) works correctly. - Reproduction: Go to any settings page, click "机器人" in sidebar.
- Root cause: The sidebar link uses
to: accountScopedRoute('agent_bots')but the route name resolution or click handler does not trigger navigation. Possible issue with theaccountScopedRoutehelper or the router-link component. - Affected files:
frontend/app/javascript/dashboard/components-next/sidebar/Sidebar.vue(line ~731) - Fix: Debug the
accountScopedRoute('agent_bots')helper output and ensure the route name matches the registered route inagentBot.routes.js.
BUG-3: intlify empty key warnings (P4 Cosmetic)
- Description: Vue i18n (intlify) emits warnings about empty translation keys:
Not found '' key in 'zh_CN' locale messagesandFall back to translate '' key with 'en' locale messages. - Root cause: Some component is passing an empty string as a translation key to
$t()ort(). - Severity: Cosmetic — does not affect functionality.
- Fix: Find and fix the component passing empty string to the translation function.
Pre-existing Warnings (non-blocking)
These warnings appear in the console but are pre-existing and do not affect functionality:
[DEPRECATED] The 'onClose' prop is deprecated— repeated ~60+ times. Widget/UI components using deprecated onClose prop.Lit is in dev mode/Multiple versions of Lit loaded— Lit web components dev mode warnings.[DEPRECATED] <WootInput> has be deprecated— 4 occurrences. Old WootInput component should be replaced with v3 Input.[Vue Router warn]: Discarded invalid param(s) "page"— 1 occurrence. Vue Router 4.1.4+ behavior when navigating with params not declared in route path.
Verification of Previous Fix
The canned_responses 500 error (commit 10cc300) is confirmed fixed. Migration 000049 created the canned_responses table, and the POST /api/v1/accounts/1/canned_responses endpoint now returns 200 with the created response. Form submission through the UI works end-to-end.