#!/usr/bin/env bash # Post-deploy validation for the QA environment: runs the API integration # suite (real HTTP + real Postgres, seeding/cleaning up its own data) and the # Playwright admin e2e suite against the just-deployed QA stack. Intended to # run immediately after deploy-qa.sh, on the same self-hosted qa runner. This # job runs in its own job container, a sibling of the QA stack's containers # on docker's default bridge network - not "localhost" from the host's point # of view - so it reaches published ports via the bridge gateway IP, same as # deploy-qa.sh binds the db port to. set -euo pipefail cd "$(dirname "${BASH_SOURCE[0]}")" && source ./lib.sh cd "$CI_ROOT" ensure_dotnet ensure_node QA_ADMIN_PORT="${QA_ADMIN_PORT:-3001}" CI_HOST="$(docker_bridge_gateway)" [[ -n "$CI_HOST" ]] || fail "could not determine docker bridge gateway IP to reach the QA stack" BASE_URL="http://${CI_HOST}:${QA_ADMIN_PORT}" log "Resolved docker host as $CI_HOST for reaching the QA stack's published ports" export MICCHECK_API_BASE_URL="$BASE_URL" export MICCHECK_DB_CONNECTION_STRING="${MICCHECK_DB_CONNECTION_STRING:-Host=$CI_HOST;Port=55432;Database=miccheck;Username=miccheck;Password=password}" log "Running API integration suite against $BASE_URL" dotnet test tests/api/MicCheck.Api.Tests.Integration/MicCheck.Api.Tests.Integration.csproj -c Release --logger trx log "Installing admin e2e dependencies" npm --prefix src/admin ci npm --prefix src/admin run e2e:install log "Running Playwright admin e2e suite against $BASE_URL" E2E_BASE_URL="$BASE_URL" npm --prefix src/admin run e2e log "smoke-qa.sh complete - QA environment validated end to end"