Files
plex-playlist/compose.dev.yml
Xlorep DarkHelm 1f6cafa1bc
Some checks failed
CICD Start / Sanity and Base Decision (push) Failing after 11m34s
Renovate Dependency Updates / Renovate Dependencies (push) Failing after 10m12s
TASK: Replace integration lane with post-build backend runtime black-box tests (#72)
## Summary

Replace the existing source-context integration lane with backend runtime black-box integration checks that run against started deployable containers.

This change wires deployable backend image references (both commit tag and immutable digest) from the build workflow into the tests workflow, then validates runtime behavior over network endpoints.

## Why

Integration confidence should come from testing running service artifacts, not only source-mounted or in-process execution.

## What Changed

- Build workflow now:
  - Publishes deployable backend image tag reference and digest reference
  - Exposes both as job outputs
  - Passes both references into CICD Tests dispatch inputs

- CICD Tests workflow now:
  - Accepts deployable backend tag and digest inputs
  - Propagates these through setup outputs
  - Replaces previous integration lane behavior with runtime black-box execution:
    - Starts isolated Docker network
    - Starts Postgres container
    - Starts backend container from digest-pinned deployable image
    - Enforces tag-to-digest consistency before running checks
    - Runs endpoint checks against live container:
      - GET /
      - GET /compatibility
      - GET /health
    - Captures backend/db logs and container state on failure
    - Cleans up containers and network via trap

- Documentation updated:
  - Runtime contract enforcement section now includes runtime black-box integration checks
  - CI success summary now reflects runtime integration lane behavior

## Scope

Included:
- Backend runtime black-box integration replacement for the existing integration lane
- Digest + tag identity enforcement
- Failure diagnostics for triage

Out of scope:
- Frontend runtime smoke checks
- E2E lane redesign

## Acceptance Criteria Mapping

- Integration tests execute against runtime container endpoints: 
- Integration lane consumes built image references (not source-mounted execution): 
- Failures surface service logs and test logs for triage: 

## Verification

- Workflow files pass local validation checks
- Pre-commit hooks pass on committed changes
- Branch pushed and ready for PR review

## Related

- Issue: #61
- Dependency context: #66

Co-authored-by: copilotcoder <copilotcoder@darkhelm.org>
Reviewed-on: #72
2026-07-05 22:48:57 -04:00

51 lines
1.0 KiB
YAML

---
services:
database:
ports:
# Different port to avoid conflicts with local PostgreSQL
- "5433:5432"
backend:
build:
context: .
dockerfile: Dockerfile.backend
environment:
DATABASE_URL: >-
postgresql://plex_user:plex_password@database:5432/plex_playlist
ENVIRONMENT: development
RELOAD: "true"
volumes:
- ./backend:/app
- backend_venv:/app/.venv
ports:
# Different port for development
- "8001:8000"
command:
- "uvicorn"
- "backend.main:app"
- "--app-dir"
- "/app/src"
- "--host"
- "0.0.0.0"
- "--port"
- "8000"
- "--reload"
frontend:
build:
context: .
dockerfile: Dockerfile.frontend
target: development
volumes:
- ./frontend:/app
- frontend_node_modules:/app/node_modules
ports:
- "5173:5173" # Vite default dev port
environment:
- NODE_ENV=development
volumes:
postgres_data:
backend_venv:
frontend_node_modules: