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
Cases
27
P0 / P1
4 / 17
Regression pack
8
PRD
09 Reports and dashboards
Phase
P1

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.json and runs/run-1/, and every result field is still not_run.
  • Cases inherit any open question or inconsistency in the PRDs they trace to.

1Summary

P0
4
P1
17
P2
5
P3
1
Typefunctionalui-uxedgenegativeregressionflowa11yperfsecurityi18n
Count17320101111

2Test cases

IDTitleTypePriorityPhasePreconditionsStepsExpected resultPRD traceData neededRun 1
TS-REP-001Executive dashboard layout and filtersfunctionalP0P1As U-OWNER on /dashboard, period This month, All branches.
  1. Read the page.
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 §3Fixtures belowNot run
TS-REP-002Widgets load independently with skeletons within 1.5 sperfP1P1Throttle one widget endpoint in the stub.
  1. Load /dashboard.
Other tiles render while the slow one shows a skeleton; no whole-page spinner; p95 ≤ 1.5 s for the rest.REP-01, 12 §2Fixtures belowNot run
TS-REP-003Every tile drills down to the matching filtered listfunctionalP0P1Dashboard.
  1. Click each tile in turn and read the URL.
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-downFixtures belowNot run
TS-REP-004Money tiles reconcile with cash book and invoice listfunctionalP0P1Dashboard this month, branch A.
  1. Compare Thực thu with /finance/cashbook type Thu total; Doanh thu with invoice list created this month excluding void; Công nợ quá hạn with /finance/debt total.
All three equal to the VND.REP-02Fixtures belowNot run
TS-REP-005Student counts reconcile with list countsfunctionalP0P1Dashboard.
  1. Compare Học viên đang học with /students tab Đang học count; Nghỉ học with withdrawn-in-period count.
Equal.REP-02, test seed 09Fixtures belowNot run
TS-REP-006Churn rate formulafunctionalP1P1Seeded: 100 active at period start, 5 withdrawn in period.
  1. Read Nghỉ học tile.
5 with rate "5%" (withdrawn / active at start).09 §3 Nghỉ họcFixtures belowNot run
TS-REP-007Fill rate formulafunctionalP1P1Active classes: C1 11/12, C2 12/12.
  1. Read Tỷ lệ lấp đầy for branch A with only these active.
23/24 = 95,8%.09 §3 Tỷ lệ lấp đầyFixtures belowNot run
TS-REP-008Compare to previous period shows deltasfunctionalP1P1Compare toggle on.
  1. Read any tile.
Delta in percent with sign and colour (green up for revenue, red up for churn); tooltip lists value and delta.09 §3 chart rulesFixtures belowNot run
TS-REP-009Branch table row switches the branch filterfunctionalP1P1Dashboard All branches.
  1. Click row Thủ Đức.
Branch filter becomes Thủ Đức and all tiles refresh.09 §3 tableFixtures belowNot run
TS-REP-010Chart rules: purple primary, grey comparison, no pie > 5 slicesui-uxP2P1Dashboard.
  1. Inspect charts.
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 rulesFixtures belowNot run
TS-REP-011Period boundary in tenant timezoneedgeP1P1Payment at 23:50 on the last day of last month (ICT).
  1. Select period Last month.
Payment included in last month, not this month.09 §10Fixtures belowNot run
TS-REP-012Void recomputes the daily aggregateedgeP1P1Void a payment from 3 days ago.
  1. Reload the dashboard.
Thực thu decreases by the voided amount; cash book agrees.09 §10 voided paymentsFixtures belowNot run
TS-REP-013Branch with zero data shows zeros, not blanksui-uxP1P1Branch C (no data).
  1. Select Gò Vấp.
Tiles show "0" / "0 đ"; charts render empty axes; no NaN or "-".09 §10Fixtures belowNot run
TS-REP-014Demo mode only in the admissions section for empty tenantsfunctionalP1P1Tenant EMPTY.
  1. Open /dashboard.
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 modeFixtures belowNot run
TS-REP-015Role home: academic adminfunctionalP1P1As U-ACAD-A.
  1. Open /dashboard.
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 §4Fixtures belowNot run
TS-REP-016Role home: accountantfunctionalP1P1As U-ACC.
  1. Open /dashboard.
Today's payments, unmatched transfers (sp-002), invoices pending approval (INV-5), overdue by bucket, cash close status per branch, e-invoice failures.09 §4Fixtures belowNot run
TS-REP-017Role home: teacherfunctionalP1P1As U-TEACH.
  1. Open /dashboard.
Today's sessions, unmarked sessions (SES-YEST), my week, students needing attention (S6 low balance, absences), FLYER assignments due; no other teachers' data.09 §4Fixtures belowNot run
TS-REP-018Role home: admissions keeps sale cards plus trials and callbacksregressionP1P1As U-ADM.
  1. Open /dashboard.
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 §4Fixtures belowNot run
TS-REP-019Executive dashboard denied to roles without reports.executivesecurityP1P1As U-ACAD-A and U-TEACH.
  1. GET /v3/school/dashboard/executive.
403; UI shows the role home instead.09 §8Fixtures belowNot run
TS-REP-020Report library page patternfunctionalP1P2As U-OWNER /reports.
  1. Open Lấp đầy lớp.
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 §5Fixtures belowNot run
TS-REP-021Saved filters per user via view-configsfunctionalP2P2Report Lấp đầy lớp.
  1. Set branch A + level Movers; Lưu bộ lọc; reload.
Filters restored; another user does not see them.09 §5 Lưu bộ lọcFixtures belowNot run
TS-REP-022Export above 5,000 rows runs as a job with a signed linkfunctionalP1P2Report with 20,000 rows (Big Center students).
  1. Click Xuất Excel.
Toast "Đang tạo tệp"; job id polled; notification with signed link within 60 s; audit entry for personal-data export.REP-04Fixtures belowNot run
TS-REP-023Weekly digest contentfunctionalP2P2Digest enabled; clock Monday 07:30.
  1. Trigger the digest; open /reports/digest.
Email to owner and branch managers with last week numbers per branch and links; same content on the page.REP-03Fixtures belowNot run
TS-REP-024Attendance report in library uses the same rate formula as the modulefunctionalP1P2C1 last 30 days.
  1. Compare /reports Chuyên cần theo lớp with /attendance report.
Identical numbers.09 §5 attendanceFixtures belowNot run
TS-REP-025Dashboard keyboard and focusa11yP2P1Dashboard.
  1. Tab through tiles.
Each tile is a focusable link with a visible ring; Enter drills down.12 §9Fixtures belowNot run
TS-REP-026Dashboard in en localei18nP2P1en.
  1. Open /dashboard.
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 §8Fixtures belowNot run
TS-REP-027Dashboard at 1024 pxui-uxP3P11024 viewport.
  1. Open /dashboard.
Tiles reflow to 2 columns; charts resize; no horizontal page scroll.12 §9Fixtures belowNot run

Trường Số (truongso.net) · FLYER internal