# Feature 003: Manual Testing Checklist ## Prerequisites 1. **Start the application:** ```bash ./vendor/bin/sail up -d ./vendor/bin/sail artisan serve ``` 2. **Access Filament admin:** http://localhost/admin 3. **Create test tenant with Settings Catalog policy** (or use existing) --- ## T023: Verify JSON Tab Still Works **Task:** Ensure JSON tab navigation and functionality from Feature 002 is intact ### Steps: 1. Navigate to `/admin/policies` 2. Click on a **Settings Catalog** policy 3. Verify **two tabs** are visible: "Settings" and "JSON" 4. Click "JSON" tab 5. Verify JSON viewer renders the policy snapshot 6. Click copy button next to JSON content 7. Paste into text editor - should contain valid JSON ### ✅ Success Criteria: - [ ] Both tabs render - [ ] Tab switching works - [ ] JSON content displays correctly - [ ] Copy button functional - [ ] No JavaScript errors in browser console ### ❌ Failure Handling: If JSON tab is broken, check: - Browser console for errors - `pepperfm/filament-json` package installation - PolicyResource.php tabs configuration --- ## T024: Verify Fallback for Uncached Definitions **Task:** Check UI shows prettified labels when definitions are not cached ### Setup: Create a policy with an unknown definition ID: ```php php artisan tinker $policy = Policy::factory()->create([ 'policy_type' => 'settingsCatalog', 'display_name' => 'Fallback Test Policy', ]); PolicyVersion::create([ 'policy_id' => $policy->id, 'tenant_id' => $policy->tenant_id, 'version_number' => 1, 'policy_type' => 'settingsCatalog', 'platform' => 'windows', 'snapshot' => [ '@odata.type' => '#microsoft.graph.deviceManagementConfigurationPolicy', 'settings' => [[ 'settingInstance' => [ 'settingDefinitionId' => 'device_vendor_msft_uncached_test_setting', 'simpleSettingValue' => ['value' => 123] ] ]] ], 'created_by' => 'test@example.com', 'captured_at' => now(), ]); ``` ### Steps: 1. Navigate to the created policy view 2. Open Settings tab 3. Look for setting display ### ✅ Success Criteria: - [ ] Page renders without crash - [ ] Setting shows prettified label: "Device Vendor Msft Uncached Test Setting" - [ ] No error messages displayed - [ ] Value (123) displays correctly - [ ] No JavaScript errors ### ❌ Failure Handling: - If crash occurs, check SettingsCatalogDefinitionResolver fallback logic - If raw ID shows, check PolicyNormalizer prettifyDefinitionId() method --- ## T025: JSON Viewer Scope **Task:** Ensure JSON viewer only renders on Policy View page ### Steps: 1. Navigate to `/admin/policies` (list view) 2. **Verify:** No JSON viewer appears on list page 3. Navigate to `/admin/tenants` 4. **Verify:** No JSON viewer on tenant list 5. Click on a tenant detail page 6. **Verify:** No JSON viewer on tenant detail 7. Navigate back to **Policy View** page 8. **Verify:** JSON viewer present ONLY here ### ✅ Success Criteria: - [ ] JSON viewer ONLY on Policy View page - [ ] Not globally injected into all Filament pages - [ ] No console errors on other pages --- ## T034: Display Names vs Raw IDs **Task:** Verify Settings tab shows human-readable names, not definition IDs ### Steps: 1. Warm cache for a policy: ```bash ./vendor/bin/sail artisan app:warm-settings-catalog-definitions ``` 2. Navigate to Settings Catalog policy view 3. Open Settings tab 4. Inspect setting labels ### ✅ Success Criteria: - [ ] Labels show display names: "Allow Real-time Monitoring" - [ ] Raw definition IDs NOT visible: `device_vendor_msft_policy_config_defender_allowrealtimemonitoring` - [ ] Help text appears below labels (if available) - [ ] Category grouping visible (e.g., "Windows Defender Antivirus") --- ## T035: Value Formatting **Task:** Verify setting values are formatted appropriately ### Test Cases: #### Boolean Values: - [ ] `true` shows as "Enabled" or badge - [ ] `false` shows as "Disabled" or badge #### Integer Values: - [ ] Large numbers formatted: `12345` → `12,345` - [ ] Small numbers display as-is: `5` → `5` #### String Values: - [ ] Short strings display fully - [ ] Long strings truncated with "..." (hover for full text) #### Choice/Enum Values: - [ ] Shows human-readable label (if available) - [ ] Falls back to choice value if label missing ### ✅ Success Criteria: All value types render clearly and are visually distinct --- ## T036: Search/Filter Functionality **Task:** Test client-side search filtering ### Steps: 1. Navigate to Settings Catalog policy with **multiple settings** (10+) 2. Locate search box above settings list 3. Type "defender" in search box 4. **Verify:** Only settings with "defender" in name/description remain visible 5. Clear search box 6. **Verify:** All settings reappear 7. Test case-insensitive search: "DEFENDER" 8. **Verify:** Still filters correctly ### ✅ Success Criteria: - [ ] Search box present - [ ] Instant filtering (no page reload) - [ ] Case-insensitive matching - [ ] Clear/reset works - [ ] No JavaScript errors during search --- ## T042: Full QA Walkthrough ### Complete User Journey: 1. **Login** to Filament admin 2. **Navigate** to Policies list 3. **Select** Settings Catalog policy 4. **Verify** Settings tab active by default 5. **Scroll** through grouped settings 6. **Expand/Collapse** accordion groups 7. **Hover** over truncated values (tooltips) 8. **Click** copy buttons 9. **Use** search filter 10. **Switch** to JSON tab 11. **Switch** back to Settings tab 12. **Test** dark mode toggle (if applicable) ### ✅ Success Criteria: - [ ] Smooth navigation throughout - [ ] No visual glitches - [ ] No console errors - [ ] Responsive layout on different screen sizes - [ ] Accessible keyboard navigation --- ## Sign-off **Tester:** _________________ **Date:** _________________ **Result:** ☐ PASS ☐ FAIL (document issues below) ### Issues Found: _____________________________________________ _____________________________________________ _____________________________________________ ### Recommendations: _____________________________________________ _____________________________________________ _____________________________________________