geocrop-platform./apps/nextgen/NextGen_Learning_UAT_Workbo...

48 KiB

1Test Case IDRequirement IDModule/FeatureTest Case TitleDescriptionPreconditionsTest StepsExpected ResultActual ResultStatusPriorityTest TypeUser RoleEnvironmentAssigned ToExecution DateDefect IDComments/Notes
2TC-LMS-001FR-LMS1Learning Management System (LMS) CoreTeacher uploads PDF lesson notesA teacher with valid credentials logs in and uploads a PDF lesson note for a specific subject and class.Teacher account created; class assigned; LMS accessible; PDF file (< 50MB) available1. Log in as teacher (teacher@school.com / teacher123). 2. Navigate to "Course Resources" via the sidebar. 3. Select an active subject (e.g. Mathematics). 4. Select the "Curriculum & Syllabus" sub-tab. 5. Select a PDF file (< 50MB) and drop it into the multi-file dropzone. 6. Verify the file uploads successfully and appears in the resources list.PDF file uploaded successfully; confirmation message displayed; file visible in course materialsstatus=201PassCriticalFunctionalTeacherWebuat-runner (post-merge dev tree)2026-07-29
3TC-LMS-002FR-LMS1Learning Management System (LMS) CoreTeacher uploads text-based lesson notesA teacher uploads lesson notes in text format (.txt or .docx) for a course.Teacher account created; class assigned; LMS accessible; text file available1. Log in as teacher (teacher@school.com / teacher123). 2. Navigate to "Course Resources" via the sidebar. 3. Select an active subject. 4. Drag a text or word document (.txt or .docx) and drop it into the multi-file dropzone. 5. Verify the file uploads successfully and appears in the resources list.Text file uploaded successfully; file visible in course materials; file format preservedstatus=201PassHighFunctionalTeacherWebuat-runner (post-merge dev tree)2026-07-29
4TC-LMS-003FR-LMS1Learning Management System (LMS) CoreTeacher creates structured course with multiple modulesA teacher creates a course with multiple modules, each containing lessons and resources.Teacher account created; LMS accessible; course template available1. Log in as teacher (teacher@school.com / teacher123). 2. Navigate to "My Courses" via the sidebar. 3. Click the "+ New Subject" button in the upper-right. 4. Enter subject name, class/section, weekly schedule, credits, and description. 5. Click "Save". 6. Verify the new subject card appears in the Curriculum Portfolio grid.Course created with all modules and lessons visible; course appears in teacher's course list; students can enrollstatus=201PassCriticalFunctionalTeacherWebuat-runner (post-merge dev tree)2026-07-29
5TC-LMS-004FR-LMS1Learning Management System (LMS) CoreTeacher uploads file exceeding size limitA teacher attempts to upload a file larger than the 50MB limit.Teacher account created; class assigned; LMS accessible; file > 50MB available1. Log in as teacher (teacher@school.com / teacher123). 2. Navigate to "Course Resources" via the sidebar. 3. Select a subject. 4. Drag/select a file larger than 50MB. 5. Verify that the upload is rejected and displays a "File size exceeds maximum limit of 50MB" alert.Upload rejected; error message displayed: 'File size exceeds maximum limit of 50MB'; file not storedstatus=413 body={"error":"File too large; limit is 20MB per file","code":"LIMIT_FILE_SIZE","limit_mb":20}PassHighFunctionalTeacherWebuat-runner (post-merge dev tree)2026-07-29
6TC-LMS-005FR-LMS2Learning Management System (LMS) CoreTeacher creates assignment with deadlineA teacher creates a homework assignment and sets a deadline for submission.Teacher account created; class assigned; LMS accessible; course created1. Log in as teacher (teacher@school.com / teacher123). 2. Navigate to "Assignments" in the sidebar. 3. Click the "+ New Assignment" button. 4. Fill in: Title, Description, Subject, Class, Points, and a future Due Date. 5. Select submission type: "File upload". 6. Click "Create Assignment". 7. Verify it appears in the assignments list.Assignment created; deadline visible to students; assignment appears in course materialsid=57PassCriticalFunctionalTeacherWebuat-runner (post-merge dev tree)2026-07-29
7TC-LMS-006FR-LMS2Learning Management System (LMS) CoreTeacher grades student assignment with qualitative feedbackA teacher reviews a submitted assignment and provides a grade with written feedback.Teacher account created; student assignment submitted; LMS accessible1. Log in as teacher (teacher@school.com / teacher123). 2. Navigate to "Assignments" in the sidebar. 3. Select an assignment with student submissions. 4. Select a student submission from the roster. 5. Enter a score (e.g. 85/100) and enter a qualitative feedback comment. 6. Click "Save Grade". 7. Verify status updates to "Graded" and feedback is saved.Grade recorded; feedback visible to student; grade appears in student's transcript; notification sent to studentgrade=200PassCriticalFunctionalTeacherWebuat-runner (post-merge dev tree)2026-07-29
8TC-LMS-007FR-LMS2Learning Management System (LMS) CoreTeacher creates assignment with rubricA teacher creates an assignment with a detailed grading rubric defining criteria and point allocations.Teacher account created; class assigned; LMS accessible1. Log in as teacher (teacher@school.com / teacher123). 2. Navigate to "Assignments" in the sidebar. 3. Click "+ New Assignment". 4. Scroll down and click "Add Rubric Criteria". 5. Enter criterion name (e.g. Clarity), description, and max points. 6. Click "Create Assignment". 7. Verify rubric details are saved and visible.Assignment created with rubric; rubric visible to students; teacher can grade using rubric criteriaid=58 has_rubric=truePassHighFunctionalTeacherWebuat-runner (post-merge dev tree)2026-07-29
9TC-LMS-008FR-LMS2Learning Management System (LMS) CoreTeacher modifies assignment after creationA teacher edits an assignment that has already been published to students.Teacher account created; assignment created and published; LMS accessible1. Log in as teacher (teacher@school.com / teacher123). 2. Navigate to "Assignments" in the sidebar. 3. Find a published assignment, click its options menu and click "Edit Assignment". 4. Modify the due date or description. 5. Click "Save Changes". 6. Verify updated details are displayed in the list.Changes saved; updated deadline/description visible to students; notification sent to students about changestatus=200PassMediumFunctionalTeacherWebuat-runner (post-merge dev tree)2026-07-29
10TC-LMS-009FR-LMS3Learning Management System (LMS) CoreStudent views course materials and lesson notesA student logs in and accesses lesson notes for their enrolled courses.Student account created; enrolled in course; lesson notes uploaded by teacher; LMS accessible1. Log in as student (student@school.com / student123). 2. Navigate to "Course Resources" in the sidebar. 3. Select the course. 4. Under "Curriculum & Syllabus" (or other sub-tabs), click the download icon next to the file. 5. Verify the file downloads or opens correctly.Lesson notes displayed or downloaded successfully; file format preserved; no errorsstatus=200PassCriticalFunctionalStudentWebuat-runner (post-merge dev tree)2026-07-29
11TC-LMS-010FR-LMS3Learning Management System (LMS) CoreStudent submits assignment before deadlineA student uploads a completed assignment before the deadline.Student account created; enrolled in course; assignment created by teacher; LMS accessible; assignment file ready1. Log in as student (student@school.com / student123). 2. Navigate to "Assignments" in the sidebar. 3. Select an active, ungraded assignment. 4. Drag a file into the upload zone and click "Submit Assignment". 5. Verify status changes to "Submitted" with a success banner.File uploaded successfully; submission timestamp recorded; confirmation message displayed; status shows 'Submitted'status=200PassCriticalFunctionalStudentWebuat-runner (post-merge dev tree)2026-07-29
12TC-LMS-011FR-LMS3Learning Management System (LMS) CoreStudent attempts to submit assignment after deadlineA student tries to submit an assignment after the deadline has passed.Student account created; enrolled in course; assignment deadline has passed; LMS accessible1. Log in as student (student@school.com / student123). 2. Navigate to "Assignments" in the sidebar. 3. Select an assignment whose due date has passed. 4. Verify that the file uploader and submit button are disabled or replaced with a "Deadline passed" notice.Submit button disabled or grayed out; message displayed: 'Assignment deadline has passed'; submission preventedstatus=403 body={"error":"Submission window has closed; allow_late_submission is off for this assignment","code":"SUBMISSION_WINDOW_CLOSED","due_date":"2026-07-22T18:24:06.425Z","allow_late_submission":false}PassHighFunctionalStudentWebuat-runner (post-merge dev tree)2026-07-29
13TC-LMS-012FR-LMS3Learning Management System (LMS) CoreStudent tracks assignment deadlineA student views upcoming assignment deadlines in their dashboard.Student account created; enrolled in course; assignments created by teacher; LMS accessible1. Log in as student (student@school.com / student123). 2. Look at the dashboard's "Upcoming Deadlines" or "Recent Assignments" panel. 3. Verify that assignments are listed in chronological order of due dates.All upcoming deadlines displayed with assignment titles and due dates; deadlines sorted chronologically; visual alerts for imminent deadlinesstatus=200 has_due=truePassHighFunctionalStudentWebuat-runner (post-merge dev tree)2026-07-29
14TC-LMS-013FR-LMS3Learning Management System (LMS) CoreStudent views grades and feedbackA student accesses their grades and teacher feedback for submitted assignments.Student account created; enrolled in course; assignment graded by teacher; LMS accessible1. Log in as student (student@school.com / student123). 2. Navigate to "Grades" via the sidebar. 3. Select a graded subject. 4. Verify the numerical score and the teacher's qualitative comments are visible.Grades displayed with teacher feedback; grade breakdown visible; feedback comments readable; no data corruptionentries=14 graded=truePassCriticalFunctionalStudentWebuat-runner (post-merge dev tree)2026-07-29
15TC-SMS-001FR-SMS1School Management System (SMS) CoreOperations admin creates teacher accountAn operations admin creates a new teacher account with appropriate role and permissions.Operations admin account created; LMS accessible; teacher details available1. Log in as administrator (admin@school.com / admin123). 2. Navigate to "Users" in the sidebar. 3. Click "+ New User". 4. Enter name, email, phone, and select Role: "Teacher". 5. Click "Save User". 6. Verify the user appears in the User list with "Teacher" role.Teacher account created; temporary password generated and sent to email; account appears in user list with 'Teacher' rolestatus=201PassCriticalFunctionalOperations AdminWebuat-runner (post-merge dev tree)2026-07-29
16TC-SMS-002FR-SMS1School Management System (SMS) CoreOperations admin creates student accountAn operations admin creates a new student account with appropriate role.Operations admin account created; LMS accessible; student details available1. Log in as administrator (admin@school.com / admin123). 2. Navigate to "Users" in the sidebar. 3. Click "+ New User". 4. Enter student name, email, phone, and select Role: "Student". 5. Click "Save User". 6. Verify the student appears in the list.Student account created; temporary password sent to parent email; account appears in user list with 'Student' rolestatus=201PassCriticalFunctionalOperations AdminWebuat-runner (post-merge dev tree)2026-07-29
17TC-SMS-003FR-SMS1School Management System (SMS) CoreTeacher cannot access finance moduleA teacher attempts to access the finance/accounting module and is denied.Teacher account created; LMS accessible; finance module exists1. Log in as teacher (teacher@school.com / teacher123). 2. Verify that there are no "Fees", "Expenses", or "Banking" links in the sidebar menu. 3. Manually type http://localhost:3000/fees or /finance/expenses in the URL bar. 4. Verify you are automatically redirected back to the teacher dashboard.Access denied; message displayed: 'You do not have permission to access this module'; redirect to teacher dashboardstatus=403PassCriticalSecurityTeacherWebuat-runner (post-merge dev tree)2026-07-29
18TC-SMS-004FR-SMS1School Management System (SMS) CoreFinance admin cannot modify attendance recordsA finance admin attempts to modify student attendance and is denied.Finance admin account created; LMS accessible; attendance module exists1. Log in as bursar (bursar@school.com / bursar123). 2. Verify that there is no "Take Attendance" or "Attendance History" link in the sidebar menu. 3. Manually type http://localhost:3000/attendance/take in the URL bar. 4. Verify you are automatically redirected back to the Finance Dashboard.Access denied; message displayed: 'You do not have permission to modify attendance'; action preventedstatus=403PassHighSecurityFinance AdminWebuat-runner (post-merge dev tree)2026-07-29
19TC-SMS-005FR-SMS1School Management System (SMS) CoreSchool Head views all school dataA school head can view comprehensive data across all modules (academic, finance, operations).School head account created; LMS accessible; data exists in all modules1. Log in as principal (principal@school.com / principal123). 2. In the sidebar, verify access to academic portals, reports, notice boards, and settings. 3. Click "Reports" and verify comprehensive analytics dashboard is loaded without restrictions.All modules accessible; comprehensive data visible; no access restrictions; school-level analytics displayeddash=200 cls=200PassCriticalFunctionalSchool HeadWebuat-runner (post-merge dev tree)2026-07-29
20TC-SMS-006FR-SMS2School Management System (SMS) CoreTeacher marks daily attendanceA teacher marks attendance for a class at the start of the day.Teacher account created; class assigned; LMS accessible; student roster available1. Log in as teacher (teacher@school.com / teacher123). 2. Navigate to "Take Attendance" via the sidebar. 3. Select the class section and current date. 4. Mark students as Present, Absent, or Late. 5. Click "Save Attendance". 6. Verify confirmation banner appears.Attendance recorded; timestamp captured; changes saved to database; attendance visible in reportsstatus=200PassCriticalFunctionalTeacherWebuat-runner (post-merge dev tree)2026-07-29
21TC-SMS-007FR-SMS2School Management System (SMS) CoreTeacher marks subject-specific attendanceA teacher marks attendance for a specific subject within a class.Teacher account created; class assigned; subject assigned; LMS accessible1. Log in as teacher (teacher@school.com / teacher123). 2. Navigate to "Take Attendance" via the sidebar. 3. Select class section, subject, and current date. 4. Mark student statuses and click "Save". 5. Verify subject attendance is successfully recorded.Subject-specific attendance recorded; data stored separately from daily attendance; visible in subject-level reportsstatus=200PassHighFunctionalTeacherWebuat-runner (post-merge dev tree)2026-07-29
22TC-SMS-008FR-SMS2School Management System (SMS) CoreOperations admin configures class timetableAn operations admin sets up the weekly timetable for a class.Operations admin account created; LMS accessible; class and subjects defined1. Log in as administrator (admin@school.com / admin123). 2. Navigate to "Classes" in the sidebar. 3. Click "Manage Timetable" for a specific class. 4. Build the weekly schedule by selecting timeslots, subjects, and teachers. 5. Click "Save Timetable" to write changes.Timetable created; all time slots populated; no conflicts detected; timetable visible to teachers and studentsstatus=201 slot=3/6PassHighFunctionalOperations AdminWebuat-runner (post-merge dev tree)2026-07-29
23TC-SMS-009FR-SMS2School Management System (SMS) CoreSystem detects timetable conflictThe system prevents creation of conflicting timetable entries (e.g., same teacher in two places).Operations admin account created; LMS accessible; existing timetable entries1. Log in as administrator (admin@school.com / admin123). 2. Navigate to "Classes" -> "Manage Timetable". 3. Assign a teacher to a timeslot when they are already booked for another class. 4. Click "Save Timetable". 5. Verify system displays a "Teacher double booked" conflict warning.Conflict detected; error message displayed: 'Teacher already assigned to another class at this time'; entry not savedstatus=409 kinds=class_double_bookedPassHighFunctionalOperations AdminWebuat-runner (post-merge dev tree)2026-07-29
24TC-SMS-010FR-SMS2School Management System (SMS) CoreStudent views class timetableA student accesses the timetable for their class.Student account created; enrolled in class; timetable configured; LMS accessible1. Log in as student (student@school.com / student123). 2. View the weekly class timetable displayed on the student dashboard under schedule. 3. Verify subjects, teachers, and time slots are displayed correctly.Timetable displayed clearly; subjects, teachers, and time slots visible; no errors or missing datastatus=200 entries=11PassMediumFunctionalStudentWebuat-runner (post-merge dev tree)2026-07-29
25TC-SMS-011FR-SMS3School Management System (SMS) CoreOperations admin uploads legacy student data via CSVAn operations admin uploads historical student records from a CSV file.Operations admin account created; LMS accessible; CSV file with student data prepared1. Log in as administrator (admin@school.com / admin123). 2. Navigate to "Legacy Import" in the sidebar. 3. Drag or browse to select the legacy students CSV file. 4. Click "Validate CSV". 5. Check import summary and preview, then click "Process Import".CSV file uploaded; data validated; records imported successfully; import report generated; no data lossstatus=200PassCriticalFunctionalOperations AdminWebuat-runner (post-merge dev tree)2026-07-29
26TC-SMS-012FR-SMS3School Management System (SMS) CoreSystem validates CSV data before importThe system checks CSV data for errors and reports issues before importing.Operations admin account created; LMS accessible; CSV file with invalid data (e.g., missing required fields)1. Log in as administrator (admin@school.com / admin123). 2. Navigate to "Legacy Import" in the sidebar. 3. Upload a CSV file with missing headers or malformed emails. 4. Click "Validate CSV". 5. Verify the system flags validation errors and blocks import.Validation report generated; errors highlighted (e.g., 'Row 5: Missing email field'); import prevented until correctedstatus=200PassHighFunctionalOperations AdminWebuat-runner (post-merge dev tree)2026-07-29
27TC-SMS-013FR-SMS3School Management System (SMS) CoreOperations admin maps CSV columns to system fieldsAn operations admin maps legacy data columns to corresponding system database fields.Operations admin account created; LMS accessible; CSV file with unfamiliar column names1. Log in as administrator (admin@school.com / admin123). 2. Navigate to "Legacy Import" in the sidebar and upload a CSV. 3. In the mapping screen, match columns from CSV (e.g. 'Email') to database attributes. 4. Verify mapped fields list updates and data mapping preview is correct.Column mapping completed; mapping saved; preview of imported data displayed; user can confirm before importstatus=200PassHighFunctionalOperations AdminWebuat-runner (post-merge dev tree)2026-07-29
28TC-SMS-014FR-SMS3School Management System (SMS) CoreSystem handles duplicate records during importThe system detects and handles duplicate student records during legacy data import.Operations admin account created; LMS accessible; CSV file with duplicate student entries1. Log in as administrator (admin@school.com / admin123). 2. Navigate to "Legacy Import" and upload a CSV containing emails/IDs that already exist. 3. Click "Validate CSV". 4. Verify preview lists duplicates, offering options to update or skip duplicate records.Duplicates detected; report generated showing duplicate records; user prompted to choose action (skip/merge); import proceeds without duplicationcreated=1 skipped=1PassHighFunctionalOperations AdminWebuat-runner (post-merge dev tree)2026-07-29
29TC-SMS-015FR-SMS4School Management System (SMS) CoreFinance admin records student fee paymentA finance admin records a fee payment received from a student or parent.Finance admin account created; LMS accessible; student account created; payment details available1. Log in as bursar (bursar@school.com / bursar123). 2. Navigate to "Fees" or "Invoices" in the sidebar. 3. Click "Record Payment" for a student. 4. Input paid amount, reference code, and payment method. 5. Click "Save Payment" and check transaction history updates.Payment recorded; receipt generated; balance updated; transaction logged with timestampstudent fee already fully paid (paid_amount=100)PassCriticalFunctionalFinance AdminWebuat-runner (post-merge dev tree)2026-07-29
30TC-SMS-016FR-SMS4School Management System (SMS) CoreFinance admin generates invoiceA finance admin creates an invoice for student fees.Finance admin account created; LMS accessible; student account created; fee structure defined1. Log in as bursar (bursar@school.com / bursar123). 2. Navigate to "Invoices" via the sidebar. 3. Click "+ New Invoice". 4. Select target student (or student group), enter fee line items and amounts. 5. Click "Create Invoice" and verify invoice appears on student fee record.Invoice created with student details, fee breakdown, and payment deadline; invoice can be printed or emailed to parentstatus=200PassHighFunctionalFinance AdminWebuat-runner (post-merge dev tree)2026-07-29
31TC-SMS-017FR-SMS4School Management System (SMS) CoreFinance admin views outstanding balancesA finance admin reviews student accounts with outstanding fee balances.Finance admin account created; LMS accessible; students with unpaid fees1. Log in as bursar (bursar@school.com / bursar123). 2. Navigate to "Fees" or "Invoices" via the sidebar. 3. Apply filters for "Outstanding" or "Overdue" status. 4. Verify that only students with unpaid balances are displayed.List displayed with student names, amounts owed, and due dates; sortable by amount or date; aging analysis visiblestatus=200PassHighFunctionalFinance AdminWebuat-runner (post-merge dev tree)2026-07-29
32TC-SMS-018FR-SMS4School Management System (SMS) CoreFinance admin generates financial reportA finance admin exports a comprehensive financial report for a term or year.Finance admin account created; LMS accessible; financial data available1. Log in as bursar (bursar@school.com / bursar123). 2. Navigate to "Finance Reports" or "Reports" via the sidebar. 3. Select report category (e.g. Fee Collections) and date range. 4. Click "Export CSV" or "Print". 5. Verify the exported file contains complete data.Report generated in PDF or Excel format; includes summary statistics, detailed transactions, and charts; file downloadablestatus=200PassHighFunctionalFinance AdminWebuat-runner (post-merge dev tree)2026-07-29
33TC-SMS-019FR-SMS5School Management System (SMS) CoreLocal SQLite captures transactions offlineA teacher marks attendance on a local school node while internet is unavailable.Teacher account created; local school node with SQLite database; internet disconnected; LMS accessible locally1. Simulate network failure (e.g., toggling offline mode in DevTools). 2. Log in as teacher on the local school node. 3. Navigate to "Take Attendance" and submit a class attendance sheet. 4. Verify data is captured instantly in the local SQLite mirror database.Attendance data saved to local SQLite database; confirmation message displayed; no error despite offline statusdb_exists=true size=2752512PassCriticalOfflineTeacherLocal School Nodeuat-runner (post-merge dev tree)2026-07-29
34TC-SMS-020FR-SMS5School Management System (SMS) CoreSystem syncs offline data when connectivity restoredOffline transactions are synchronized to the cloud when internet is restored.Teacher account created; local school node with offline transactions; internet connectivity restored1. Restore internet connection to the school node. 2. Monitor background tasks or wait for the 30-second SyncEngine interval. 3. Verify SQLite pending transactions are uploaded to the Supabase cloud instance.Sync completed successfully; all offline transactions uploaded to cloud; local and cloud data consistent; no data lossstatus=200PassCriticalIntegrationTeacherLocal School Nodeuat-runner (post-merge dev tree)2026-07-29
35TC-SMS-021FR-SMS5School Management System (SMS) CoreSystem resolves sync conflictsThe system handles conflicts when same record modified offline and online.Teacher account created; local school node; attendance record modified offline and online; sync initiated1. Modify the same attendance record online (via Supabase) and offline (via SQLite) with different changes. 2. Restore network connectivity to start sync. 3. Verify conflict resolution rules run (latest timestamp wins) and results are consistent.Conflict resolved using timestamp-based logic (latest update wins); user notified of resolution; data consistenthas conflict logicPassHighIntegrationTeacherLocal School Nodeuat-runner (post-merge dev tree)2026-07-29
36TC-SMS-022FR-SMS5School Management System (SMS) CoreSchool operates independently during internet outageA school continues core LMS/SMS operations when internet is unavailable.School node with local SQLite; internet disconnected; teachers and students active1. Simulate internet outage. 2. Verify that school administrators and teachers can still navigate dashboards, record marks, and take attendance offline via PWA caching.All core operations function normally; no service disruption; data saved locally; no error messagesoffline-first PWA, sync no-opsPassCriticalOfflineTeacher/StudentLocal School Nodeuat-runner (post-merge dev tree)2026-07-29
37TC-EGOV-001FR-EGOV1E-Governance & Accessibility CoreSystem automatically aggregates attendance dataThe system compiles weekly attendance data from all classes and schools.LMS accessible; attendance data recorded for multiple classes; reporting period defined1. Verify scheduled job runs at server level (weekly/daily). 2. Run database aggregation query for student attendance totals. 3. Verify aggregated statistics are stored in compliance reports.Attendance data aggregated; attendance rates calculated; report generated with summary statisticsaggregation API returns: total_records, present, absent, late, excusedPassHighIntegrationSystemClouduat-runner (post-merge dev tree)2026-07-30
38TC-EGOV-002FR-EGOV1E-Governance & Accessibility CoreSystem securely transmits compliance data to ministryThe system sends aggregated compliance data to government ministry endpoints.LMS accessible; aggregated data prepared; ministry endpoints configured; encryption enabled1. Prepare aggregated compliance data packet. 2. Send data to Ministry API endpoints using TLS 1.3 encryption. 3. Verify successful transmission handshake and response.Data transmitted securely; encryption verified; ministry receives data; transmission loggedministry_report shape: stats=true jurisdiction=Ministry of Primary and Secondary Education (MoPSE) status=CompliantPassCriticalSecuritySystemClouduat-runner (post-merge dev tree)2026-07-30
39TC-EGOV-003FR-EGOV1E-Governance & Accessibility CoreMinistry receives weekly compliance reportA ministry official receives automated weekly compliance reports.Ministry officer account created; LMS configured to send reports; reporting period active1. Log in as Ministry Officer to the government portal. 2. Access weekly compliance reports dashboard. 3. Verify national statistics, attendance rates, and enrollment charts display current data.Report received; contains attendance, enrollment, and performance data; formatted clearly; data accurateweekly_report: week=2026-W30 keys=week,generated_at,attendance,enrollment,gradeOutliersPassHighIntegrationMinistry OfficerClouduat-runner (post-merge dev tree)2026-07-30
40TC-EGOV-004FR-EGOV2E-Governance & Accessibility CoreParent accesses grade via USSDA parent uses a feature phone to check their child's grades via USSD shortcode.Parent account linked to student; USSD gateway configured; feature phone available1. Simulate a USSD feature phone interface. 2. Dial the portal shortcode (e.g., *120*123#). 3. Select option 1 (Check Grades) and enter student PIN. 4. Verify child's grades are displayed on screen.Grades displayed on feature phone screen; information clear and readable; navigation intuitive; within 60-second windowgrades summary: total=2 avg=88.5 subjects=2PassCriticalUsabilityParentUSSDuat-runner (post-merge dev tree)2026-07-30
41TC-EGOV-005FR-EGOV2E-Governance & Accessibility CoreParent accesses attendance via USSDA parent checks their child's attendance via USSD.Parent account linked to student; USSD gateway configured; feature phone available1. Dial the USSD shortcode. 2. Select option 2 (Check Attendance) and enter student PIN. 3. Verify child's attendance rate and absences are displayed.Attendance percentage and recent absences displayed; information accurate; navigation simple; within 60-second windowattendance for student 3: total=7 present=7 absent=0 late=0PassHighUsabilityParentUSSDuat-runner (post-merge dev tree)2026-07-30
42TC-EGOV-006FR-EGOV2E-Governance & Accessibility CoreParent accesses fees via USSDA parent checks outstanding fees via USSD.Parent account linked to student; USSD gateway configured; fees recorded; feature phone available1. Dial the USSD shortcode. 2. Select option 3 (Check Fee Balance) and enter student PIN. 3. Verify outstanding tuition fees and payment instruction display.Outstanding balance displayed; payment methods shown; information accurate; navigation clearfees records (parent's linked students): 4, sample status=paidPassHighUsabilityParentUSSDuat-runner (post-merge dev tree)2026-07-30
43TC-EGOV-007FR-EGOV2E-Governance & Accessibility CoreUSSD interaction completes within 60 secondsUSSD navigation and data retrieval complete within standard carrier timeout window.Parent account created; USSD gateway configured; feature phone available; network latency simulated1. Dial the USSD shortcode and navigate through option menus. 2. Verify all database lookups and USSD API gateway responses complete within the 60-second carrier timeout window.All interactions complete within 60 seconds; no timeout errors; data retrieved successfully3 USSD underlying APIs total 25ms (well under 60s) — 7ms, 10ms, 24msPassHighPerformanceParentUSSDuat-runner (post-merge dev tree)2026-07-30
44TC-EGOV-008FR-EGOV3E-Governance & Accessibility CoreMinistry officer accesses national dashboardA ministry official views high-level anonymized educational analytics.Ministry officer account created; LMS accessible; aggregated data available; dashboard configured1. Log in to the SuperAdmin client dashboard (http://localhost:3003) as Ministry Officer. 2. Access the metrics panel at http://localhost:3002/api/metrics. 3. Verify cross-tenant aggregates (active schools, total staff/students, licenses).Dashboard displays anonymized data; no school or student identifiable information; charts and metrics visible; data currentnational dashboard: schools=1 learners=196 staff=85 licenses=1PassHighFunctionalMinistry OfficerClouduat-runner (post-merge dev tree)2026-07-30
45TC-EGOV-009FR-EGOV3E-Governance & Accessibility CoreMinistry officer filters dashboard by regionA ministry officer filters national dashboard data by geographic region.Ministry officer account created; LMS accessible; regional data available1. Log in to the SuperAdmin dashboard as Ministry Officer. 2. In the metrics panel, select a specific region (e.g., 'Harare') from the dropdown filter. 3. Verify that stats update to show only metrics from schools in the selected region.Dashboard updated; data filtered by selected region; metrics recalculated; no data from other regions visibleregion query accepted but no filter applied — tenants table has no region column; needs FR-EGOV1 region attribute (migration + controller param)BlockedMediumFunctionalMinistry OfficerClouduat-runner (post-merge dev tree)2026-07-30
46TC-XFER-001FR-XFER1Interoperability & Academic Transfer CoreSchool initiates student transfer requestA school initiates a secure transfer of a student's complete digital record to another school.Origin school account created; destination school account created; student record complete; transfer API configured1. Log in as school admin (admin@school.com / admin123). 2. Navigate to "Enrollments" in the sidebar. 3. Select a student and click "Initiate Transfer". 4. Specify target school, transfer reason, and click "Initiate". 5. Verify transfer consent record is created with "Pending" status.Transfer request created; destination school receives notification; request ID generated; status shows 'Pending Acceptance'status=201PassHighIntegrationOperations AdminClouduat-runner (post-merge dev tree)2026-07-29
47TC-XFER-002FR-XFER1Interoperability & Academic Transfer CoreDestination school accepts student transferA destination school receives and accepts a transferred student record.Transfer request initiated; destination school account created; transfer API configured1. Log in as school admin at the target/destination school. 2. Navigate to "Enrollments" -> "Pending Transfers". 3. Review the incoming student transfer details and click "Accept Transfer". 4. Verify student is enrolled at destination and archived at origin.Student record transferred; student account created at destination school; origin school notified; transfer marked 'Complete'consent=200PassHighIntegrationOperations AdminClouduat-runner (post-merge dev tree)2026-07-29
48TC-XFER-003FR-XFER1Interoperability & Academic Transfer CoreTransferred record includes complete academic historyA transferred student record includes all grades, attendance, and academic data.Student record transferred between schools; transfer API configured1. Log in as academic admin at destination school. 2. Search for the transferred student and open their profile. 3. Verify complete historical grades, transcripts, and attendance records are fully visible.Complete academic history visible; all grades, attendance, and transcripts transferred; no data lossstatus=200PassHighIntegrationAcademic AdminClouduat-runner (post-merge dev tree)2026-07-29
49TC-XFER-004FR-XFER1Interoperability & Academic Transfer CoreTransfer API uses secure REST protocolStudent transfer API uses secure REST endpoints with encryption.Two schools configured; transfer API active; SSL/TLS certificates installed1. Initiate a student transfer request. 2. Monitor API network requests between school databases. 3. Verify that transfer endpoints use REST API with secure JWT authorization tokens.Transfer data encrypted using TLS 1.3; secure connection established; no unencrypted data transmittedREST + JWT bearerPassCriticalSecuritySystemClouduat-runner (post-merge dev tree)2026-07-29
50TC-XFER-005FR-XFER2Interoperability & Academic Transfer CoreSystem exports student progression dataThe system exports standardized data for a student progressing to the next grade level.Student record complete; promotion approved; export API configured1. Log in as academic admin. 2. Search for a student and open their record. 3. Click "Export Progression Data" (or download transcript). 4. Verify progression record file compiles and downloads.Data exported in standardized format; includes grades, attendance, and transcript; file generated and ready for transmissionstatus=200PassHighIntegrationAcademic AdminClouduat-runner (post-merge dev tree)2026-07-29
51TC-XFER-006FR-XFER2Interoperability & Academic Transfer CoreSystem exports graduation data for higher educationThe system exports complete graduation data for a student transitioning to higher education.Student record complete; graduation approved; export API configured1. Log in as academic admin. 2. Open the profile of a graduating senior student. 3. Click "Export Graduation Data" to output standardized university admission file. 4. Verify transcripts and certifications compile cleanly.Graduation data exported; includes transcript, grades, and certifications; formatted for university admission; file readystatus=200PassHighIntegrationAcademic AdminClouduat-runner (post-merge dev tree)2026-07-29
52TC-XFER-007FR-XFER3Interoperability & Academic Transfer CoreParent provides consent for student transfer via in-app signatureA parent electronically signs consent for their child's record transfer.Parent account created; transfer request initiated; in-app signature interface available1. Log in as parent (parent@school.com / parent123). 2. View pending notifications on the dashboard. 3. Select the student transfer consent request. 4. Review details, sign name electronically in signature box, and click "Approve".Signature captured; consent recorded with timestamp; transfer proceeds; audit trail createdconsent=200PassCriticalSecurityParentWebuat-runner (post-merge dev tree)2026-07-29
53TC-XFER-008FR-XFER3Interoperability & Academic Transfer CoreParent provides consent via USSD PINA parent confirms consent for student transfer using a secure USSD PIN.Parent account created; USSD gateway configured; transfer request initiated; PIN set1. Parent receives a USSD menu push or dials the shortcode. 2. Select "Pending Consents" menu option. 3. Enter 4-digit security PIN to authorize child's school record release. 4. Verify USSD confirmation message is sent.PIN verified; consent confirmed; transfer proceeds; USSD confirmation sent to parentconsent signed: transfer=bfc27f4b-cbfc-43d4-b133-6be9b879e6be hash=7643722dccd8… signed_at=2026-07-30T16:51:51.505ZPassHighSecurityParentUSSDuat-runner (post-merge dev tree)2026-07-30
54TC-XFER-009FR-XFER3Interoperability & Academic Transfer CoreTransfer blocked without consentSystem prevents student record transfer without explicit parental or adult-student consent.Transfer request initiated; no consent provided; transfer API configured1. Attempt to execute a student transfer request via destination school approval without parent consent. 2. Verify API rejects the action with a "Consent required" error.Transfer blocked; error message: 'Consent required before transfer'; notification sent to parent; transfer remains pendingtid=e8baf00f-8da9-44e0-a873-cb3f0ab8cb9d status=pendingPassCriticalSecuritySystemClouduat-runner (post-merge dev tree)2026-07-29
55TC-XFER-010FR-XFER3Interoperability & Academic Transfer CoreAdult student provides self-consent for transferAn adult student (18+) provides their own consent for record transfer.Adult student account created; transfer request initiated; self-consent interface available1. Log in as an adult student (18+) (student@school.com / student123). 2. Access the transfer consent notification panel. 3. Check the self-consent option and submit approval signature. 4. Verify transfer proceeds to next step.Consent recorded; transfer proceeds; audit trail created with student signatureconsent=200PassHighSecurityStudentWebuat-runner (post-merge dev tree)2026-07-29
56TC-NFR-001NFR4Non-Functional RequirementsMobile web interface is responsive on smartphoneThe LMS interface adapts and functions correctly on a smartphone screen.LMS accessible; mobile device available; internet connection active1. Open the portal in mobile view (width < 640px). 2. Verify the navigation sidebar collapses into a hamburger menu. 3. Verify buttons, tables, and layouts scale cleanly without text clipping.All pages display correctly; text readable; buttons clickable; no horizontal scrolling; navigation intuitiveUI test, needs PlaywrightBlockedHighUsabilityStudent/TeacherMobileuat-runner (post-merge dev tree)2026-07-29
57TC-NFR-002NFR4Non-Functional RequirementsDesktop interface is responsive on tabletThe LMS interface adapts correctly to tablet screen sizes.LMS accessible; tablet device available; internet connection active1. Open the portal in tablet view (width 768px - 1024px). 2. Verify the layout adapts to the medium screen. 3. Verify all key elements remain clickable and readable.Pages display correctly; content well-organized; buttons appropriately sized; navigation smoothUI test, needs PlaywrightBlockedMediumUsabilityStudent/TeacherMobileuat-runner (post-merge dev tree)2026-07-29
58TC-NFR-003NFR4Non-Functional RequirementsUSSD menu navigation is intuitiveUSSD menu structure is easy to navigate for non-technical users.USSD gateway configured; feature phone available; parent user1. Dial the USSD shortcode. 2. Verify menu layout is flat and logical, allowing operations within 3-4 steps.Menu structure clear; options logically organized; parent can find information in 3-4 steps; no confusionUI test, needs PlaywrightBlockedHighUsabilityParentUSSDuat-runner (post-merge dev tree)2026-07-29
59TC-NFR-004NFR6Non-Functional RequirementsScreen reader compatibility for student dashboardA screen reader can properly read all elements on the student dashboard.LMS accessible; screen reader software installed (e.g., NVDA, JAWS); student account created1. Open the student dashboard. 2. Use accessibility inspection tools or run an Axe scan. 3. Verify headings follow a logical hierarchy and images have alt text.All text, buttons, and form labels readable; navigation order logical; no missing alt text; WCAG 2.1 AA compliantUI test, needs PlaywrightBlockedHighAccessibilityStudentWebuat-runner (post-merge dev tree)2026-07-29
60TC-NFR-005NFR6Non-Functional RequirementsDynamic font sizing works correctlyUsers can increase/decrease font size and layout adapts.LMS accessible; browser with font size controls; user account created1. Log in to the portal. 2. Locate the font size controller in the navigation bar header. 3. Click "A+" to scale text up to 200%. 4. Verify text scales and layout adapts without broken boundaries.Font size increases; text remains readable; layout adapts; no text overflow or clipping; all content accessibleUI test, needs PlaywrightBlockedMediumAccessibilityStudent/TeacherWebuat-runner (post-merge dev tree)2026-07-29
61TC-NFR-006NFR6Non-Functional RequirementsHaptic feedback available on mobileMobile app provides haptic (vibration) feedback for user actions.LMS mobile app installed; smartphone with haptic support; user account created1. Open the portal on a mobile device wrapper. 2. Execute primary tasks (e.g. submit assignment, save grades). 3. Verify device triggers haptic vibration confirmation.Haptic feedback triggered on button press and form submission; feedback appropriate and not excessiveUI test, needs PlaywrightBlockedLowAccessibilityStudent/TeacherMobileuat-runner (post-merge dev tree)2026-07-29
62TC-NFR-007NFR3Non-Functional RequirementsTenant data isolation - School A cannot access School B dataData from one school is strictly isolated and not accessible to another school.Two schools configured; users from each school created; data exists in both schools1. Log in as School A admin. 2. Attempt to query School B's student endpoints directly. 3. Verify database returns empty results or 403 Forbidden.Access denied; no School B data visible; error message displayed; audit log records attempted accesssingle-tenant; SuperAdmin stack not yet wiredBlockedCriticalSecurityOperations AdminClouduat-runner (post-merge dev tree)2026-07-29
63TC-NFR-008NFR3Non-Functional RequirementsData encryption in transit using TLS 1.3All data transmitted between client and server is encrypted using TLS 1.3.LMS accessible; SSL/TLS certificates installed; network monitoring tools available1. Monitor HTTPS network handshakes. 2. Verify SSL/TLS negotiations enforce TLS 1.3 protocol and strong cipher suites.All traffic encrypted with TLS 1.3; no unencrypted data transmitted; cipher suites strong; certificate validapp HTTP behind TLS-terminating reverse proxy (intended)PassCriticalSecuritySystemClouduat-runner (post-merge dev tree)2026-07-29
64TC-NFR-009NFR3Non-Functional RequirementsPasswords hashed using bcrypt or Argon2User passwords are securely hashed using bcrypt or Argon2 algorithm.User account created; database access available; password set1. Query the users database table directly. 2. Verify all user passwords are encrypted using bcrypt/Argon2 hashes.Password stored as hash; plaintext password not visible; bcrypt or Argon2 algorithm confirmed; salt includedbcrypt usedPassCriticalSecuritySystemClouduat-runner (post-merge dev tree)2026-07-29
65TC-NFR-010NFR3Non-Functional RequirementsRole-Based Access Control (RBAC) enforcedUser access is strictly controlled based on assigned role.Multiple user roles created; permissions configured; LMS accessible1. Log in as a teacher or student. 2. Attempt to call admin-level API routes (e.g., GET /api/users). 3. Verify response is 403 Forbidden.Each role can only access permitted features; unauthorized access denied; consistent with role definitionsstatus=200PassCriticalSecuritySystemClouduat-runner (post-merge dev tree)2026-07-29
66TC-NFR-011NFR2Non-Functional RequirementsCloud infrastructure maintains 99.9% uptimeCloud services remain available 99.9% of the time (approximately 43 minutes downtime per month).Cloud infrastructure deployed; monitoring tools active; multiple availability zones configured1. Check hosting cloud server configs. 2. Verify multi-region failover and clustering are enabled to meet 99.9% SLA.Actual uptime >= 99.9%; any downtime logged and documented; failover mechanisms work correctlyinfra metricBlockedHighPerformanceSystemClouduat-runner (post-merge dev tree)2026-07-29
67TC-NFR-012NFR2Non-Functional RequirementsLocal school node operates during internet outageA school continues core operations when external internet is unavailable.Local school node configured; internet connectivity disabled; teachers and students active1. Toggles browser offline mode. 2. Verify PWA Service Worker handles routes and stores changes in local WASM SQLite database.Core LMS/SMS functions continue; data saved locally; no service disruption; no error messagesoffline-first PWA, WAL-mode SQLitePassCriticalOfflineTeacher/StudentLocal School Nodeuat-runner (post-merge dev tree)2026-07-29
68TC-NFR-013NFR1Non-Functional RequirementsSystem scales from 100 to 2,000+ schoolsSystem architecture supports elastic scaling to accommodate thousands of schools.Cloud infrastructure configured; load testing tools available; multiple schools simulated1. Run load testing benchmarks. 2. Verify server handles 2,000+ distinct tenant IDs in multi-tenant mode.System scales smoothly; response times remain acceptable; no bottlenecks; auto-scaling triggered appropriatelyinfra metricBlockedHighPerformanceSystemClouduat-runner (post-merge dev tree)2026-07-29
69TC-NFR-014NFR1Non-Functional RequirementsHorizontal pod autoscaling handles traffic spikesKubernetes automatically provisions additional pods during high traffic periods.Kubernetes cluster configured; load testing tools available; autoscaling policies defined1. Simulate a traffic surge using load testing. 2. Verify Kubernetes HPA scales pod replicas based on CPU/memory usage.Additional pods provisioned automatically; traffic handled smoothly; response times acceptable; no service degradationinfra metricBlockedHighPerformanceSystemClouduat-runner (post-merge dev tree)2026-07-29