Trường Số QA/Regression
Trường Số · QA test suite · Phase 1 · 10/09/2026

Regression pack

The minimal set to rerun after every fix: every case flagged for regression (all P0 blockers plus the P1 cases that guard money, attendance, permissions, tenancy and the ten decisions) and the end-to-end flows. Run in the order below; module pages hold the full steps.

Key facts, origin and limits
Cases
177
Flows
14
P0 / P1 / P2
132 / 45 / 0
Estimated time
12 h manual

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.

1Run order

  1. Tenancy, roles and shell (00) and security cases from 12.
  2. Settings (10) so catalogs, roles and branches exist.
  3. Students (02), Classes (03), Attendance (04).
  4. Finance (05) and Communication (07).
  5. Admissions (01) conversion into the above.
  6. Reports (09) reconciliation last, then the flows.

2Cases

00 · Shell, tenancy, roles and decisions (17)

IDTitlePriorityTypeTraceRun 1
TS-OVW-001Sidebar shows the target navigation tree in the specified orderP1functional00 §5 navigation map, D8Not run
TS-OVW-002Each sidebar item routes to the specified pathP1functional00 §5, D8Not run
TS-OVW-003Legacy /crm/settings/* routes redirect to /settingsP1functional00 §5 route prefix note, 10 §3Not run
TS-OVW-004Existing CRM routes remain under /crm and old bookmarks keep workingP1regressionD8Not run
TS-OVW-008Branch switcher lists exactly the user's accessible branchesP0functionalD1, 00 §3Not run
TS-OVW-009Switching branch filters every branch-scoped listP0functionalD1, 02 §5 Chi nhánh columnNot run
TS-OVW-012Branch-A user cannot read branch-B rows by URLP0security12 §3 authorisation, 00 §3Not run
TS-OVW-013Default roles exist and are lockedP1functionalD2, 10 §4 default rolesNot run
TS-OVW-016Viewer role is read-only everywhereP1security10 §4 viewerNot run
TS-OVW-017Permission change takes effect on the next request without re-loginP1functional00 §4, 10 SET-03, test seed 00/10Not run
TS-OVW-018Stub PermissionGate is removed: Kanban actions respect real permissionsP0security00 §6 known inconsistenciesNot run
TS-OVW-020D3: every new module ships a table view and no boardP1ui-uxD3Not run
TS-OVW-021D4: an enrolled student always has a FLYER learner profileP0functionalD4, 02 STU-02Not run
TS-OVW-022D5: sessions are materialised rowsP1functionalD5, 03 §6Not run
TS-OVW-025D9: switching locale to en translates every visible stringP1i18nD9, 12 §8Not run
TS-OVW-028Unauthenticated access redirects to login and backP0security11 §1 auth 401 redirectsNot run
TS-OVW-030Onboarding checklist appears for a new tenantP1functional10 SET-01Not run

01 · Admissions CRM (22)

IDTitlePriorityTypeTraceRun 1
TS-ADM-001Create a lead with guardian and prospective learner blockP0functionalADM-01Not run
TS-ADM-002Duplicate check by phone still blocks on createP0regressionADM-01, 01 §6 rule 1Not run
TS-ADM-011Callback queue orders overdue, today, upcomingP0functionalADM-02Not run
TS-ADM-012One-click Gọi opens the quick-log dialog preselected; logging removes the rowP0functionalADM-02Not run
TS-ADM-017Mark do-not-call with reasonP0functionalADM-03Not run
TS-ADM-019Quick-log-call guard on a DNC leadP0functionalADM-03, 01 §6 rule 4Not run
TS-ADM-023Book a trial into a real sessionP0functionalADM-04Not run
TS-ADM-026No trial seats left returns 409 NO_TRIAL_SEATSP0negativeADM-04, 01 §6 rule 3Not run
TS-ADM-029Trial status updates when the teacher marks attendanceP0flowADM-04, ATT-07Not run
TS-ADM-035Placement test status labels match the API enumP0i18nADM-05, 00 §6 inconsistencyNot run
TS-ADM-036Create a placement test without a linked learner and submit manual scoresP0functionalADM-05Not run
TS-ADM-042Wizard step 1: learner and branchP0functionalADM-06 step 1Not run
TS-ADM-044Wizard step 2: guardian prefill and consentP0functionalADM-06 step 2Not run
TS-ADM-046Wizard step 3: class picker filtered by branch shows seats and scheduleP0functionalADM-06 step 3Not run
TS-ADM-048Wizard step 3: discount above consultant limit shows "Cần duyệt"P0functionalADM-06 step 3, 05 §6 discount limitsNot run
TS-ADM-051Confirm conversion creates all records in one transactionP0flowADM-06 ThenNot run
TS-ADM-052Conversion atomicity: failure in step 3 leaves nothingP0negativeADM-06 failure, test seed 01Not run
TS-ADM-055Converting the same prospect twice is blockedP0negative01 §6 rule 2Not run
TS-ADM-056Discount above limit: approval request created, sessions not creditedP0functionalADM-06, FIN-02, test seed 01Not run
TS-ADM-061Transfer a lead to another branchP1functionalADM-07Not run
TS-ADM-063Sources settings page reads and writes the APIP0functionalADM-08Not run
TS-ADM-064Channels settings page reads and writes the APIP0functionalADM-08Not run

02 · Students (SIS) (18)

IDTitlePriorityTypeTraceRun 1
TS-STU-001Student list header, tabs and countsP0functionalSTU list §5Not run
TS-STU-003Row formatting rulesP1ui-ux02 §5 notesNot run
TS-STU-005Search by name without accents, guardian phone, code, usernameP0functionalSTU-01Not run
TS-STU-007Empty state textP1ui-ux02 §5 empty stateNot run
TS-STU-010Teacher sees only students of own classesP0security02 §9 students.view own classesNot run
TS-STU-012Create a walk-in student with all required fieldsP0functionalSTU-02, 12 §8 phoneNot run
TS-STU-019Profile header and right railP0functional02 §5 profileNot run
TS-STU-023Add a second guardian with flagsP0functionalSTU-03Not run
TS-STU-030Enroll a Waiting student from the profileP0functionalSTU-04Not run
TS-STU-033Pause a student (Bảo lưu)P0functionalSTU-05Not run
TS-STU-036Resume asks for the class and re-activatesP0functionalSTU-05 resume, 02 §11 pause overlapping expiryNot run
TS-STU-037Pausing a Waiting student is an invalid transitionP1negative02 §3 lifecycle, 02 §8 409Not run
TS-STU-038Withdraw with reason shows refund estimateP0functionalSTU-06Not run
TS-STU-041Transfer a student to another branch with package balanceP0functionalSTU-07Not run
TS-STU-044Học tập empty stateP1ui-uxSTU-08 emptyNot run
TS-STU-047Upload a document with typeP1functionalSTU-09, 12 §3 uploadsNot run
TS-STU-049Flagged note appears on roster and attendance sheet for teachersP0functionalSTU-09, 02 §6 rule 8Not run
TS-STU-052Anonymise a withdrawn studentP0functionalSTU-10, 12 §4 deletionNot run

03 · Classes and scheduling (19)

IDTitlePriorityTypeTraceRun 1
TS-CLS-001Create a course with extension fieldsP0functionalCLS-01Not run
TS-CLS-003Class form step 1 fields and auto valuesP0functionalCLS-02, 03 §5 formNot run
TS-CLS-005Step 2 preview lists generated sessions and conflictsP0functionalCLS-02, 03 §8 dry_runNot run
TS-CLS-006Create class generates sessions and appears in the listP0functionalCLS-02Not run
TS-CLS-010Room conflict shown inline with override for permitted rolesP0functionalCLS-03Not run
TS-CLS-011Teacher conflict is checked across branchesP0functionalCLS-03, 03 §6 teacher conflict any branchNot run
TS-CLS-014Edit one session marks it adjustedP0functionalCLS-04Not run
TS-CLS-015Apply to following regenerates future planned sessions onlyP0functionalCLS-04, 03 §6 regenerationNot run
TS-CLS-017Concurrent session edit returns STALEP1edge03 §11 optimistic concurrencyNot run
TS-CLS-018Cancel a session with make-up appendedP0functionalCLS-05Not run
TS-CLS-021Assign a substituteP0functionalCLS-06Not run
TS-CLS-023Add student to class up to capacity then waiting listP0functionalCLS-07Not run
TS-CLS-025Transfer class ends and starts on the same dayP0functionalCLS-07 transfer, 04 §10 transferred out on the dateNot run
TS-CLS-029Book a make-up into another class of the same levelP0functionalCLS-08Not run
TS-CLS-032Timetable week grid by roomP0functionalCLS-09Not run
TS-CLS-039Close a classP0functionalCLS-10Not run
TS-CLS-041Class list tabs, columns and status chipsP0functional03 §5 class listNot run
TS-CLS-043Class list empty stateP1ui-ux03 §5 emptyNot run
TS-CLS-046Regenerate never touches held or cancelled sessionsP0functional03 §6 rules 1–2Not run

04 · Attendance (18)

IDTitlePriorityTypeTraceRun 1
TS-ATT-001Teacher today list on mobileP0functionalATT §4 /teach/todayNot run
TS-ATT-002Open the sheet: all rostered students default to Có mặtP0functionalATT-01Not run
TS-ATT-004Mark exceptions and save in one requestP0functionalATT-01Not run
TS-ATT-008Offline save is queued and syncedP0functionalATT-01 offlineNot run
TS-ATT-010Version conflict between main and substituteP0edge04 §10 two teachers, 04 §4 conflict stateNot run
TS-ATT-013Teacher edit after 24 h is blockedP0negative04 §5 rule 4Not run
TS-ATT-014Teacher can mark only own sessionsP0security04 §8 attendance.mark own sessionsNot run
TS-ATT-018Add an excuse in advance pre-marks Có phépP0functionalATT-02Not run
TS-ATT-022Absent triggers ZNS within 2 minutes with the exact templateP0functionalATT-03Not run
TS-ATT-026Guardian without consent: skipped with reason and fallbackP0functionalATT-03 fallback, 04 §10 guardian without consentNot run
TS-ATT-028Quiet hours hold non-urgent, evening absence sends immediatelyP1edge04 §5 rule 6Not run
TS-ATT-031Admin correction after the session day requires reason and writes auditP0functionalATT-04Not run
TS-ATT-035Unmarked tab lists sessions ended > 2 hP0functionalATT-05Not run
TS-ATT-040Two consecutive absences create a follow-up taskP0functionalATT-06Not run
TS-ATT-042Trial and make-up rows at the bottom under KháchP0functionalATT-07Not run
TS-ATT-045Attendance report by classP1functionalATT-08Not run
TS-ATT-046Attendance rate formula checkP0functional04 §5 rule 7Not run
TS-ATT-050Absent consumes per tenant settingP0functional04 §5 rule 5, FIN-07Not run

05 · Tuition and finance (26)

IDTitlePriorityTypeTraceRun 1
TS-FIN-001Add fee plans of each type to a courseP0functionalFIN-01Not run
TS-FIN-004Create an invoice from a fee plan with QRP0functionalFIN-02Not run
TS-FIN-005Invoice total formula with line discount, invoice discount and VATP0functional05 §6 rule 1Not run
TS-FIN-006Discount above role limit sets pending approvalP0functionalFIN-02Not run
TS-FIN-007Approve and reject a pending invoiceP0functional05 §8 approve/rejectNot run
TS-FIN-010Session package credits on full payment by defaultP0functionalFIN-02 Then, 05 §6 rule 4Not run
TS-FIN-014Invoice list KPI tiles and tabsP0functional05 §5 Học phíNot run
TS-FIN-019Bulk monthly billing preview and commit with prorationP0functionalFIN-03Not run
TS-FIN-021Record a cash payment and issue a numbered receiptP0functionalFIN-04Not run
TS-FIN-022Partial cash paymentP0functionalFIN-04 partialNot run
TS-FIN-023Overpayment refusedP0negative05 §6 rule 2Not run
TS-FIN-025Receipt numbering is sequential under concurrencyP0edge05 §6 rule 3, test seed 05Not run
TS-FIN-027Void a payment keeps the number and requires reasonP0functional05 §6 rule 3, 05 §8 payments voidNot run
TS-FIN-031SePay transfer with payment code auto-matchesP0functionalFIN-05Not run
TS-FIN-032Transfer without code lands in Chưa đối soátP0functionalFIN-05Not run
TS-FIN-033Manual match of an unmatched transfer to an invoiceP0functionalFIN-05, 05 §11 early payment creditNot run
TS-FIN-035Duplicate SePay webhook dedupedP0edge05 §11 dedupeNot run
TS-FIN-037Debt list aging buckets and columnsP0functionalFIN-06Not run
TS-FIN-040Debt reconciliation with invoice listP0functionalREP-02 style reconciliationNot run
TS-FIN-041Package consumption FIFO by expiry and low-balance alert at 3P0functionalFIN-07Not run
TS-FIN-046Refund estimate on withdrawalP1functionalFIN-08Not run
TS-FIN-047Credit note and refund with approval thresholdP0functionalFIN-08Not run
TS-FIN-049Create an expense and see it in the cash bookP1functionalFIN-10Not run
TS-FIN-051Daily cash close with differenceP1functionalFIN-10, 05 §6 rule 10Not run
TS-FIN-055Finance report tiles and reconciliationP0functionalFIN-12, REP-02Not run
TS-FIN-058Every money write is audited with before/afterP0security05 §6 rule 11, 12 §6Not run

06 · Teachers and staff (P2 smoke) (4)

IDTitlePriorityTypeTraceRun 1
TS-STF-001Create a staff record with account and teaching roleP0functionalSTF-01Not run
TS-STF-006Contract with pay rule; overlap refused; expiry warningP1functionalSTF-03Not run
TS-STF-008Generate monthly timesheet from held sessionsP0functionalSTF-05, 06 §6 rulesNot run
TS-STF-011Approve locks lines; export payroll xlsxP0functionalSTF-07Not run

07 · Parent communication (11)

IDTitlePriorityTypeTraceRun 1
TS-COM-001Zalo OA connection card and template registryP0functionalCOM-01Not run
TS-COM-002Secrets masked after saveP0security12 §3 secretsNot run
TS-COM-005Transactional message per event, per guardian flagP0functionalCOM-02, 07 §6 rule 1Not run
TS-COM-008Message log columns, filters and empty stateP1functional07 §5 message logNot run
TS-COM-016Teacher class note to parents via OA/push onlyP1functionalCOM-04Not run
TS-COM-018Announcement composer with audience preview and unreachable listP1functionalCOM-03Not run
TS-COM-022Progress report batch: draft, comment, publish, PDFP1functionalCOM-05Not run
TS-COM-024Parent OTP login and children switcherP0functionalCOM-06Not run
TS-COM-025Portal login error states and rate limitsP1negative07 §5 login, 12 §3 rate limitsNot run
TS-COM-026Portal invoice with QR and post-payment updateP1flowCOM-07Not run
TS-COM-029Portal shows only linked childrenP0security12 §3 parents see only linked learnersNot run

08 · Inventory (P2 smoke) (4)

IDTitlePriorityTypeTraceRun 1
TS-INV-001Create a catalog item; duplicate SKU rejectedP0functionalINV-01Not run
TS-INV-002Stock-in document increases on-hand and becomes read-onlyP0functionalINV-02Not run
TS-INV-003Issue to a student creates a finance lineP0functionalINV-03Not run
TS-INV-004Insufficient stock blocks the issueP0negativeINV-03Not run

09 · Reports and dashboards (8)

IDTitlePriorityTypeTraceRun 1
TS-REP-001Executive dashboard layout and filtersP0functional09 §3Not run
TS-REP-003Every tile drills down to the matching filtered listP0functionalREP-01, 09 §3 drill-downNot run
TS-REP-004Money tiles reconcile with cash book and invoice listP0functionalREP-02Not run
TS-REP-005Student counts reconcile with list countsP0functionalREP-02, test seed 09Not run
TS-REP-014Demo mode only in the admissions section for empty tenantsP1functional09 §10 demo modeNot run
TS-REP-015Role home: academic adminP1functional09 §4Not run
TS-REP-020Report library page patternP1functional09 §5Not run
TS-REP-022Export above 5,000 rows runs as a job with a signed linkP1functionalREP-04Not run

10 · Settings and administration (13)

IDTitlePriorityTypeTraceRun 1
TS-SET-001Settings left sub-navigation lists every page in orderP0functional10 §3Not run
TS-SET-002Settings navigation is role-filteredP1security10 §9Not run
TS-SET-004Invite a user with role and branchesP0functionalSET-02Not run
TS-SET-005Accept an invitation creates membershipsP0flowSET-02, D2 derived school roleNot run
TS-SET-009Deactivate and reactivate a userP0functional10 §4 deactivationNot run
TS-SET-010Last owner cannot be removed or deactivatedP0negative10 §6 last owner, 12 §5Not run
TS-SET-014Clone Giáo vụ into Lễ tân and remove a permissionP0functionalSET-03Not run
TS-SET-020Branch profile fields persist and are used on receipts and messagesP0functionalSET-04Not run
TS-SET-021Add a branch creates a school and updates the switcherP0functionalSET-05Not run
TS-SET-024Tenant profile persistsP0functional10 §2 tenant not persistedNot run
TS-SET-026Generic master-data page behaviour (levels, rooms, job titles, expense categories)P1functional10 §6 generic MasterDataPageNot run
TS-SET-028Finance settings: receipt prefix, discount limits, thresholds, VAT defaults, credit rule, refund policyP0functional10 §6 Tài chínhNot run
TS-SET-033Audit log viewer filters and diffP0functionalSET-06Not run

11 · Data model, API and imports (8)

IDTitlePriorityTypeTraceRun 1
TS-DAT-001List endpoints paginate with the standard envelopeP1functional11 §1 envelopes, 12 §2 limit ≤ 200Not run
TS-DAT-004Cross-tenant ids return 404 on every new /v3/school endpointP0security12 §3 authorisation, test seed 00/10Not run
TS-DAT-005Tenant is resolved from the token, not from client idsP0security12 §3Not run
TS-DAT-008Import templates per entity download with allowed valuesP0functional11 §4 templatesNot run
TS-DAT-010Validation preview with errors, warnings, error file, skip toggleP0functional11 §4 validation previewNot run
TS-DAT-015Dedupe strategies for students: skip, merge, overwriteP0functional11 §4 dedupeNot run
TS-DAT-017Rollback within 24 h when unmodifiedP1functional11 §4 rollbackNot run
TS-DAT-018Full import order on Empty CenterP0flow11 §4 import orderNot run

12 · Non-functional requirements (9)

IDTitlePriorityTypeTraceRun 1
TS-NFR-005Login lockout after 5 failuresP1security12 §3 rate limitsNot run
TS-NFR-009Security headers presentP1security12 §3 application securityNot run
TS-NFR-010Server-side permission checks (UI hiding is not relied on)P0security12 §3 authorisationNot run
TS-NFR-014Consent captured at every guardian entry pointP0security12 §4 Art. 11, 12 §11Not run
TS-NFR-020Mandatory audited actions all write entriesP0security12 §6, 12 §11Not run
TS-NFR-023Date and time formatsP1i18n12 §8Not run
TS-NFR-026No raw i18n keys anywhereP1i18n12 §8Not run
TS-NFR-029axe run with zero serious violations on main screensP1a11y12 §11Not run
TS-NFR-031Keyboard walkthrough of the daily loopP1a11y12 §9, 12 §11Not run

3Flows

IDFlowPriorityPhaseSteps
TS-FLW-01Lead to first payment (the daily loop)P0P19
TS-FLW-02Walk-in student without a leadP0P14
TS-FLW-03Pause and returnP0P15
TS-FLW-04Withdrawal with refundP0P1/P26
TS-FLW-05Teacher substitutionP0P1/P24
TS-FLW-06Branch transfer of a student with package balanceP1P1/P25
TS-FLW-07Multi-branch user dayP1P15
TS-FLW-08Role escalation attemptsP0P18
TS-FLW-09Month closeP1P1/P26
TS-FLW-10Class lifecycleP0P16
TS-FLW-11Absence follow-up loopP1P15
TS-FLW-12Onboarding an empty tenant to first attendanceP0P15
TS-FLW-13Invoice and payment reversalsP0P15
TS-FLW-14Parent portal journeyP1P25

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