# 3. Mobile Offline Features — Test Cases

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

## Test Execution Policy

- Zero tolerance: any deviation from the documented behavior is a defect.
- Every failed test is logged with a Bug ID, the feature, the sub-feature, the expected vs actual result, and the severity; 100% of bugs are fixed before the group passes.
- 100% pass rate is required for the group to be marked complete.

## Coverage Matrix

| Feature | Sub-feature / Rule | Test IDs |
|---------|--------------------|----------|
| 3.1 Data Saver Mode Configuration | Data saver enablement | TC-SA-OFF-03-001 |
| 3.1 Data Saver Mode Configuration | Data saver behavior | TC-SA-OFF-03-002 |
| 3.1 Data Saver Mode Configuration | Data usage cap | TC-SA-OFF-03-003 |
| 3.1 Data Saver Mode Configuration | Data usage warning | TC-SA-OFF-03-004 |
| 3.1 Data Saver Mode Configuration | Data usage tracker | TC-SA-OFF-03-005 |
| 3.1 Data Saver Mode Configuration | Rule: a cap blocks further data-consuming actions | TC-SA-OFF-03-006 |
| 3.1 Data Saver Mode Configuration | Rule: a warning is sent once when the threshold is crossed | TC-SA-OFF-03-007 |
| 3.1 Data Saver Mode Configuration | Rule: a cap of zero disables data-consuming features | TC-SA-OFF-03-008 |
| 3.1 Data Saver Mode Configuration | Rule: configuration changes are audit-logged | TC-SA-OFF-03-009 |
| 3.2 Adaptive Video Quality Settings | Auto-adjust enablement | TC-SA-OFF-03-010 |
| 3.2 Adaptive Video Quality Settings | Quality tiers | TC-SA-OFF-03-011 |
| 3.2 Adaptive Video Quality Settings | Manual quality selection | TC-SA-OFF-03-012 |
| 3.2 Adaptive Video Quality Settings | Quality fallback | TC-SA-OFF-03-013 |
| 3.2 Adaptive Video Quality Settings | Data usage tracker | TC-SA-OFF-03-014 |
| 3.2 Adaptive Video Quality Settings | Rule: auto-adjust selects the highest sustainable tier | TC-SA-OFF-03-015 |
| 3.2 Adaptive Video Quality Settings | Rule: a manual selection overrides auto-adjust | TC-SA-OFF-03-016 |
| 3.2 Adaptive Video Quality Settings | Rule: a fallback drops to a lower tier on slow network | TC-SA-OFF-03-017 |
| 3.2 Adaptive Video Quality Settings | Rule: a network below the lowest tier plays the lowest tier | TC-SA-OFF-03-018 |
| 3.2 Adaptive Video Quality Settings | Rule: configuration changes are audit-logged | TC-SA-OFF-03-019 |
| 3.3 Offline Video Player Configuration | Player enablement | TC-SA-OFF-03-020 |
| 3.3 Offline Video Player Configuration | Playback features | TC-SA-OFF-03-021 |
| 3.3 Offline Video Player Configuration | Picture-in-picture | TC-SA-OFF-03-022 |
| 3.3 Offline Video Player Configuration | Offline playback limit | TC-SA-OFF-03-023 |
| 3.3 Offline Video Player Configuration | Player quality | TC-SA-OFF-03-024 |
| 3.3 Offline Video Player Configuration | Rule: a player off shows no offline playback option | TC-SA-OFF-03-025 |
| 3.3 Offline Video Player Configuration | Rule: a resume feature restores the last position | TC-SA-OFF-03-026 |
| 3.3 Offline Video Player Configuration | Rule: a playback of an expired download is blocked | TC-SA-OFF-03-027 |
| 3.3 Offline Video Player Configuration | Rule: configuration changes are audit-logged | TC-SA-OFF-03-028 |
| 3.4 Gesture Controls Configuration | Gesture enablement | TC-SA-OFF-03-029 |
| 3.4 Gesture Controls Configuration | Swipe controls | TC-SA-OFF-03-030 |
| 3.4 Gesture Controls Configuration | Double-tap bookmark | TC-SA-OFF-03-031 |
| 3.4 Gesture Controls Configuration | Pinch zoom | TC-SA-OFF-03-032 |
| 3.4 Gesture Controls Configuration | Gesture sensitivity | TC-SA-OFF-03-033 |
| 3.4 Gesture Controls Configuration | Rule: a gesture off disables all gesture interactions | TC-SA-OFF-03-034 |
| 3.4 Gesture Controls Configuration | Rule: a swipe forward skips the configured seconds | TC-SA-OFF-03-035 |
| 3.4 Gesture Controls Configuration | Rule: a double tap creates a bookmark | TC-SA-OFF-03-036 |
| 3.4 Gesture Controls Configuration | Rule: a pinch zoom scales within the allowed range | TC-SA-OFF-03-037 |
| 3.4 Gesture Controls Configuration | Rule: configuration changes are audit-logged | TC-SA-OFF-03-038 |
| 3.5 Push Notification for Offline Content | Notification enablement | TC-SA-OFF-03-039 |
| 3.5 Push Notification for Offline Content | Download notifications | TC-SA-OFF-03-040 |
| 3.5 Push Notification for Offline Content | Expiry notifications | TC-SA-OFF-03-041 |
| 3.5 Push Notification for Offline Content | Sync notifications | TC-SA-OFF-03-042 |
| 3.5 Push Notification for Offline Content | Notification schedule | TC-SA-OFF-03-043 |
| 3.5 Push Notification for Offline Content | Rule: an enablement off suppresses all notifications | TC-SA-OFF-03-044 |
| 3.5 Push Notification for Offline Content | Rule: a quiet hours schedule suppresses notifications | TC-SA-OFF-03-045 |
| 3.5 Push Notification for Offline Content | Rule: a suppressed event type is not sent | TC-SA-OFF-03-046 |
| 3.5 Push Notification for Offline Content | Rule: configuration changes are audit-logged | TC-SA-OFF-03-047 |

### TC-SA-OFF-03-001 — Data saver enablement
**Type:** Positive
**Covers:** 3.1 → Data saver enablement: data saver mode toggled on or off by default
**Preconditions:** A Super Admin account is active.
**Steps:**
1. As a Super Admin, set data saver mode to on by default and save.
2. As a learner, open the mobile app.
3. Observe the result and verify the full behavior: data saver mode is on by default.
**Expected Result:** The enablement works — data saver is on by default, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-002 — Data saver behavior
**Type:** Positive
**Covers:** 3.1 → Data saver behavior: the behavior under data saver
**Preconditions:** A Super Admin account is active; data saver is on; compressed video is configured.
**Steps:**
1. As a Super Admin, set the data saver behavior to compressed video and save.
2. As a learner, play a video under data saver.
3. Observe the result and verify the full behavior: the video plays at a compressed bitrate.
**Expected Result:** The behavior is applied — the video is compressed, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-003 — Data usage cap
**Type:** Positive
**Covers:** 3.1 → Data usage cap: the daily or monthly data usage cap per learner
**Preconditions:** A Super Admin account is active; the daily cap is 100MB.
**Steps:**
1. As a Super Admin, set the daily data usage cap to 100MB and save.
2. As a learner, use data until the cap is reached.
3. Observe the result and verify the full behavior: further data-consuming actions are blocked.
**Expected Result:** The cap is enforced — further usage is blocked, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-004 — Data usage warning
**Type:** Positive
**Covers:** 3.1 → Data usage warning: the warning threshold before the cap is reached
**Preconditions:** A Super Admin account is active; the warning threshold is 80MB.
**Steps:**
1. As a Super Admin, set the warning threshold to 80MB and save.
2. As a learner, use data until 80MB.
3. Observe the result and verify the full behavior: a warning is shown.
**Expected Result:** The warning is shown — the threshold is communicated, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-005 — Data usage tracker
**Type:** Positive
**Covers:** 3.1 → Data usage tracker: the per-learner data usage tracking
**Preconditions:** A Super Admin account is active; a learner has used data.
**Steps:**
1. As a Super Admin, open the data usage tracker.
2. Observe the result and verify the full behavior: the usage per learner per day and month is shown.
**Expected Result:** The tracker is shown — the usage is visible, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-006 — Rule: a cap blocks further data-consuming actions
**Type:** Negative
**Covers:** 3.1 → Rule: a data usage cap blocks further data-consuming actions when reached
**Preconditions:** A Super Admin account is active; a learner is at the cap.
**Steps:**
1. As a learner, attempt to stream a video.
2. Observe the result and verify the full behavior: the streaming is blocked.
**Expected Result:** The action is blocked — the cap is enforced, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-007 — Rule: a warning is sent once when the threshold is crossed
**Type:** Positive
**Covers:** 3.1 → Rule: a data usage warning is sent once when the warning threshold is crossed
**Preconditions:** A Super Admin account is active; the warning threshold is crossed.
**Steps:**
1. As a learner, cross the warning threshold.
2. Observe the result and verify the full behavior: a single warning is shown.
**Expected Result:** The warning is single — it is not repeated, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-008 — Rule: a cap of zero disables data-consuming features
**Type:** Negative
**Covers:** 3.1 → Rule: a cap of zero disables data-consuming features entirely
**Preconditions:** A Super Admin account is active; the cap is set to zero.
**Steps:**
1. As a learner, attempt to stream a video.
2. Observe the result and verify the full behavior: the streaming is disabled.
**Expected Result:** The feature is disabled — the zero cap is enforced, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-009 — Rule: configuration changes are audit-logged
**Type:** Positive
**Covers:** 3.1 → Audit logging of data saver mode configuration
**Preconditions:** A Super Admin account is active; the audit log is accessible.
**Steps:**
1. As a Super Admin, change the data usage cap and save.
2. Open the audit log.
3. Observe the result and verify the full behavior: the change is recorded with the actor and timestamp.
**Expected Result:** The change is audit-logged — the actor and timestamp are recorded, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-010 — Auto-adjust enablement
**Type:** Positive
**Covers:** 3.2 → Auto-adjust enablement: auto-adjust of video quality based on network speed
**Preconditions:** A Super Admin account is active; auto-adjust is enabled.
**Steps:**
1. As a Super Admin, enable auto-adjust and save.
2. As a learner, play a video on a varying network.
3. Observe the result and verify the full behavior: the video quality adjusts to the network speed.
**Expected Result:** The auto-adjust works — the quality adjusts, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-011 — Quality tiers
**Type:** Positive
**Covers:** 3.2 → Quality tiers: the quality tiers available
**Preconditions:** A Super Admin account is active; the tiers are low, medium, high, auto.
**Steps:**
1. As a Super Admin, set the quality tiers and save.
2. As a learner, open the quality selection.
3. Observe the result and verify the full behavior: the tiers are shown.
**Expected Result:** The tiers are shown — the available tiers are visible, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-012 — Manual quality selection
**Type:** Positive
**Covers:** 3.2 → Manual quality selection: the manual quality selection override
**Preconditions:** A Super Admin account is active; manual selection is enabled.
**Steps:**
1. As a learner, select a specific quality tier manually.
2. Observe the result and verify the full behavior: the video plays at the selected tier.
**Expected Result:** The manual selection works — the video is at the selected tier, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-013 — Quality fallback
**Type:** Positive
**Covers:** 3.2 → Quality fallback: the fallback quality on a sustained slow network
**Preconditions:** A Super Admin account is active; the fallback is set to low.
**Steps:**
1. As a learner, play a video on a sustained slow network.
2. Observe the result and verify the full behavior: the quality drops to the fallback tier.
**Expected Result:** The fallback works — the quality drops to low, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-014 — Data usage tracker
**Type:** Positive
**Covers:** 3.2 → Data usage tracker: the data usage per video session
**Preconditions:** A Super Admin account is active; a learner has watched a video.
**Steps:**
1. As a Super Admin, open the data usage tracker.
2. Observe the result and verify the full behavior: the data used per video session is shown.
**Expected Result:** The tracker is shown — the per-session usage is visible, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-015 — Rule: auto-adjust selects the highest sustainable tier
**Type:** Positive
**Covers:** 3.2 → Rule: an auto-adjust quality selects the highest tier the network can sustain
**Preconditions:** A Super Admin account is active; auto-adjust is on; the network sustains medium.
**Steps:**
1. As a learner, play a video.
2. Observe the result and verify the full behavior: the video plays at medium, the highest sustainable tier.
**Expected Result:** The highest sustainable tier is selected — the auto-adjust is correct, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-016 — Rule: a manual selection overrides auto-adjust
**Type:** Positive
**Covers:** 3.2 → Rule: a manual quality selection overrides auto-adjust for the session
**Preconditions:** A Super Admin account is active; auto-adjust is on; a learner selects high manually.
**Steps:**
1. As a learner, select high quality manually on a slow network.
2. Observe the result and verify the full behavior: the video plays at high, not auto-adjusted.
**Expected Result:** The manual selection is honored — the video is at high, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-017 — Rule: a fallback drops to a lower tier on slow network
**Type:** Positive
**Covers:** 3.2 → Rule: a quality fallback drops to a lower tier after a sustained slow network
**Preconditions:** A Super Admin account is active; the network is sustained slow.
**Steps:**
1. As a learner, play a video on the slow network.
2. Observe the result and verify the full behavior: the quality drops to the fallback tier.
**Expected Result:** The fallback is applied — the quality drops, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-018 — Rule: a network below the lowest tier plays the lowest tier
**Type:** Positive
**Covers:** 3.2 → Rule: a network speed below the lowest tier plays the lowest tier
**Preconditions:** A Super Admin account is active; the network is below the lowest tier.
**Steps:**
1. As a learner, play a video.
2. Observe the result and verify the full behavior: the video plays at the lowest tier.
**Expected Result:** The lowest tier is played — the floor is respected, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-019 — Rule: configuration changes are audit-logged
**Type:** Positive
**Covers:** 3.2 → Audit logging of adaptive video quality settings
**Preconditions:** A Super Admin account is active; the audit log is accessible.
**Steps:**
1. As a Super Admin, change the fallback quality and save.
2. Open the audit log.
3. Observe the result and verify the full behavior: the change is recorded with the actor and timestamp.
**Expected Result:** The change is audit-logged — the actor and timestamp are recorded, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-020 — Player enablement
**Type:** Positive
**Covers:** 3.3 → Player enablement: the offline video player toggled on or off
**Preconditions:** A Super Admin account is active; the player is enabled.
**Steps:**
1. As a Super Admin, enable the offline video player and save.
2. As a learner, open a downloaded video offline.
3. Observe the result and verify the full behavior: the video plays in the offline player.
**Expected Result:** The player works — the video plays offline, delivered exactly as documented.
**Priority:** Critical

### TC-SA-OFF-03-021 — Playback features
**Type:** Positive
**Covers:** 3.3 → Playback features: the playback features available offline
**Preconditions:** A Super Admin account is active; resume, speed, and seek are enabled.
**Steps:**
1. As a Super Admin, enable the playback features and save.
2. As a learner, use resume, speed, and seek on an offline video.
3. Observe the result and verify the full behavior: all features work offline.
**Expected Result:** The features work — resume, speed, and seek are available offline, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-022 — Picture-in-picture
**Type:** Positive
**Covers:** 3.3 → Picture-in-picture: the picture-in-picture mode for offline video
**Preconditions:** A Super Admin account is active; picture-in-picture is enabled.
**Steps:**
1. As a learner, start an offline video and background the app.
2. Observe the result and verify the full behavior: the video continues in picture-in-picture.
**Expected Result:** The picture-in-picture works — the video continues in the background, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-023 — Offline playback limit
**Type:** Positive
**Covers:** 3.3 → Offline playback limit: the limit on offline playback sessions
**Preconditions:** A Super Admin account is active; the limit is 5 sessions.
**Steps:**
1. As a Super Admin, set the offline playback limit to 5 and save.
2. As a learner, play 5 offline sessions.
3. Attempt a 6th session.
4. Observe the result and verify the full behavior: the 6th session is blocked.
**Expected Result:** The limit is enforced — the 6th session is blocked, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-024 — Player quality
**Type:** Positive
**Covers:** 3.3 → Player quality: the quality of offline playback
**Preconditions:** A Super Admin account is active; a video is downloaded at 720p.
**Steps:**
1. As a learner, play the downloaded video offline.
2. Observe the result and verify the full behavior: the playback quality is capped at 720p.
**Expected Result:** The quality is capped — it does not exceed the downloaded quality, delivered exactly as documented.
**Priority:** Low

### TC-SA-OFF-03-025 — Rule: a player off shows no offline playback option
**Type:** Negative
**Covers:** 3.3 → Rule: an offline video player off shows no offline playback option
**Preconditions:** A Super Admin account is active; the player is disabled.
**Steps:**
1. As a learner, open a downloaded video offline.
2. Observe the result and verify the full behavior: no offline playback option is shown.
**Expected Result:** No playback option is shown — the disablement is enforced, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-026 — Rule: a resume feature restores the last position
**Type:** Positive
**Covers:** 3.3 → Rule: a playback feature of resume restores the last watched position
**Preconditions:** A Super Admin account is active; a learner watched a video to 5 minutes.
**Steps:**
1. As a learner, reopen the video offline.
2. Observe the result and verify the full behavior: playback resumes at 5 minutes.
**Expected Result:** The resume works — playback resumes at the last position, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-027 — Rule: a playback of an expired download is blocked
**Type:** Negative
**Covers:** 3.3 → Rule: a playback of an expired download is blocked
**Preconditions:** A Super Admin account is active; a download has expired.
**Steps:**
1. As a learner, attempt to play the expired download offline.
2. Observe the result and verify the full behavior: the playback is blocked.
**Expected Result:** The playback is blocked — the expiry is enforced, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-028 — Rule: configuration changes are audit-logged
**Type:** Positive
**Covers:** 3.3 → Audit logging of offline video player configuration
**Preconditions:** A Super Admin account is active; the audit log is accessible.
**Steps:**
1. As a Super Admin, change the offline playback limit and save.
2. Open the audit log.
3. Observe the result and verify the full behavior: the change is recorded with the actor and timestamp.
**Expected Result:** The change is audit-logged — the actor and timestamp are recorded, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-029 — Gesture enablement
**Type:** Positive
**Covers:** 3.4 → Gesture enablement: gesture controls toggled on or off
**Preconditions:** A Super Admin account is active; gestures are enabled.
**Steps:**
1. As a Super Admin, enable gesture controls and save.
2. As a learner, use a swipe on the video.
3. Observe the result and verify the full behavior: the swipe gesture works.
**Expected Result:** The gestures work — the swipe is recognized, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-030 — Swipe controls
**Type:** Positive
**Covers:** 3.4 → Swipe controls: the swipe to skip forward and backward
**Preconditions:** A Super Admin account is active; the swipe skip is 10 seconds.
**Steps:**
1. As a Super Admin, set the swipe skip to 10 seconds and save.
2. As a learner, swipe forward on the video.
3. Observe the result and verify the full behavior: the video skips forward 10 seconds.
**Expected Result:** The swipe works — the video skips 10 seconds, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-031 — Double-tap bookmark
**Type:** Positive
**Covers:** 3.4 → Double-tap bookmark: the double tap to bookmark a position
**Preconditions:** A Super Admin account is active; the double-tap bookmark is enabled.
**Steps:**
1. As a learner, double tap on the video at 3 minutes.
2. Observe the result and verify the full behavior: a bookmark is created at 3 minutes.
**Expected Result:** The bookmark is created — it is at the tapped position, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-032 — Pinch zoom
**Type:** Positive
**Covers:** 3.4 → Pinch zoom: the pinch to zoom on diagrams
**Preconditions:** A Super Admin account is active; the pinch zoom is enabled; a diagram is shown.
**Steps:**
1. As a learner, pinch out on the diagram.
2. Observe the result and verify the full behavior: the diagram zooms in.
**Expected Result:** The pinch zoom works — the diagram scales, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-033 — Gesture sensitivity
**Type:** Positive
**Covers:** 3.4 → Gesture sensitivity: the sensitivity threshold for gestures
**Preconditions:** A Super Admin account is active; the sensitivity is set to high.
**Steps:**
1. As a Super Admin, set the gesture sensitivity to high and save.
2. As a learner, perform a small swipe.
3. Observe the result and verify the full behavior: the small swipe is recognized.
**Expected Result:** The sensitivity is applied — the small gesture is recognized, delivered exactly as documented.
**Priority:** Low

### TC-SA-OFF-03-034 — Rule: a gesture off disables all gesture interactions
**Type:** Negative
**Covers:** 3.4 → Rule: a gesture controls off disables all gesture interactions
**Preconditions:** A Super Admin account is active; gestures are disabled.
**Steps:**
1. As a learner, perform a swipe on the video.
2. Observe the result and verify the full behavior: the swipe is not recognized.
**Expected Result:** The gesture is not recognized — the disablement is enforced, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-035 — Rule: a swipe forward skips the configured seconds
**Type:** Positive
**Covers:** 3.4 → Rule: a swipe forward skips a configured number of seconds
**Preconditions:** A Super Admin account is active; the swipe skip is 15 seconds.
**Steps:**
1. As a learner, swipe forward on the video.
2. Observe the result and verify the full behavior: the video skips forward 15 seconds.
**Expected Result:** The skip is correct — the video advances 15 seconds, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-036 — Rule: a double tap creates a bookmark
**Type:** Positive
**Covers:** 3.4 → Rule: a double tap creates a bookmark at the current position
**Preconditions:** A Super Admin account is active; the double-tap bookmark is enabled.
**Steps:**
1. As a learner, double tap on the video.
2. Check the bookmarks.
3. Observe the result and verify the full behavior: a bookmark is at the current position.
**Expected Result:** The bookmark is created — it is at the current position, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-037 — Rule: a pinch zoom scales within the allowed range
**Type:** Positive
**Covers:** 3.4 → Rule: a pinch zoom scales the diagram within the allowed zoom range
**Preconditions:** A Super Admin account is active; the zoom range is 1x to 4x.
**Steps:**
1. As a learner, pinch out beyond 4x on the diagram.
2. Observe the result and verify the full behavior: the zoom is capped at 4x.
**Expected Result:** The zoom is capped — it does not exceed the range, delivered exactly as documented.
**Priority:** Low

### TC-SA-OFF-03-038 — Rule: configuration changes are audit-logged
**Type:** Positive
**Covers:** 3.4 → Audit logging of gesture controls configuration
**Preconditions:** A Super Admin account is active; the audit log is accessible.
**Steps:**
1. As a Super Admin, change the swipe skip and save.
2. Open the audit log.
3. Observe the result and verify the full behavior: the change is recorded with the actor and timestamp.
**Expected Result:** The change is audit-logged — the actor and timestamp are recorded, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-039 — Notification enablement
**Type:** Positive
**Covers:** 3.5 → Notification enablement: push notifications for offline content toggled on or off
**Preconditions:** A Super Admin account is active; notifications are enabled.
**Steps:**
1. As a Super Admin, enable offline content notifications and save.
2. As a learner, trigger a download completion.
3. Observe the result and verify the full behavior: a push notification is received.
**Expected Result:** The notification is sent — the enablement works, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-040 — Download notifications
**Type:** Positive
**Covers:** 3.5 → Download notifications: notifications on download start, completion, and failure
**Preconditions:** A Super Admin account is active; download notifications are enabled.
**Steps:**
1. As a learner, start a download.
2. Observe the result and verify the full behavior: notifications are sent on start, completion, and failure.
**Expected Result:** The notifications are sent — all three events are notified, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-041 — Expiry notifications
**Type:** Positive
**Covers:** 3.5 → Expiry notifications: notifications before downloaded content expires
**Preconditions:** A Super Admin account is active; expiry notifications are enabled; a download is near expiry.
**Steps:**
1. As a learner, wait for the expiry window.
2. Observe the result and verify the full behavior: an expiry notification is received.
**Expected Result:** The notification is sent — the learner is notified before expiry, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-042 — Sync notifications
**Type:** Positive
**Covers:** 3.5 → Sync notifications: notifications on sync completion and failure
**Preconditions:** A Super Admin account is active; sync notifications are enabled.
**Steps:**
1. As a learner, trigger a sync.
2. Observe the result and verify the full behavior: a notification is sent on sync completion.
**Expected Result:** The notification is sent — the sync event is notified, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-043 — Notification schedule
**Type:** Positive
**Covers:** 3.5 → Notification schedule: the quiet hours for offline content notifications
**Preconditions:** A Super Admin account is active; quiet hours are 10pm to 7am.
**Steps:**
1. As a Super Admin, set the quiet hours and save.
2. As a learner, trigger a notification at 11pm.
3. Observe the result and verify the full behavior: the notification is suppressed.
**Expected Result:** The notification is suppressed — the quiet hours are enforced, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-044 — Rule: an enablement off suppresses all notifications
**Type:** Negative
**Covers:** 3.5 → Rule: a notification enablement off suppresses all offline content notifications
**Preconditions:** A Super Admin account is active; notifications are disabled.
**Steps:**
1. As a learner, trigger a download completion.
2. Observe the result and verify the full behavior: no notification is sent.
**Expected Result:** No notification is sent — the disablement is enforced, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-03-045 — Rule: a quiet hours schedule suppresses notifications
**Type:** Positive
**Covers:** 3.5 → Rule: a quiet hours schedule suppresses notifications within the window
**Preconditions:** A Super Admin account is active; quiet hours are active.
**Steps:**
1. As a learner, trigger a notification within quiet hours.
2. Observe the result and verify the full behavior: the notification is suppressed.
**Expected Result:** The notification is suppressed — the quiet hours are enforced, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-046 — Rule: a suppressed event type is not sent
**Type:** Negative
**Covers:** 3.5 → Rule: a notification for a suppressed event type is not sent
**Preconditions:** A Super Admin account is active; sync notifications are disabled.
**Steps:**
1. As a learner, trigger a sync.
2. Observe the result and verify the full behavior: no sync notification is sent.
**Expected Result:** No notification is sent — the suppressed type is respected, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-03-047 — Rule: configuration changes are audit-logged
**Type:** Positive
**Covers:** 3.5 → Audit logging of push notification for offline content
**Preconditions:** A Super Admin account is active; the audit log is accessible.
**Steps:**
1. As a Super Admin, change the quiet hours and save.
2. Open the audit log.
3. Observe the result and verify the full behavior: the change is recorded with the actor and timestamp.
**Expected Result:** The change is audit-logged — the actor and timestamp are recorded, delivered exactly as documented.
**Priority:** High
