Problem
Each service repo tests itself in isolation, but nothing tests the stack the way a real user actually reaches it, through nginx. A change can pass every individual CI job and still break in production because of something only visible at the integration layer: a wrong nginx path, a missing volume, a wrong service hostname, broken CORS, a broken WebSocket proxy.
#19 is a concrete example already sitting in this repo: the backend correctly serves profile pictures, but nginx never routes /uploads to it, so they never load. Nothing in CI today would have caught that, and nothing currently would catch the next one like it.
Proposed scope
- add a CI workflow in this repo that brings up the full stack with
docker compose up, the same way it runs in production
- wait for all services to report healthy
- run HTTP checks against the stack through nginx, not directly against individual service ports, so routing and proxy config are actually exercised
- cover at minimum: frontend loads, login works, an authenticated backend call succeeds, the Cloud API responds, a file can be uploaded and downloaded, the WebSocket handshake succeeds, and a volume actually persists data across a container restart
- tear the stack down at the end regardless of outcome
Explicitly not part of this
Replacing the existing per-service unit and integration tests. This is specifically about catching the class of bug that only shows up when the services are wired together behind nginx, not about testing business logic that is already covered elsewhere.
Acceptance criteria
Problem
Each service repo tests itself in isolation, but nothing tests the stack the way a real user actually reaches it, through nginx. A change can pass every individual CI job and still break in production because of something only visible at the integration layer: a wrong nginx path, a missing volume, a wrong service hostname, broken CORS, a broken WebSocket proxy.
#19 is a concrete example already sitting in this repo: the backend correctly serves profile pictures, but nginx never routes
/uploadsto it, so they never load. Nothing in CI today would have caught that, and nothing currently would catch the next one like it.Proposed scope
docker compose up, the same way it runs in productionExplicitly not part of this
Replacing the existing per-service unit and integration tests. This is specifically about catching the class of bug that only shows up when the services are wired together behind nginx, not about testing business logic that is already covered elsewhere.
Acceptance criteria