#!/usr/bin/env bash set -euo pipefail if [ -n "${CI:-}" ]; then echo "CI detected; skipping local e2e."; exit 0; fi if [ -n "${SKIP_E2E:-}" ]; then echo "SKIP_E2E set; skipping local e2e."; exit 0; fi SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="$(cd -- "$SCRIPT_DIR/.." && pwd)" if command -v docker >/dev/null 2>&1; then RUNTIME=docker elif command -v podman >/dev/null 2>&1; then RUNTIME=podman else echo "Docker or Podman is required for local e2e." >&2; exit 1; fi container_running() { "$RUNTIME" ps --format '{{.Names}}' | grep -qx "$1" } if container_running convexmonorepo-local-convex \ && container_running convexmonorepo-local-convex-dashboard; then SHOULD_STOP_STACK=false else SHOULD_STOP_STACK=true fi cleanup() { if [ "$SHOULD_STOP_STACK" = true ]; then "$RUNTIME" rm -f \ convexmonorepo-local-convex-dashboard \ convexmonorepo-local-convex \ >/dev/null 2>&1 || true fi } trap cleanup EXIT if [ "$SHOULD_STOP_STACK" = true ]; then bash "$ROOT_DIR/scripts/db/up" fi curl -fs "http://localhost:${BACKEND_PORT:-3210}/version" >/dev/null curl -fs "http://localhost:${DASHBOARD_PORT:-6791}" >/dev/null echo "Local-stack smoke checks passed; no seeded browser flow is configured."