#!/usr/bin/env bash set -uo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" COMPOSE_FILE="$PROJECT_DIR/e2e/docker-compose.test.yml" cleanup() { echo "=== Tearing down Docker services ===" docker compose -f "$COMPOSE_FILE" down --timeout 10 } trap cleanup EXIT cd "$PROJECT_DIR" pip3 install -q -r e2e/requirements.txt echo "=== Starting Docker services ===" docker compose -f "$COMPOSE_FILE" up -d --build echo "=== Waiting for system-under-test ===" DEADLINE=$((SECONDS + 60)) while [[ $SECONDS -lt $DEADLINE ]]; do if curl -sf http://localhost:8080/health > /dev/null 2>&1; then echo "system-under-test is ready" break fi sleep 2 done if ! curl -sf http://localhost:8080/health > /dev/null 2>&1; then echo "ERROR: system-under-test did not become healthy within 60s" docker compose -f "$COMPOSE_FILE" logs system-under-test exit 1 fi mkdir -p "$PROJECT_DIR/test-results" echo "=== Running e2e tests ===" python3 -m pytest e2e/tests/ -v --tb=short --junitxml=test-results/results.xml EXIT_CODE=$? echo "" if [[ $EXIT_CODE -eq 0 ]]; then echo "=== ALL TESTS PASSED ===" else echo "=== TESTS FAILED (exit code: $EXIT_CODE) ===" fi exit $EXIT_CODE