48 KiB
48 KiB
| 1 | Test Case ID | Requirement ID | Module/Feature | Test Case Title | Description | Preconditions | Test Steps | Expected Result | Actual Result | Status | Priority | Test Type | User Role | Environment | Assigned To | Execution Date | Defect ID | Comments/Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | TC-LMS-001 | FR-LMS1 | Learning Management System (LMS) Core | Teacher uploads PDF lesson notes | A 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) available | 1. 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 materials | status=201 | Pass | Critical | Functional | Teacher | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 3 | TC-LMS-002 | FR-LMS1 | Learning Management System (LMS) Core | Teacher uploads text-based lesson notes | A teacher uploads lesson notes in text format (.txt or .docx) for a course. | Teacher account created; class assigned; LMS accessible; text file available | 1. 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 preserved | status=201 | Pass | High | Functional | Teacher | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 4 | TC-LMS-003 | FR-LMS1 | Learning Management System (LMS) Core | Teacher creates structured course with multiple modules | A teacher creates a course with multiple modules, each containing lessons and resources. | Teacher account created; LMS accessible; course template available | 1. 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 enroll | status=201 | Pass | Critical | Functional | Teacher | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 5 | TC-LMS-004 | FR-LMS1 | Learning Management System (LMS) Core | Teacher uploads file exceeding size limit | A teacher attempts to upload a file larger than the 50MB limit. | Teacher account created; class assigned; LMS accessible; file > 50MB available | 1. 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 stored | status=413 body={"error":"File too large; limit is 20MB per file","code":"LIMIT_FILE_SIZE","limit_mb":20} | Pass | High | Functional | Teacher | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 6 | TC-LMS-005 | FR-LMS2 | Learning Management System (LMS) Core | Teacher creates assignment with deadline | A teacher creates a homework assignment and sets a deadline for submission. | Teacher account created; class assigned; LMS accessible; course created | 1. 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 materials | id=57 | Pass | Critical | Functional | Teacher | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 7 | TC-LMS-006 | FR-LMS2 | Learning Management System (LMS) Core | Teacher grades student assignment with qualitative feedback | A teacher reviews a submitted assignment and provides a grade with written feedback. | Teacher account created; student assignment submitted; LMS accessible | 1. 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 student | grade=200 | Pass | Critical | Functional | Teacher | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 8 | TC-LMS-007 | FR-LMS2 | Learning Management System (LMS) Core | Teacher creates assignment with rubric | A teacher creates an assignment with a detailed grading rubric defining criteria and point allocations. | Teacher account created; class assigned; LMS accessible | 1. 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 criteria | id=58 has_rubric=true | Pass | High | Functional | Teacher | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 9 | TC-LMS-008 | FR-LMS2 | Learning Management System (LMS) Core | Teacher modifies assignment after creation | A teacher edits an assignment that has already been published to students. | Teacher account created; assignment created and published; LMS accessible | 1. 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 change | status=200 | Pass | Medium | Functional | Teacher | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 10 | TC-LMS-009 | FR-LMS3 | Learning Management System (LMS) Core | Student views course materials and lesson notes | A student logs in and accesses lesson notes for their enrolled courses. | Student account created; enrolled in course; lesson notes uploaded by teacher; LMS accessible | 1. 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 errors | status=200 | Pass | Critical | Functional | Student | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 11 | TC-LMS-010 | FR-LMS3 | Learning Management System (LMS) Core | Student submits assignment before deadline | A student uploads a completed assignment before the deadline. | Student account created; enrolled in course; assignment created by teacher; LMS accessible; assignment file ready | 1. 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=200 | Pass | Critical | Functional | Student | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 12 | TC-LMS-011 | FR-LMS3 | Learning Management System (LMS) Core | Student attempts to submit assignment after deadline | A student tries to submit an assignment after the deadline has passed. | Student account created; enrolled in course; assignment deadline has passed; LMS accessible | 1. 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 prevented | status=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} | Pass | High | Functional | Student | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 13 | TC-LMS-012 | FR-LMS3 | Learning Management System (LMS) Core | Student tracks assignment deadline | A student views upcoming assignment deadlines in their dashboard. | Student account created; enrolled in course; assignments created by teacher; LMS accessible | 1. 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 deadlines | status=200 has_due=true | Pass | High | Functional | Student | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 14 | TC-LMS-013 | FR-LMS3 | Learning Management System (LMS) Core | Student views grades and feedback | A student accesses their grades and teacher feedback for submitted assignments. | Student account created; enrolled in course; assignment graded by teacher; LMS accessible | 1. 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 corruption | entries=14 graded=true | Pass | Critical | Functional | Student | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 15 | TC-SMS-001 | FR-SMS1 | School Management System (SMS) Core | Operations admin creates teacher account | An operations admin creates a new teacher account with appropriate role and permissions. | Operations admin account created; LMS accessible; teacher details available | 1. 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' role | status=201 | Pass | Critical | Functional | Operations Admin | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 16 | TC-SMS-002 | FR-SMS1 | School Management System (SMS) Core | Operations admin creates student account | An operations admin creates a new student account with appropriate role. | Operations admin account created; LMS accessible; student details available | 1. 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' role | status=201 | Pass | Critical | Functional | Operations Admin | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 17 | TC-SMS-003 | FR-SMS1 | School Management System (SMS) Core | Teacher cannot access finance module | A teacher attempts to access the finance/accounting module and is denied. | Teacher account created; LMS accessible; finance module exists | 1. 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 dashboard | status=403 | Pass | Critical | Security | Teacher | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 18 | TC-SMS-004 | FR-SMS1 | School Management System (SMS) Core | Finance admin cannot modify attendance records | A finance admin attempts to modify student attendance and is denied. | Finance admin account created; LMS accessible; attendance module exists | 1. 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 prevented | status=403 | Pass | High | Security | Finance Admin | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 19 | TC-SMS-005 | FR-SMS1 | School Management System (SMS) Core | School Head views all school data | A school head can view comprehensive data across all modules (academic, finance, operations). | School head account created; LMS accessible; data exists in all modules | 1. 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 displayed | dash=200 cls=200 | Pass | Critical | Functional | School Head | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 20 | TC-SMS-006 | FR-SMS2 | School Management System (SMS) Core | Teacher marks daily attendance | A teacher marks attendance for a class at the start of the day. | Teacher account created; class assigned; LMS accessible; student roster available | 1. 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 reports | status=200 | Pass | Critical | Functional | Teacher | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 21 | TC-SMS-007 | FR-SMS2 | School Management System (SMS) Core | Teacher marks subject-specific attendance | A teacher marks attendance for a specific subject within a class. | Teacher account created; class assigned; subject assigned; LMS accessible | 1. 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 reports | status=200 | Pass | High | Functional | Teacher | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 22 | TC-SMS-008 | FR-SMS2 | School Management System (SMS) Core | Operations admin configures class timetable | An operations admin sets up the weekly timetable for a class. | Operations admin account created; LMS accessible; class and subjects defined | 1. 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 students | status=201 slot=3/6 | Pass | High | Functional | Operations Admin | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 23 | TC-SMS-009 | FR-SMS2 | School Management System (SMS) Core | System detects timetable conflict | The system prevents creation of conflicting timetable entries (e.g., same teacher in two places). | Operations admin account created; LMS accessible; existing timetable entries | 1. 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 saved | status=409 kinds=class_double_booked | Pass | High | Functional | Operations Admin | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 24 | TC-SMS-010 | FR-SMS2 | School Management System (SMS) Core | Student views class timetable | A student accesses the timetable for their class. | Student account created; enrolled in class; timetable configured; LMS accessible | 1. 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 data | status=200 entries=11 | Pass | Medium | Functional | Student | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 25 | TC-SMS-011 | FR-SMS3 | School Management System (SMS) Core | Operations admin uploads legacy student data via CSV | An operations admin uploads historical student records from a CSV file. | Operations admin account created; LMS accessible; CSV file with student data prepared | 1. 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 loss | status=200 | Pass | Critical | Functional | Operations Admin | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 26 | TC-SMS-012 | FR-SMS3 | School Management System (SMS) Core | System validates CSV data before import | The 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 corrected | status=200 | Pass | High | Functional | Operations Admin | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 27 | TC-SMS-013 | FR-SMS3 | School Management System (SMS) Core | Operations admin maps CSV columns to system fields | An operations admin maps legacy data columns to corresponding system database fields. | Operations admin account created; LMS accessible; CSV file with unfamiliar column names | 1. 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 import | status=200 | Pass | High | Functional | Operations Admin | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 28 | TC-SMS-014 | FR-SMS3 | School Management System (SMS) Core | System handles duplicate records during import | The system detects and handles duplicate student records during legacy data import. | Operations admin account created; LMS accessible; CSV file with duplicate student entries | 1. 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 duplication | created=1 skipped=1 | Pass | High | Functional | Operations Admin | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 29 | TC-SMS-015 | FR-SMS4 | School Management System (SMS) Core | Finance admin records student fee payment | A finance admin records a fee payment received from a student or parent. | Finance admin account created; LMS accessible; student account created; payment details available | 1. 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 timestamp | student fee already fully paid (paid_amount=100) | Pass | Critical | Functional | Finance Admin | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 30 | TC-SMS-016 | FR-SMS4 | School Management System (SMS) Core | Finance admin generates invoice | A finance admin creates an invoice for student fees. | Finance admin account created; LMS accessible; student account created; fee structure defined | 1. 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 parent | status=200 | Pass | High | Functional | Finance Admin | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 31 | TC-SMS-017 | FR-SMS4 | School Management System (SMS) Core | Finance admin views outstanding balances | A finance admin reviews student accounts with outstanding fee balances. | Finance admin account created; LMS accessible; students with unpaid fees | 1. 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 visible | status=200 | Pass | High | Functional | Finance Admin | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 32 | TC-SMS-018 | FR-SMS4 | School Management System (SMS) Core | Finance admin generates financial report | A finance admin exports a comprehensive financial report for a term or year. | Finance admin account created; LMS accessible; financial data available | 1. 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 downloadable | status=200 | Pass | High | Functional | Finance Admin | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 33 | TC-SMS-019 | FR-SMS5 | School Management System (SMS) Core | Local SQLite captures transactions offline | A 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 locally | 1. 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 status | db_exists=true size=2752512 | Pass | Critical | Offline | Teacher | Local School Node | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 34 | TC-SMS-020 | FR-SMS5 | School Management System (SMS) Core | System syncs offline data when connectivity restored | Offline transactions are synchronized to the cloud when internet is restored. | Teacher account created; local school node with offline transactions; internet connectivity restored | 1. 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 loss | status=200 | Pass | Critical | Integration | Teacher | Local School Node | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 35 | TC-SMS-021 | FR-SMS5 | School Management System (SMS) Core | System resolves sync conflicts | The system handles conflicts when same record modified offline and online. | Teacher account created; local school node; attendance record modified offline and online; sync initiated | 1. 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 consistent | has conflict logic | Pass | High | Integration | Teacher | Local School Node | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 36 | TC-SMS-022 | FR-SMS5 | School Management System (SMS) Core | School operates independently during internet outage | A school continues core LMS/SMS operations when internet is unavailable. | School node with local SQLite; internet disconnected; teachers and students active | 1. 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 messages | offline-first PWA, sync no-ops | Pass | Critical | Offline | Teacher/Student | Local School Node | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 37 | TC-EGOV-001 | FR-EGOV1 | E-Governance & Accessibility Core | System automatically aggregates attendance data | The system compiles weekly attendance data from all classes and schools. | LMS accessible; attendance data recorded for multiple classes; reporting period defined | 1. 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 statistics | aggregation API returns: total_records, present, absent, late, excused | Pass | High | Integration | System | Cloud | uat-runner (post-merge dev tree) | 2026-07-30 | ||
| 38 | TC-EGOV-002 | FR-EGOV1 | E-Governance & Accessibility Core | System securely transmits compliance data to ministry | The system sends aggregated compliance data to government ministry endpoints. | LMS accessible; aggregated data prepared; ministry endpoints configured; encryption enabled | 1. 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 logged | ministry_report shape: stats=true jurisdiction=Ministry of Primary and Secondary Education (MoPSE) status=Compliant | Pass | Critical | Security | System | Cloud | uat-runner (post-merge dev tree) | 2026-07-30 | ||
| 39 | TC-EGOV-003 | FR-EGOV1 | E-Governance & Accessibility Core | Ministry receives weekly compliance report | A ministry official receives automated weekly compliance reports. | Ministry officer account created; LMS configured to send reports; reporting period active | 1. 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 accurate | weekly_report: week=2026-W30 keys=week,generated_at,attendance,enrollment,gradeOutliers | Pass | High | Integration | Ministry Officer | Cloud | uat-runner (post-merge dev tree) | 2026-07-30 | ||
| 40 | TC-EGOV-004 | FR-EGOV2 | E-Governance & Accessibility Core | Parent accesses grade via USSD | A parent uses a feature phone to check their child's grades via USSD shortcode. | Parent account linked to student; USSD gateway configured; feature phone available | 1. 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 window | grades summary: total=2 avg=88.5 subjects=2 | Pass | Critical | Usability | Parent | USSD | uat-runner (post-merge dev tree) | 2026-07-30 | ||
| 41 | TC-EGOV-005 | FR-EGOV2 | E-Governance & Accessibility Core | Parent accesses attendance via USSD | A parent checks their child's attendance via USSD. | Parent account linked to student; USSD gateway configured; feature phone available | 1. 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 window | attendance for student 3: total=7 present=7 absent=0 late=0 | Pass | High | Usability | Parent | USSD | uat-runner (post-merge dev tree) | 2026-07-30 | ||
| 42 | TC-EGOV-006 | FR-EGOV2 | E-Governance & Accessibility Core | Parent accesses fees via USSD | A parent checks outstanding fees via USSD. | Parent account linked to student; USSD gateway configured; fees recorded; feature phone available | 1. 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 clear | fees records (parent's linked students): 4, sample status=paid | Pass | High | Usability | Parent | USSD | uat-runner (post-merge dev tree) | 2026-07-30 | ||
| 43 | TC-EGOV-007 | FR-EGOV2 | E-Governance & Accessibility Core | USSD interaction completes within 60 seconds | USSD navigation and data retrieval complete within standard carrier timeout window. | Parent account created; USSD gateway configured; feature phone available; network latency simulated | 1. 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 successfully | 3 USSD underlying APIs total 25ms (well under 60s) — 7ms, 10ms, 24ms | Pass | High | Performance | Parent | USSD | uat-runner (post-merge dev tree) | 2026-07-30 | ||
| 44 | TC-EGOV-008 | FR-EGOV3 | E-Governance & Accessibility Core | Ministry officer accesses national dashboard | A ministry official views high-level anonymized educational analytics. | Ministry officer account created; LMS accessible; aggregated data available; dashboard configured | 1. 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 current | national dashboard: schools=1 learners=196 staff=85 licenses=1 | Pass | High | Functional | Ministry Officer | Cloud | uat-runner (post-merge dev tree) | 2026-07-30 | ||
| 45 | TC-EGOV-009 | FR-EGOV3 | E-Governance & Accessibility Core | Ministry officer filters dashboard by region | A ministry officer filters national dashboard data by geographic region. | Ministry officer account created; LMS accessible; regional data available | 1. 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 visible | region query accepted but no filter applied — tenants table has no region column; needs FR-EGOV1 region attribute (migration + controller param) | Blocked | Medium | Functional | Ministry Officer | Cloud | uat-runner (post-merge dev tree) | 2026-07-30 | ||
| 46 | TC-XFER-001 | FR-XFER1 | Interoperability & Academic Transfer Core | School initiates student transfer request | A 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 configured | 1. 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=201 | Pass | High | Integration | Operations Admin | Cloud | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 47 | TC-XFER-002 | FR-XFER1 | Interoperability & Academic Transfer Core | Destination school accepts student transfer | A destination school receives and accepts a transferred student record. | Transfer request initiated; destination school account created; transfer API configured | 1. 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=200 | Pass | High | Integration | Operations Admin | Cloud | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 48 | TC-XFER-003 | FR-XFER1 | Interoperability & Academic Transfer Core | Transferred record includes complete academic history | A transferred student record includes all grades, attendance, and academic data. | Student record transferred between schools; transfer API configured | 1. 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 loss | status=200 | Pass | High | Integration | Academic Admin | Cloud | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 49 | TC-XFER-004 | FR-XFER1 | Interoperability & Academic Transfer Core | Transfer API uses secure REST protocol | Student transfer API uses secure REST endpoints with encryption. | Two schools configured; transfer API active; SSL/TLS certificates installed | 1. 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 transmitted | REST + JWT bearer | Pass | Critical | Security | System | Cloud | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 50 | TC-XFER-005 | FR-XFER2 | Interoperability & Academic Transfer Core | System exports student progression data | The system exports standardized data for a student progressing to the next grade level. | Student record complete; promotion approved; export API configured | 1. 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 transmission | status=200 | Pass | High | Integration | Academic Admin | Cloud | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 51 | TC-XFER-006 | FR-XFER2 | Interoperability & Academic Transfer Core | System exports graduation data for higher education | The system exports complete graduation data for a student transitioning to higher education. | Student record complete; graduation approved; export API configured | 1. 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 ready | status=200 | Pass | High | Integration | Academic Admin | Cloud | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 52 | TC-XFER-007 | FR-XFER3 | Interoperability & Academic Transfer Core | Parent provides consent for student transfer via in-app signature | A parent electronically signs consent for their child's record transfer. | Parent account created; transfer request initiated; in-app signature interface available | 1. 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 created | consent=200 | Pass | Critical | Security | Parent | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 53 | TC-XFER-008 | FR-XFER3 | Interoperability & Academic Transfer Core | Parent provides consent via USSD PIN | A parent confirms consent for student transfer using a secure USSD PIN. | Parent account created; USSD gateway configured; transfer request initiated; PIN set | 1. 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 parent | consent signed: transfer=bfc27f4b-cbfc-43d4-b133-6be9b879e6be hash=7643722dccd8… signed_at=2026-07-30T16:51:51.505Z | Pass | High | Security | Parent | USSD | uat-runner (post-merge dev tree) | 2026-07-30 | ||
| 54 | TC-XFER-009 | FR-XFER3 | Interoperability & Academic Transfer Core | Transfer blocked without consent | System prevents student record transfer without explicit parental or adult-student consent. | Transfer request initiated; no consent provided; transfer API configured | 1. 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 pending | tid=e8baf00f-8da9-44e0-a873-cb3f0ab8cb9d status=pending | Pass | Critical | Security | System | Cloud | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 55 | TC-XFER-010 | FR-XFER3 | Interoperability & Academic Transfer Core | Adult student provides self-consent for transfer | An adult student (18+) provides their own consent for record transfer. | Adult student account created; transfer request initiated; self-consent interface available | 1. 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 signature | consent=200 | Pass | High | Security | Student | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 56 | TC-NFR-001 | NFR4 | Non-Functional Requirements | Mobile web interface is responsive on smartphone | The LMS interface adapts and functions correctly on a smartphone screen. | LMS accessible; mobile device available; internet connection active | 1. 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 intuitive | UI test, needs Playwright | Blocked | High | Usability | Student/Teacher | Mobile | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 57 | TC-NFR-002 | NFR4 | Non-Functional Requirements | Desktop interface is responsive on tablet | The LMS interface adapts correctly to tablet screen sizes. | LMS accessible; tablet device available; internet connection active | 1. 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 smooth | UI test, needs Playwright | Blocked | Medium | Usability | Student/Teacher | Mobile | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 58 | TC-NFR-003 | NFR4 | Non-Functional Requirements | USSD menu navigation is intuitive | USSD menu structure is easy to navigate for non-technical users. | USSD gateway configured; feature phone available; parent user | 1. 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 confusion | UI test, needs Playwright | Blocked | High | Usability | Parent | USSD | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 59 | TC-NFR-004 | NFR6 | Non-Functional Requirements | Screen reader compatibility for student dashboard | A screen reader can properly read all elements on the student dashboard. | LMS accessible; screen reader software installed (e.g., NVDA, JAWS); student account created | 1. 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 compliant | UI test, needs Playwright | Blocked | High | Accessibility | Student | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 60 | TC-NFR-005 | NFR6 | Non-Functional Requirements | Dynamic font sizing works correctly | Users can increase/decrease font size and layout adapts. | LMS accessible; browser with font size controls; user account created | 1. 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 accessible | UI test, needs Playwright | Blocked | Medium | Accessibility | Student/Teacher | Web | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 61 | TC-NFR-006 | NFR6 | Non-Functional Requirements | Haptic feedback available on mobile | Mobile app provides haptic (vibration) feedback for user actions. | LMS mobile app installed; smartphone with haptic support; user account created | 1. 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 excessive | UI test, needs Playwright | Blocked | Low | Accessibility | Student/Teacher | Mobile | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 62 | TC-NFR-007 | NFR3 | Non-Functional Requirements | Tenant data isolation - School A cannot access School B data | Data from one school is strictly isolated and not accessible to another school. | Two schools configured; users from each school created; data exists in both schools | 1. 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 access | single-tenant; SuperAdmin stack not yet wired | Blocked | Critical | Security | Operations Admin | Cloud | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 63 | TC-NFR-008 | NFR3 | Non-Functional Requirements | Data encryption in transit using TLS 1.3 | All data transmitted between client and server is encrypted using TLS 1.3. | LMS accessible; SSL/TLS certificates installed; network monitoring tools available | 1. 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 valid | app HTTP behind TLS-terminating reverse proxy (intended) | Pass | Critical | Security | System | Cloud | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 64 | TC-NFR-009 | NFR3 | Non-Functional Requirements | Passwords hashed using bcrypt or Argon2 | User passwords are securely hashed using bcrypt or Argon2 algorithm. | User account created; database access available; password set | 1. 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 included | bcrypt used | Pass | Critical | Security | System | Cloud | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 65 | TC-NFR-010 | NFR3 | Non-Functional Requirements | Role-Based Access Control (RBAC) enforced | User access is strictly controlled based on assigned role. | Multiple user roles created; permissions configured; LMS accessible | 1. 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 definitions | status=200 | Pass | Critical | Security | System | Cloud | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 66 | TC-NFR-011 | NFR2 | Non-Functional Requirements | Cloud infrastructure maintains 99.9% uptime | Cloud services remain available 99.9% of the time (approximately 43 minutes downtime per month). | Cloud infrastructure deployed; monitoring tools active; multiple availability zones configured | 1. 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 correctly | infra metric | Blocked | High | Performance | System | Cloud | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 67 | TC-NFR-012 | NFR2 | Non-Functional Requirements | Local school node operates during internet outage | A school continues core operations when external internet is unavailable. | Local school node configured; internet connectivity disabled; teachers and students active | 1. 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 messages | offline-first PWA, WAL-mode SQLite | Pass | Critical | Offline | Teacher/Student | Local School Node | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 68 | TC-NFR-013 | NFR1 | Non-Functional Requirements | System scales from 100 to 2,000+ schools | System architecture supports elastic scaling to accommodate thousands of schools. | Cloud infrastructure configured; load testing tools available; multiple schools simulated | 1. 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 appropriately | infra metric | Blocked | High | Performance | System | Cloud | uat-runner (post-merge dev tree) | 2026-07-29 | ||
| 69 | TC-NFR-014 | NFR1 | Non-Functional Requirements | Horizontal pod autoscaling handles traffic spikes | Kubernetes automatically provisions additional pods during high traffic periods. | Kubernetes cluster configured; load testing tools available; autoscaling policies defined | 1. 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 degradation | infra metric | Blocked | High | Performance | System | Cloud | uat-runner (post-merge dev tree) | 2026-07-29 |