Gap 4 - CI/CD Integration (100%):
- Add Trigger Now panel to CicdIntegrationView (fire suite from UI)
- Add Pipeline Runs History table showing all scheduler-triggered executions
- Upgrade snippet generator into card layout with breadcrumbs
Gap 5 - Governance and Audit (100%):
- Create AuditService - centralised, never-throws helper for writing audit logs
- Wire AuditService into TestSuiteController (CREATE/UPDATE/DELETE/RUN)
- Wire AuditService into TestCaseController (CREATE/UPDATE/DELETE)
- Wire AuditService into EnvironmentController (already had direct writes, now uses service)
- Create AnalyticsController - exposes 4 real analytics REST endpoints
(/api/analytics/time-saved, /flaky-suites, /suite-performance, /fleet-health)
- Rewrite AnalyticsView.jsx to call real backend APIs instead of client-side JS
computation; adds sparkline activity chart, fleet health widget, suite
performance leaderboard with visual pass rate bars, trend badges on flakiness
- Remove @CrossOrigin wildcard from TestSuiteController and TestCaseController