Integration testing
Integration tests prove the full path works together: not just that each box responds in isolation, but that the portfolio behaves as a system under realistic conditions.
End-to-end system coverage
Frontend to gateway
Browser or API client hits the same origins and paths the deployed app uses—no bypassing the gateway in happy path.
Gateway to backend service
Routing, auth headers, and middleware execute; requests reach RAG, Eval, Incident, or DevOps as intended.
UI rendering of service responses
After a real (or staged) call, the UI shows loading, success, and structured results—tables, citations, errors.
Graceful fallback / error states
When services timeout or return errors, users see clear messaging—not infinite spinners or raw stack traces.
Local vs production smoke
Different environments, different risk profiles.
Local execution runs against Docker Compose with full stack and optional test data. Suites can exercise real LLM calls (guarded by keys and quotas) or stubbed responses for speed. This is where most integration depth lives before merge.
Production smoke is intentionally narrow: health, a few read-only or low-risk checks, and synthetic monitoring-style probes. It confirms deploys did not break wiring; it does not replace deep regression.