a / scripts /test.sh
PNRxA
large refactor to prioritise tmdb logos and backdrops, then fall back to
094c13f
Raw History Blame Contribute Delete
2.07 kB
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")/.."
IMAGE_NAME="openposterdb-test"
CONTAINER_NAME="openposterdb-test"
if command -v podman &>/dev/null; then
CTR=podman
elif command -v docker &>/dev/null; then
CTR=docker
else
echo "Error: neither podman nor docker found" >&2
exit 1
fi
echo "=== Backend tests ==="
(cd api && cargo test)
echo ""
echo "=== Frontend unit tests ==="
(cd web && npx vitest run)
echo ""
echo "=== Container setup ==="
cleanup() {
echo "=== Tearing down ==="
$CTR rm -f "$CONTAINER_NAME" 2>/dev/null || true
$CTR rmi -f "$IMAGE_NAME" 2>/dev/null || true
}
trap cleanup EXIT INT TERM
echo "Building container image..."
$CTR build -t "$IMAGE_NAME" --build-arg CARGO_FEATURES=test-support -f Containerfile .
ENV_ARGS=()
if [ -f api/.env ]; then
echo "Loading API keys from api/.env"
while IFS='=' read -r key value; do
[[ -z "$key" || "$key" == \#* ]] && continue
ENV_ARGS+=(-e "$key=$value")
done < api/.env
fi
echo "Starting container..."
$CTR rm -f "$CONTAINER_NAME" 2>/dev/null || true
$CTR run -d --name "$CONTAINER_NAME" \
-p 3333:3000 \
--tmpfs /tmp/openposterdb-e2e \
"${ENV_ARGS[@]}" \
-e JWT_SECRET=abababababababababababababababababababababababababababababababab \
-e LISTEN_ADDR=0.0.0.0:3000 \
-e COOKIE_SECURE=false \
-e CACHE_DIR=/tmp/openposterdb-e2e \
-e DB_DIR=/tmp/openposterdb-e2e \
-e FREE_KEY_ENABLED=true \
"$IMAGE_NAME"
echo "Waiting for backend..."
for i in $(seq 1 60); do
if curl -sf http://127.0.0.1:3333/api/auth/status > /dev/null 2>&1; then
echo "Backend ready"
break
fi
if [ "$i" -eq 60 ]; then
echo "Backend did not start within 60 seconds"
$CTR logs "$CONTAINER_NAME"
exit 1
fi
sleep 1
done
echo ""
echo "=== Visual report ==="
scripts/visual-report.sh
echo ""
echo "=== E2E tests ==="
(cd web && npx playwright test --workers=1 --project=setup --project=settings --project=chromium --project=live)
echo ""
echo "All tests passed."