chore: track backend smoke runner script

This commit is contained in:
gieacrm 2026-01-22 14:14:03 +01:00
parent e30eb6b4d3
commit 720dc09707
2 changed files with 89 additions and 2 deletions

View File

@ -65,10 +65,16 @@ pm2 restart crm-backend
### Automated smoke (recommended)
```bash
/opt/crm/scripts/smoke_backend.sh
./scripts/smoke_backend.sh
# optionally reseed demo data
/opt/crm/scripts/smoke_backend.sh --seed
./scripts/smoke_backend.sh --seed
```
Server wrapper (delegates to repo-tracked script):
```bash
/opt/crm/scripts/smoke_backend.sh
```
### Tests

81
scripts/smoke_backend.sh Executable file
View File

@ -0,0 +1,81 @@
#!/usr/bin/env bash
set -euo pipefail
# CRM backend smoke runner (repo-tracked)
# - builds backend
# - restarts PM2
# - optional seed
# - runs API smoke test
# - runs Jest tests
BACKEND_DIR="${BACKEND_DIR:-/opt/crm/backend}"
ENV_FILE="${ENV_FILE:-/opt/crm/.env}"
SEED=0
usage() {
cat <<'USAGE'
Usage: scripts/smoke_backend.sh [--seed]
Environment:
BACKEND_DIR Backend directory (default: /opt/crm/backend)
ENV_FILE Env file path (default: /opt/crm/.env)
Options:
--seed Run prisma/seed.ts before tests
USAGE
}
if [[ ${1:-} == "-h" || ${1:-} == "--help" ]]; then
usage
exit 0
fi
if [[ ${1:-} == "--seed" ]]; then
SEED=1
fi
if [[ ! -f "$ENV_FILE" ]]; then
echo "Missing env file: $ENV_FILE" >&2
exit 1
fi
# Export env vars for this script execution
set -a
# shellcheck disable=SC1090
. "$ENV_FILE"
set +a
BASE_URL="http://127.0.0.1:${PORT:-3000}"
echo "[smoke_backend] build"
( cd "$BACKEND_DIR" && npm run build )
echo "[smoke_backend] pm2 restart"
pm2 restart crm-backend
if [[ "$SEED" -eq 1 ]]; then
echo "[smoke_backend] seed"
( cd "$BACKEND_DIR" && npx ts-node prisma/seed.ts )
fi
echo "[smoke_backend] wait for /health"
for i in {1..30}; do
if curl -fsS "$BASE_URL/health" >/dev/null 2>&1; then
break
fi
sleep 1
if [[ "$i" -eq 30 ]]; then
echo "Backend did not become ready" >&2
exit 1
fi
done
echo "[smoke_backend] api smoke"
( cd "$BACKEND_DIR" && BASE_URL="$BASE_URL" ./test-api.sh )
echo "[smoke_backend] jest"
( cd "$BACKEND_DIR" && npm test )
( cd "$BACKEND_DIR" && npm run test:e2e )
echo "[smoke_backend] OK"