Trường Số QA suite
Test-case suite for Trường Số Phase 1, authored from the PRD set and its ten decisions, in the persona of an unforgiving end user of a premium product. Every case is executable unaided: fixtures are named, steps are numbered, and each expected result states the exact text, count, state or URL.
Key facts, origin and limits
Agent #3 — QA / QC. Act as the dedicated QA/QC agent for Agent #2. Create 100% of the required test cases covering all implemented functionality. Test every feature that Agent #2 builds. Test the product from the perspective of a real end user. Use Apple Tester Standard as the testing standard/persona. Perform comprehensive functional, UI/UX, edge-case, regression, and user-flow testing.
Drafted by an AI assistant in a single session on 10/09/2026 from the Trường Số PRD set (13 PRDs, glossary, test plan seed) and its ten decisions awaiting ratification, plus the Cloud theme reference.
This is a proposal for team review, not a sign-off.
Sources
- The Trường Số PRD set (13 PRDs, glossary, test plan seed, Draft v1 of 10/09/2026) and its ten decisions awaiting ratification.
- The Cloud theme reference at roadmap.flyer.us/cloudtheme.
Limits
- Phase 1 (authoring) is complete; Phase 2 (execution against the local build, with recorded results and bug reports) has not started, so every result field is still
not_run. - Cases inherit any open question or inconsistency in the PRDs they trace to.
Run 1 results (placeholder). Filled in Phase 2 after the build handoff. The run page will live at
runs/run-1/and bugs atbugs/.Pass0Fail0Blocked0Not run558Bugs S1 / S20 / 0Go / no-goPendingModule Cases Pass Fail Blocked Not run Open bugs 00 Shell, tenancy, roles and decisions 33 0 0 0 33 0 01 Admissions CRM 74 0 0 0 74 0 02 Students (SIS) 61 0 0 0 61 0 03 Classes and scheduling 55 0 0 0 55 0 04 Attendance 57 0 0 0 57 0 05 Tuition and finance 67 0 0 0 67 0 06 Teachers and staff (P2 smoke) 17 0 0 0 17 0 07 Parent communication 35 0 0 0 35 0 08 Inventory (P2 smoke) 14 0 0 0 14 0 09 Reports and dashboards 27 0 0 0 27 0 10 Settings and administration 39 0 0 0 39 0 11 Data model, API and imports 27 0 0 0 27 0 12 Non-functional requirements 38 0 0 0 38 0 Flows 14 0 0 0 14 0
1Totals
By module
| PRD | Module | Cases | P0 | P1 | P2 | P3 | Regression | Phase |
|---|---|---|---|---|---|---|---|---|
| 00 | Shell, tenancy, roles and decisions | 33 | 6 | 21 | 6 | 0 | 17 | P1 |
| 01 | Admissions CRM | 74 | 22 | 35 | 15 | 2 | 22 | P1 |
| 02 | Students (SIS) | 61 | 13 | 35 | 12 | 1 | 18 | P1 |
| 03 | Classes and scheduling | 55 | 17 | 20 | 18 | 0 | 19 | P1 |
| 04 | Attendance | 57 | 16 | 34 | 7 | 0 | 18 | P1 |
| 05 | Tuition and finance | 67 | 23 | 30 | 14 | 0 | 26 | P1 |
| 06 | Teachers and staff (P2 smoke) | 17 | 3 | 11 | 2 | 1 | 4 | P2 |
| 07 | Parent communication | 35 | 5 | 19 | 11 | 0 | 11 | P1 |
| 08 | Inventory (P2 smoke) | 14 | 4 | 8 | 2 | 0 | 4 | P2 |
| 09 | Reports and dashboards | 27 | 4 | 17 | 5 | 1 | 8 | P1 |
| 10 | Settings and administration | 39 | 12 | 20 | 7 | 0 | 13 | P1 |
| 11 | Data model, API and imports | 27 | 6 | 16 | 5 | 0 | 8 | P1 |
| 12 | Non-functional requirements | 38 | 3 | 22 | 9 | 4 | 9 | P1 |
| seed | End-to-end flows | 14 | 9 | 5 | 0 | 0 | 14 | P1 |
| Total | 558 | 143 | 293 | 113 | 9 | 191 |
By type
| functional | ui-ux | edge | negative | regression | flow | a11y | perf | security | i18n |
|---|---|---|---|---|---|---|---|---|---|
| 310 | 28 | 36 | 50 | 8 | 20 | 12 | 7 | 65 | 22 |
2Pages
33 cases · 6 P0 · P1
74 cases · 22 P0 · P1
61 cases · 13 P0 · P1
55 cases · 17 P0 · P1
57 cases · 16 P0 · P1
67 cases · 23 P0 · P1
17 cases · 3 P0 · P2
35 cases · 5 P0 · P1
14 cases · 4 P0 · P2
27 cases · 4 P0 · P1
39 cases · 12 P0 · P1
27 cases · 6 P0 · P1
38 cases · 3 P0 · P1
14 scripted journeys with 78 checkpoints
177 cases + 14 flows to rerun after every fix
Severity S1 to S4, fields, filled example, JSON schema
All 558 cases and flows, machine-readable, with a result block per case; suite-meta.json holds fixtures and totals
3Fixtures referenced by the cases
Every preconditions field names one or more of these. The Phase 2 HANDOFF must seed them (or map them to its own seed) before execution; any fixture that cannot be mapped blocks the cases that reference it.
| Key | Definition |
|---|---|
Tenant BIG | Seeded tenant "Big Center": branches A (Quận 1, code Q1), B (Thủ Đức, code TD), C (Gò Vấp, code GV); timezone Asia/Ho_Chi_Minh; locale vi default. |
Tenant EMPTY | Seeded tenant "Empty Center": one branch, zero students, zero classes, zero invoices; owner account only. |
U-OWNER | owner role, scope all, member of all branches; email owner@bigcenter.test. |
U-BM-A | branch_manager role, branch A only. |
U-ADM | admissions role, scope own; assigned to leads L1, L4. |
U-ACAD-A | academic_admin role, branch A only. |
U-ACC | accountant role, all branches. |
U-TEACH | teacher role; main teacher of class C1 (branch A) and C3 (branch B); staff record T1. |
U-TEACH2 | teacher role; staff record T2; no classes; used as substitute. |
U-VIEWER | viewer role; read-only. |
G1 | Guardian "Trần Thị Hoa", phone 0901234567, mother of S1 (branch A) and S2 (branch B); Zalo consent granted; payer and primary contact for both. |
G2 | Guardian "Lê Văn Nam", phone 0912000002, father of S6; NO Zalo consent, has email nam@test.vn. |
L1 | Open lead "Phạm Thu Hà" phone 0987000001, stage Tiềm năng, assigned U-ADM, prospect learner "Phạm Minh" birth year 2018, level Starters. |
L2 | Won lead phone 0987000002 already converted once (prospect key p1 converted to S9); second prospect p2 not converted. |
L3 | Lead phone 0987000003 marked do-not-call with reason "Khách yêu cầu". |
L4 | Lead phone 0987000004 with call logged callback_requested at yesterday 15:00 (overdue), assigned U-ADM. |
S1 | Student "Nguyễn An", code HV-000123, age 8, Active in C1, package FP3 with 5 sessions remaining, expiry in 3 months; flagged note "Dị ứng đậu phộng". |
S2 | Student "Nguyễn Bình", HV-000124, Active in C3 (branch B), monthly plan. |
S3 | Student "Trần Chi", HV-000125, Waiting (Chờ xếp lớp), branch A, level Movers. |
S4 | Student "Lê Dũng", HV-000126, Paused since 10 days ago, expected return in 20 days, was in C1. |
S5 | Student "Hoàng Em", HV-000127, Withdrawn 30 days ago, reason "chuyển nhà". |
S6 | Student "Phan Giang", HV-000128, Active in C1, package with 2 sessions remaining (low balance). |
S7 | Student "Vũ Hạnh", HV-000129, Active in C2, invoice INV-3 overdue 45 days, 3,000,000 remaining. |
S8 | Adult learner "Đỗ Khoa", HV-000130, age 20, self as contact, phone 0933000008. |
C1 | Class "Movers 2A", code MOV-2609-01, branch A, T3/T5 18:00-19:30, room P.201, teacher T1, capacity 12, 11 enrolled, trial seats 2, allow_trial true, 48 planned sessions, 20 held. |
C2 | Class "Starters 1B", code STA-2609-01, branch A, full 12/12, waiting list 1. |
C3 | Class "Movers 1C", branch B, teacher T1, T2/T4 17:00-18:30. |
C4 | Class "Flyers 3", branch A, scheduled, start date 14 days ahead, 0 enrolled. |
C5 | Class "Starters 0Z", branch A, completed 60 days ago. |
ROOMS | Branch A rooms: P.201 (cap 12), P.202 (cap 8), "Trực tuyến" virtual. Branch B: B.101. |
SES-TODAY | C1 session today 18:00-19:30, planned, no sheet. |
SES-YEST | C1 session yesterday 18:00-19:30, ended, no sheet (unmarked). |
SES-PAST | C1 session 7 days ago, held, sheet saved by T1 (10 present, 1 late 10 min, 1 absent S6). |
SES-B | C3 session tomorrow 17:00-18:30 at branch B, teacher T1. |
FP1 | Fee plan one_time "Movers 2 trọn khoá" 48 buổi 9,600,000 VND, VAT 0, on course "Movers 2". |
FP2 | Fee plan monthly "Theo tháng" 1,200,000 VND/month. |
FP3 | Fee plan session_package "Gói 24 buổi" 6,000,000 VND, validity 6 months. |
MAT1 | Material "Sách Family and Friends 2" 180,000 VND, VAT 5%. |
INV-1 | Invoice for S1, FP1, total 9,600,000, unpaid, due in 7 days, payment_code TS1A0001, bank account BA1. |
INV-2 | Invoice for S2, 1,200,000, partial (paid 500,000), due in 3 days. |
INV-3 | Invoice for S7, 3,000,000, unpaid, due 45 days ago (overdue bucket 31-60). |
INV-4 | Invoice for S1 (materials), 180,000, paid in cash, receipt PT-Q1-202609-0001. |
INV-5 | Invoice for S3 with 20% discount created by U-ADM, status Chờ duyệt (pending_approval). |
BA1 | Branch A bank account "Vietcombank 0123456789" SePay-linked, active. CD-A: branch A cash drawer. |
ZALO | Zalo OA stub connected; templates attendance_absent, attendance_late, invoice_created, receipt, fee_reminder approved; schedule_change template status Chờ duyệt. |
SEPAY | SePay webhook stub: POST /api/stub/sepay with {amount, description, sepay_transaction_id}. |
4Method and coverage
- Coverage per PRD: every user story Given/When/Then, every validation rule in the screen tables, every permission row (positive for the granted role, negative for at least one denied role), every named empty and error state, vi/en parity, and the 1440 / 1024 / 390 breakpoints where the PRD defines a mobile flow.
- The ten decisions in the PRD hub are treated as requirements and tested in module 00 (D1 to D10).
- Types: functional, ui-ux, edge, negative, regression, flow, a11y, perf, security, i18n. Priorities: P0 blocker (release stops), P1 must pass before pilot, P2 should pass, P3 nice to have.
- Phase 2 modules (06 staff pay, 08 inventory, P2 parts of 05 and 07) are covered at smoke level so the suite is ready when they ship; their cases carry phase P2 and are skipped (status "skipped") when the module is flag-off in the build.
- Cloud theme conformance is checked against the reference at roadmap.flyer.us/cloudtheme: 292 px sidebar, 44 px table rows, 13.5 px base, #6A309B primary, four-colour status chips with text.
Trường Số (truongso.net) · FLYER internal