Running Theme Loading System Tests... ✓ PASSED: App/Presentation/Partials/theme directory should exist ✓ PASSED: ml theme should have header.php, footer.php, menu.php, notifications.php ✓ PASSED: ml2 theme should have header.php, footer.php, menu.php, notifications.php ✓ PASSED: original theme should have header.php, footer.php, menu.php, notifications.php ✓ PASSED: ml theme CSS (bulma-custom.css) should exist ✓ PASSED: ml2 theme CSS (ml2-theme.css) should exist ✓ PASSED: original theme CSS (original.css) should exist ✓ PASSED: ml header.php should link to bulma-custom.css ✓ PASSED: ml2 header.php should link to ml2-theme.css ✓ PASSED: original header.php should link to original.css (not original-theme.css) ✓ PASSED: All partials should have fallback logic to ml theme ✓ PASSED: Presenter should sanitize theme names (only allow alphanumeric and underscore) ✓ PASSED: Presenter should read theme from config and use resolveTheme method ✓ PASSED: Presenter should fall back to ml theme when theme not found ============================================================ TEST RESULTS SUMMARY ============================================================ ✓ Theme directory exists ✓ ml theme has all required files ✓ ml2 theme has all required files ✓ original theme has all required files ✓ ml theme CSS exists ✓ ml2 theme CSS exists ✓ original theme CSS exists ✓ ml header links to correct CSS ✓ ml2 header links to correct CSS ✓ original header links to correct CSS ✗ config.json has theme setting ✗ config.json has valid theme value ✓ All partials have fallback to ml theme ✓ Theme names are sanitized ✓ Presenter reads theme from config ✓ Presenter falls back for invalid themes ------------------------------------------------------------ Total: 16 tests Passed: 14 Failed: 2 Success Rate: 87.5% ------------------------------------------------------------ ❌ Some tests failed. Please review the output above.