Trường Số QA/09 Reports and dashboards
Trường Số · QA test suite · Phase 1 · 10/09/2026
09 · Reports and dashboards
Test cases for PRD 09. Every case names the fixture data it needs (see the dashboard fixtures table), numbered steps, and one observable expected result. Trace points to the user story or rule in the PRD.
Key facts, origin and limits
Drafted by an AI assistant in a single session on 10/09/2026 as part of the Trường Số QA suite, under the request quoted verbatim on the dashboard. A proposal for team review, not a sign-off.
Sources
- The Trường Số PRD set (Draft v1, 10/09/2026): user stories, screen tables, business rules and permission matrices, plus the Cloud theme reference.
Limits
- Phase 1 (authoring) only. Cases are executed in Phase 2 against the local build; results are recorded in
testcases.jsonandruns/run-1/, and every result field is stillnot_run. - Cases inherit any open question or inconsistency in the PRDs they trace to.
1Summary
P0
4
P1
17
P2
5
P3
1
| Type | functional | ui-ux | edge | negative | regression | flow | a11y | perf | security | i18n |
|---|---|---|---|---|---|---|---|---|---|---|
| Count | 17 | 3 | 2 | 0 | 1 | 0 | 1 | 1 | 1 | 1 |
2Test cases
| ID | Title | Type | Priority | Phase | Preconditions | Steps | Expected result | PRD trace | Data needed | Run 1 |
|---|---|---|---|---|---|---|---|---|---|---|
| TS-REP-001 | Executive dashboard layout and filters | functional | P0 | P1 | As U-OWNER on /dashboard, period This month, All branches. |
| Filters branch, period (this week, this month, last month, this quarter, custom), compare toggle; rows: Money (Doanh thu lập hoá đơn, Thực thu, Công nợ quá hạn with aging mini-bars, Chi phí), Students (Học viên đang học, Nhập học mới, Nghỉ học, Sắp hết buổi / hết hạn), Classes (Tỷ lệ lấp đầy, Chuyên cần, Buổi chưa điểm danh), Admissions (Khách mới stacked by source, Chuyển đổi, pipeline value and funnel), charts Thu theo ngày and Học viên theo tháng, table Theo chi nhánh; each tile shows value, delta vs previous period, link. | 09 §3 | Fixtures below | Not run |
| TS-REP-002 | Widgets load independently with skeletons within 1.5 s | perf | P1 | P1 | Throttle one widget endpoint in the stub. |
| Other tiles render while the slow one shows a skeleton; no whole-page spinner; p95 ≤ 1.5 s for the rest. | REP-01, 12 §2 | Fixtures below | Not run |
| TS-REP-003 | Every tile drills down to the matching filtered list | functional | P0 | P1 | Dashboard. |
| Doanh thu → /finance/tuition?created=...; Thực thu → /finance/cashbook?type=in; Công nợ → /finance/debt; Chi phí → /finance/cashbook?type=out; Đang học → /students?status=active; Nhập học mới → /students?enrolled_from=; Nghỉ học → /students?status=withdrawn; Sắp hết → /students?low_balance=1; Lấp đầy → /classes?tab=active; Chuyên cần → /attendance?tab=report; Chưa điểm danh → /attendance?tab=unmarked; Khách mới → /crm/customers?created=; Chuyển đổi → /crm/customers?status=won; the same period is applied on landing. | REP-01, 09 §3 drill-down | Fixtures below | Not run |
| TS-REP-004 | Money tiles reconcile with cash book and invoice list | functional | P0 | P1 | Dashboard this month, branch A. |
| All three equal to the VND. | REP-02 | Fixtures below | Not run |
| TS-REP-005 | Student counts reconcile with list counts | functional | P0 | P1 | Dashboard. |
| Equal. | REP-02, test seed 09 | Fixtures below | Not run |
| TS-REP-006 | Churn rate formula | functional | P1 | P1 | Seeded: 100 active at period start, 5 withdrawn in period. |
| 5 with rate "5%" (withdrawn / active at start). | 09 §3 Nghỉ học | Fixtures below | Not run |
| TS-REP-007 | Fill rate formula | functional | P1 | P1 | Active classes: C1 11/12, C2 12/12. |
| 23/24 = 95,8%. | 09 §3 Tỷ lệ lấp đầy | Fixtures below | Not run |
| TS-REP-008 | Compare to previous period shows deltas | functional | P1 | P1 | Compare toggle on. |
| Delta in percent with sign and colour (green up for revenue, red up for churn); tooltip lists value and delta. | 09 §3 chart rules | Fixtures below | Not run |
| TS-REP-009 | Branch table row switches the branch filter | functional | P1 | P1 | Dashboard All branches. |
| Branch filter becomes Thủ Đức and all tiles refresh. | 09 §3 table | Fixtures below | Not run |
| TS-REP-010 | Chart rules: purple primary, grey comparison, no pie > 5 slices | ui-ux | P2 | P1 | Dashboard. |
| Primary series brand purple, comparison grey; axis labels 11.5 px; no 3D; Khách mới by source uses stacked bars not a pie when > 5 sources. | 09 §3 chart rules | Fixtures below | Not run |
| TS-REP-011 | Period boundary in tenant timezone | edge | P1 | P1 | Payment at 23:50 on the last day of last month (ICT). |
| Payment included in last month, not this month. | 09 §10 | Fixtures below | Not run |
| TS-REP-012 | Void recomputes the daily aggregate | edge | P1 | P1 | Void a payment from 3 days ago. |
| Thực thu decreases by the voided amount; cash book agrees. | 09 §10 voided payments | Fixtures below | Not run |
| TS-REP-013 | Branch with zero data shows zeros, not blanks | ui-ux | P1 | P1 | Branch C (no data). |
| Tiles show "0" / "0 đ"; charts render empty axes; no NaN or "-". | 09 §10 | Fixtures below | Not run |
| TS-REP-014 | Demo mode only in the admissions section for empty tenants | functional | P1 | P1 | Tenant EMPTY. |
| Admissions section shows the existing demo data with a "Dữ liệu mẫu" label; other sections show the onboarding checklist and zeros; no fake money numbers. | 09 §10 demo mode | Fixtures below | Not run |
| TS-REP-015 | Role home: academic admin | functional | P1 | P1 | As U-ACAD-A. |
| Widgets: today's sessions with unmarked count, waiting students by level (S3 under Movers), classes near capacity (C1), classes ending in 14 days, parent requests open, substitute needed; no money tiles. | 09 §4 | Fixtures below | Not run |
| TS-REP-016 | Role home: accountant | functional | P1 | P1 | As U-ACC. |
| Today's payments, unmatched transfers (sp-002), invoices pending approval (INV-5), overdue by bucket, cash close status per branch, e-invoice failures. | 09 §4 | Fixtures below | Not run |
| TS-REP-017 | Role home: teacher | functional | P1 | P1 | As U-TEACH. |
| Today's sessions, unmarked sessions (SES-YEST), my week, students needing attention (S6 low balance, absences), FLYER assignments due; no other teachers' data. | 09 §4 | Fixtures below | Not run |
| TS-REP-018 | Role home: admissions keeps sale cards plus trials and callbacks | regression | P1 | P1 | As U-ADM. |
| Existing "Việc tôi cần làm hôm nay" cards and today plan; new cards Học thử tuần này and Gọi lại quá hạn (L4). | 09 §4 | Fixtures below | Not run |
| TS-REP-019 | Executive dashboard denied to roles without reports.executive | security | P1 | P1 | As U-ACAD-A and U-TEACH. |
| 403; UI shows the role home instead. | 09 §8 | Fixtures below | Not run |
| TS-REP-020 | Report library page pattern | functional | P1 | P2 | As U-OWNER /reports. |
| Title, filter bar with Cloud dropdown buttons, totals row, sticky header table, pagination 100, buttons Xuất Excel and Lưu bộ lọc. | 09 §5 | Fixtures below | Not run |
| TS-REP-021 | Saved filters per user via view-configs | functional | P2 | P2 | Report Lấp đầy lớp. |
| Filters restored; another user does not see them. | 09 §5 Lưu bộ lọc | Fixtures below | Not run |
| TS-REP-022 | Export above 5,000 rows runs as a job with a signed link | functional | P1 | P2 | Report with 20,000 rows (Big Center students). |
| Toast "Đang tạo tệp"; job id polled; notification with signed link within 60 s; audit entry for personal-data export. | REP-04 | Fixtures below | Not run |
| TS-REP-023 | Weekly digest content | functional | P2 | P2 | Digest enabled; clock Monday 07:30. |
| Email to owner and branch managers with last week numbers per branch and links; same content on the page. | REP-03 | Fixtures below | Not run |
| TS-REP-024 | Attendance report in library uses the same rate formula as the module | functional | P1 | P2 | C1 last 30 days. |
| Identical numbers. | 09 §5 attendance | Fixtures below | Not run |
| TS-REP-025 | Dashboard keyboard and focus | a11y | P2 | P1 | Dashboard. |
| Each tile is a focusable link with a visible ring; Enter drills down. | 12 §9 | Fixtures below | Not run |
| TS-REP-026 | Dashboard in en locale | i18n | P2 | P1 | en. |
| Tile labels Billed revenue, Collected, Overdue debt, Expenses, Active students, New enrollments, Withdrawals, Low balance / expiring, Fill rate, Attendance, Unmarked sessions, New leads, Conversion; money with "," separators. | 12 §8 | Fixtures below | Not run |
| TS-REP-027 | Dashboard at 1024 px | ui-ux | P3 | P1 | 1024 viewport. |
| Tiles reflow to 2 columns; charts resize; no horizontal page scroll. | 12 §9 | Fixtures below | Not run |
Trường Số (truongso.net) · FLYER internal