From 720dc097074925729fc5628d827c5aec1e3802eb Mon Sep 17 00:00:00 2001 From: gieacrm Date: Thu, 22 Jan 2026 14:14:03 +0100 Subject: [PATCH] chore: track backend smoke runner script --- README.md | 10 ++++- scripts/smoke_backend.sh | 81 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+), 2 deletions(-) create mode 100755 scripts/smoke_backend.sh diff --git a/README.md b/README.md index 18f34bb..4f0f952 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/scripts/smoke_backend.sh b/scripts/smoke_backend.sh new file mode 100755 index 0000000..2a1b7e2 --- /dev/null +++ b/scripts/smoke_backend.sh @@ -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"