# 1. Course Browsing & Discovery — Test Cases

User Type: **Student**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: course_browsing_discovery.md — every feature, sub-feature, and rule covered

---

## Test Execution Policy
- Zero tolerance: any deviation from documented behavior = FAILED = bug
- Every bug is immediately logged/reported (Bug ID, feature, sub-feature, expected vs actual, severity) and fixed 100% before the group passes
- Feature group passes only at 100% test pass rate

## Coverage Matrix
| Feature | Sub-feature / Rule | Test IDs |
|---------|--------------------|----------|
| 1.1 Academic Course Browsing | Browse by Education Board (e.g., CAPS, CBSE, IB) | TC-ST-03-01-001 |
| 1.1 Academic Course Browsing | Within a board, browse by Grade/Level | TC-ST-03-01-002 |
| 1.1 Academic Course Browsing | Within a grade, browse by Subject | TC-ST-03-01-003 |
| 1.1 Academic Course Browsing | Course card showing title, subject, grade, duration, and difficulty | TC-ST-03-01-004 |
| 1.1 Academic Course Browsing | Course detail view: outline, learning outcomes, sample content, pricing | TC-ST-03-01-005 |
| 1.1 Academic Course Browsing | Sample content preview (e.g., first 2 minutes of a video unlocked) | TC-ST-03-01-006 |
| 1.1 Academic Course Browsing | Enroll / "Start learning" action gated by subscription | TC-ST-03-01-007 |
| 1.1 Academic Course Browsing | Search within academic courses by keyword | TC-ST-03-01-008 |
| 1.1 Academic Course Browsing | Filter by subject, grade, and difficulty | TC-ST-03-01-009 |
| 1.1 Academic Course Browsing | Browsing and enrollment event logging | TC-ST-03-01-010 |
| 1.1 Academic Course Browsing | Audit logging of the academic course browsing | TC-ST-03-01-011 |
| 1.1 Academic Course Browsing | Rule: The hierarchy is Board → Grade → Subject; a course appears only under its board/grade/subject. | TC-ST-03-01-001 |
| 1.1 Academic Course Browsing | Rule: Sample content is limited (e.g., first 2 minutes); full content requires an active subscription/enrollment. | TC-ST-03-01-002 |
| 1.1 Academic Course Browsing | Rule: Enrollment is gated by the Student's subscription; without it, the Student sees pricing and a "Choose a plan" prompt. | TC-ST-03-01-003 |
| 1.1 Academic Course Browsing | Rule: Search and filters operate within the academic catalog. | TC-ST-03-01-004 |
| 1.1 Academic Course Browsing | Rule: Browsing and enrollment events are logged with the course and the timestamp. | TC-ST-03-01-005 |
| 1.1 Academic Course Browsing | Rule: The academic course browsing is audit-logged with the account, the course, and the timestamp. | TC-ST-03-01-006 |
| 1.2 Professional Course Browsing | Browse by Category (e.g., IT, Business, Languages, Creative) | TC-ST-03-01-012 |
| 1.2 Professional Course Browsing | Within a category, browse by Sub Category | TC-ST-03-01-013 |
| 1.2 Professional Course Browsing | Course card showing title, category, duration, and skill tags | TC-ST-03-01-014 |
| 1.2 Professional Course Browsing | Course detail view: overview, learning outcomes, instructor profile, duration, prerequisites, certifications | TC-ST-03-01-015 |
| 1.2 Professional Course Browsing | Sample content preview before enrollment | TC-ST-03-01-016 |
| 1.2 Professional Course Browsing | Enroll / "Start learning" action gated by subscription | TC-ST-03-01-017 |
| 1.2 Professional Course Browsing | Search within professional courses by keyword or skill | TC-ST-03-01-018 |
| 1.2 Professional Course Browsing | Filter by category, sub category, and skill | TC-ST-03-01-019 |
| 1.2 Professional Course Browsing | Browsing and enrollment event logging | TC-ST-03-01-020 |
| 1.2 Professional Course Browsing | Audit logging of the professional course browsing | TC-ST-03-01-021 |
| 1.2 Professional Course Browsing | Rule: The hierarchy is Category → Sub Category → Course. | TC-ST-03-01-012 |
| 1.2 Professional Course Browsing | Rule: Prerequisites are shown; a course with unmet prerequisites is flagged but can still be browsed. | TC-ST-03-01-013 |
| 1.2 Professional Course Browsing | Rule: Sample content is limited; full content requires an active subscription/enrollment. | TC-ST-03-01-014 |
| 1.2 Professional Course Browsing | Rule: Search and filters operate within the professional catalog, including by skill tag. | TC-ST-03-01-015 |
| 1.2 Professional Course Browsing | Rule: Browsing and enrollment events are logged with the course and the timestamp. | TC-ST-03-01-016 |
| 1.2 Professional Course Browsing | Rule: The professional course browsing is audit-logged with the account, the course, and the timestamp. | TC-ST-03-01-017 |
| 1.3 My Courses and Enrollment | "My courses" list with status (not started, in progress, completed) | TC-ST-03-01-022 |
| 1.3 My Courses and Enrollment | Resume a course at the last watched position | TC-ST-03-01-023 |
| 1.3 My Courses and Enrollment | View course progress (percent complete, lessons done) | TC-ST-03-01-024 |
| 1.3 My Courses and Enrollment | Drop/unenroll from a course (with confirmation) | TC-ST-03-01-025 |
| 1.3 My Courses and Enrollment | Re-enroll in a previously dropped course | TC-ST-03-01-026 |
| 1.3 My Courses and Enrollment | Course completion marked when all required content is done | TC-ST-03-01-027 |
| 1.3 My Courses and Enrollment | Completion feeds certificates and analytics | TC-ST-03-01-028 |
| 1.3 My Courses and Enrollment | Sort and filter "My courses" by status and subject | TC-ST-03-01-029 |
| 1.3 My Courses and Enrollment | Enrollment and completion event logging | TC-ST-03-01-030 |
| 1.3 My Courses and Enrollment | Audit logging of the my courses and enrollment | TC-ST-03-01-031 |
| 1.3 My Courses and Enrollment | Rule: A course's status is one of: not started, in progress, completed (or dropped). | TC-ST-03-01-022 |
| 1.3 My Courses and Enrollment | Rule: Resume returns the Student to the last watched position within the course. | TC-ST-03-01-023 |
| 1.3 My Courses and Enrollment | Rule: Dropping a course requires confirmation; prior progress is preserved for re-enrollment. | TC-ST-03-01-024 |
| 1.3 My Courses and Enrollment | Rule: Completion requires all required content to be done; optional content does not block completion. | TC-ST-03-01-025 |
| 1.3 My Courses and Enrollment | Rule: Completion feeds certificates and the analytics module. | TC-ST-03-01-026 |
| 1.3 My Courses and Enrollment | Rule: Enrollment, drop, re-enroll, and completion events are logged with the course and the timestamp. | TC-ST-03-01-027 |
| 1.3 My Courses and Enrollment | Rule: The my courses and enrollment is audit-logged with the account, the course, and the timestamp. | TC-ST-03-01-028 |

## 1.1 Academic Course Browsing

### TC-ST-03-01-001 — Browse by Education Board (e.g., CAPS, CBSE, IB)
**Type:** Edge
**Covers:** 1.1 → Browse by Education Board (e.g., CAPS, CBSE, IB); Rule: The hierarchy is Board → Grade → Subject; a course appears only under its board/grade/subject.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Browse by Education Board (e.g..
2. Observe the result and verify the full behavior: Browse by Education Board (e.g., CAPS, CBSE, IB).
**Expected Result:** Browse by Education Board (e.g., CAPS, CBSE, IB) — delivered exactly as documented.
**Priority:** Critical

### TC-ST-03-01-002 — Within a board, browse by Grade/Level
**Type:** Positive
**Covers:** 1.1 → Within a board, browse by Grade/Level; Rule: Sample content is limited (e.g., first 2 minutes); full content requires an active subscription/enrollment.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Within a board.
2. Observe the result and verify the full behavior: Within a board, browse by Grade/Level.
**Expected Result:** Within a board, browse by Grade/Level — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-003 — Within a grade, browse by Subject
**Type:** Positive
**Covers:** 1.1 → Within a grade, browse by Subject; Rule: Enrollment is gated by the Student's subscription; without it, the Student sees pricing and a "Choose a plan" prompt.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Within a grade.
2. Observe the result and verify the full behavior: Within a grade, browse by Subject.
**Expected Result:** Within a grade, browse by Subject — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-004 — Course card showing title, subject, grade, duration, and difficulty
**Type:** Positive
**Covers:** 1.1 → Course card showing title, subject, grade, duration, and difficulty; Rule: Search and filters operate within the academic catalog.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Course card showing title.
2. Observe the result and verify the full behavior: Course card showing title, subject, grade, duration, and difficulty.
**Expected Result:** Course card showing title, subject, grade, duration, and difficulty — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-005 — Course detail view: outline, learning outcomes, sample content, pricing
**Type:** Positive
**Covers:** 1.1 → Course detail view: outline, learning outcomes, sample content, pricing; Rule: Browsing and enrollment events are logged with the course and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Course detail view: outline.
2. Observe the result and verify the full behavior: Course detail view: outline, learning outcomes, sample content, pricing.
**Expected Result:** Course detail view: outline, learning outcomes, sample content, pricing — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-006 — Sample content preview (e.g., first 2 minutes of a video unlocked)
**Type:** Positive
**Covers:** 1.1 → Sample content preview (e.g., first 2 minutes of a video unlocked); Rule: The academic course browsing is audit-logged with the account, the course, and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Sample content preview (e.g..
2. Observe the result and verify the full behavior: Sample content preview (e.g., first 2 minutes of a video unlocked).
**Expected Result:** Sample content preview (e.g., first 2 minutes of a video unlocked) — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-007 — Enroll / "Start learning" action gated by subscription
**Type:** Positive
**Covers:** 1.1 → Enroll / "Start learning" action gated by subscription
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Enroll / "Start learning" action gated by subscription.
2. Observe the result and verify the full behavior: Enroll / "Start learning" action gated by subscription.
**Expected Result:** Enroll / "Start learning" action gated by subscription — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-008 — Search within academic courses by keyword
**Type:** Positive
**Covers:** 1.1 → Search within academic courses by keyword
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Search within academic courses by keyword.
2. Observe the result and verify the full behavior: Search within academic courses by keyword.
**Expected Result:** Search within academic courses by keyword — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-009 — Filter by subject, grade, and difficulty
**Type:** Positive
**Covers:** 1.1 → Filter by subject, grade, and difficulty
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Filter by subject.
2. Observe the result and verify the full behavior: Filter by subject, grade, and difficulty.
**Expected Result:** Filter by subject, grade, and difficulty — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-010 — Browsing and enrollment event logging
**Type:** Positive
**Covers:** 1.1 → Browsing and enrollment event logging
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Browsing and enrollment event logging.
2. Observe the result and verify the full behavior: Browsing and enrollment event logging.
**Expected Result:** Browsing and enrollment event logging — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-011 — Audit logging of the academic course browsing
**Type:** Positive
**Covers:** 1.1 → Audit logging of the academic course browsing
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, perform the action associated with: Audit logging of the academic course browsing.
2. Open the relevant activity / audit log and verify the event is recorded with the account, the action, and the timestamp.
**Expected Result:** The action is audit-logged — the account, the action, and the timestamp are recorded.
**Priority:** Critical

## 1.2 Professional Course Browsing

### TC-ST-03-01-012 — Browse by Category (e.g., IT, Business, Languages, Creative)
**Type:** Positive
**Covers:** 1.2 → Browse by Category (e.g., IT, Business, Languages, Creative); Rule: The hierarchy is Category → Sub Category → Course.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Browse by Category (e.g..
2. Observe the result and verify the full behavior: Browse by Category (e.g., IT, Business, Languages, Creative).
**Expected Result:** Browse by Category (e.g., IT, Business, Languages, Creative) — delivered exactly as documented.
**Priority:** Critical

### TC-ST-03-01-013 — Within a category, browse by Sub Category
**Type:** Positive
**Covers:** 1.2 → Within a category, browse by Sub Category; Rule: Prerequisites are shown; a course with unmet prerequisites is flagged but can still be browsed.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Within a category.
2. Observe the result and verify the full behavior: Within a category, browse by Sub Category.
**Expected Result:** Within a category, browse by Sub Category — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-014 — Course card showing title, category, duration, and skill tags
**Type:** Positive
**Covers:** 1.2 → Course card showing title, category, duration, and skill tags; Rule: Sample content is limited; full content requires an active subscription/enrollment.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Course card showing title.
2. Observe the result and verify the full behavior: Course card showing title, category, duration, and skill tags.
**Expected Result:** Course card showing title, category, duration, and skill tags — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-015 — Course detail view: overview, learning outcomes, instructor profile, duration, prerequisites, certifications
**Type:** Positive
**Covers:** 1.2 → Course detail view: overview, learning outcomes, instructor profile, duration, prerequisites, certifications; Rule: Search and filters operate within the professional catalog, including by skill tag.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Course detail view: overview.
2. Observe the result and verify the full behavior: Course detail view: overview, learning outcomes, instructor profile, duration, prerequisites, certifications.
**Expected Result:** Course detail view: overview, learning outcomes, instructor profile, duration, prerequisites, certifications — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-016 — Sample content preview before enrollment
**Type:** Positive
**Covers:** 1.2 → Sample content preview before enrollment; Rule: Browsing and enrollment events are logged with the course and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Sample content preview before enrollment.
2. Observe the result and verify the full behavior: Sample content preview before enrollment.
**Expected Result:** Sample content preview before enrollment — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-017 — Enroll / "Start learning" action gated by subscription
**Type:** Positive
**Covers:** 1.2 → Enroll / "Start learning" action gated by subscription; Rule: The professional course browsing is audit-logged with the account, the course, and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Enroll / "Start learning" action gated by subscription.
2. Observe the result and verify the full behavior: Enroll / "Start learning" action gated by subscription.
**Expected Result:** Enroll / "Start learning" action gated by subscription — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-018 — Search within professional courses by keyword or skill
**Type:** Positive
**Covers:** 1.2 → Search within professional courses by keyword or skill
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Search within professional courses by keyword or skill.
2. Observe the result and verify the full behavior: Search within professional courses by keyword or skill.
**Expected Result:** Search within professional courses by keyword or skill — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-019 — Filter by category, sub category, and skill
**Type:** Positive
**Covers:** 1.2 → Filter by category, sub category, and skill
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Filter by category.
2. Observe the result and verify the full behavior: Filter by category, sub category, and skill.
**Expected Result:** Filter by category, sub category, and skill — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-020 — Browsing and enrollment event logging
**Type:** Positive
**Covers:** 1.2 → Browsing and enrollment event logging
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Browsing and enrollment event logging.
2. Observe the result and verify the full behavior: Browsing and enrollment event logging.
**Expected Result:** Browsing and enrollment event logging — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-021 — Audit logging of the professional course browsing
**Type:** Positive
**Covers:** 1.2 → Audit logging of the professional course browsing
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, perform the action associated with: Audit logging of the professional course browsing.
2. Open the relevant activity / audit log and verify the event is recorded with the account, the action, and the timestamp.
**Expected Result:** The action is audit-logged — the account, the action, and the timestamp are recorded.
**Priority:** Critical

## 1.3 My Courses and Enrollment

### TC-ST-03-01-022 — "My courses" list with status (not started, in progress, completed)
**Type:** Positive
**Covers:** 1.3 → "My courses" list with status (not started, in progress, completed); Rule: A course's status is one of: not started, in progress, completed (or dropped).
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: "My courses" list with status (not started.
2. Observe the result and verify the full behavior: "My courses" list with status (not started, in progress, completed).
**Expected Result:** "My courses" list with status (not started, in progress, completed) — delivered exactly as documented.
**Priority:** Critical

### TC-ST-03-01-023 — Resume a course at the last watched position
**Type:** Positive
**Covers:** 1.3 → Resume a course at the last watched position; Rule: Resume returns the Student to the last watched position within the course.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Resume a course at the last watched position.
2. Observe the result and verify the full behavior: Resume a course at the last watched position.
**Expected Result:** Resume a course at the last watched position — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-024 — View course progress (percent complete, lessons done)
**Type:** Positive
**Covers:** 1.3 → View course progress (percent complete, lessons done); Rule: Dropping a course requires confirmation; prior progress is preserved for re-enrollment.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: View course progress (percent complete.
2. Observe the result and verify the full behavior: View course progress (percent complete, lessons done).
**Expected Result:** View course progress (percent complete, lessons done) — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-025 — Drop/unenroll from a course (with confirmation)
**Type:** Positive
**Covers:** 1.3 → Drop/unenroll from a course (with confirmation); Rule: Completion requires all required content to be done; optional content does not block completion.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Drop/unenroll from a course (with confirmation).
2. Observe the result and verify the full behavior: Drop/unenroll from a course (with confirmation).
**Expected Result:** Drop/unenroll from a course (with confirmation) — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-026 — Re-enroll in a previously dropped course
**Type:** Positive
**Covers:** 1.3 → Re-enroll in a previously dropped course; Rule: Completion feeds certificates and the analytics module.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Re-enroll in a previously dropped course.
2. Observe the result and verify the full behavior: Re-enroll in a previously dropped course.
**Expected Result:** Re-enroll in a previously dropped course — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-027 — Course completion marked when all required content is done
**Type:** Edge
**Covers:** 1.3 → Course completion marked when all required content is done; Rule: Enrollment, drop, re-enroll, and completion events are logged with the course and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Course completion marked when all required content is done.
2. Observe the result and verify the full behavior: Course completion marked when all required content is done.
**Expected Result:** Course completion marked when all required content is done — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-028 — Completion feeds certificates and analytics
**Type:** Positive
**Covers:** 1.3 → Completion feeds certificates and analytics; Rule: The my courses and enrollment is audit-logged with the account, the course, and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Completion feeds certificates and analytics.
2. Observe the result and verify the full behavior: Completion feeds certificates and analytics.
**Expected Result:** Completion feeds certificates and analytics — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-029 — Sort and filter "My courses" by status and subject
**Type:** Positive
**Covers:** 1.3 → Sort and filter "My courses" by status and subject
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Sort and filter "My courses" by status and subject.
2. Observe the result and verify the full behavior: Sort and filter "My courses" by status and subject.
**Expected Result:** Sort and filter "My courses" by status and subject — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-030 — Enrollment and completion event logging
**Type:** Positive
**Covers:** 1.3 → Enrollment and completion event logging
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Enrollment and completion event logging.
2. Observe the result and verify the full behavior: Enrollment and completion event logging.
**Expected Result:** Enrollment and completion event logging — delivered exactly as documented.
**Priority:** High

### TC-ST-03-01-031 — Audit logging of the my courses and enrollment
**Type:** Positive
**Covers:** 1.3 → Audit logging of the my courses and enrollment
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, perform the action associated with: Audit logging of the my courses and enrollment.
2. Open the relevant activity / audit log and verify the event is recorded with the account, the action, and the timestamp.
**Expected Result:** The action is audit-logged — the account, the action, and the timestamp are recorded.
**Priority:** Critical
