npx resolved the registry's generic "playwright" package instead of the locally installed @playwright/test bin, triggering an unwanted fresh install and "No tests found". npm run e2e uses the project's own node_modules/.bin unambiguously.
48 lines
2.2 KiB
Bash
Executable File
48 lines
2.2 KiB
Bash
Executable File
#!/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
|
|
|
|
# Playwright's bundled Chromium is a glibc binary and `--with-deps` only knows
|
|
# apt - neither works on this musl/Alpine runner. Run the e2e leg inside
|
|
# Microsoft's official Playwright image instead (glibc, browsers preinstalled
|
|
# at /ms-playwright), as a sibling container reachable at the same bridge
|
|
# gateway IP used above. Pin the image tag to the exact resolved
|
|
# @playwright/test version so the test runner and browser build match.
|
|
PW_VERSION="$(node -p "require('./src/admin/node_modules/@playwright/test/package.json').version")"
|
|
log "Running Playwright admin e2e suite against $BASE_URL (playwright:v$PW_VERSION-noble)"
|
|
docker run --rm \
|
|
-e "E2E_BASE_URL=$BASE_URL" \
|
|
-v "$CI_ROOT:/work" -w /work/src/admin \
|
|
"mcr.microsoft.com/playwright:v${PW_VERSION}-noble" \
|
|
npm run e2e
|
|
|
|
log "smoke-qa.sh complete - QA environment validated end to end"
|