Modern QA2026Practical Script: Smoke Test Multiple Environments — tiles
Log inJoin
35 / 55 · 19 Linux & Command Line · Bash Scripting for QA← prev⊞ allnext →☰ Read as one page

5.5Practical Script: Smoke Test Multiple Environments

#!/bin/bash
# run-smoke-tests.sh -- Health-check multiple environments
set -euo pipefail

ENVIRONMENTS=("dev" "staging" "preprod")
FAIL_COUNT=0
RESULTS=()

check_health() {
    local env=$1
    local url="https://${env}.example.com/health"
    local status
    local time

    status=$(curl -s -o /dev/null -w "%{http_code}" --max-time 30 "$url" 2>/dev/null || echo "000")
    time=$(curl -s -o /dev/null -w "%{time_total}" --max-time 30 "$url" 2>/dev/null || echo "0")

    if [ "$status" -eq 200 ]; then
        RESULTS+=("PASS: $env (HTTP $status, ${time}s)")
        return 0
    else
        RESULTS+=("FAIL: $env (HTTP $status, ${time}s)")
        return 1
    fi
}

echo "=== Environment Health Check ==="
echo "Date: $(date)"
echo "================================"

for env in "${ENVIRONMENTS[@]}"; do
    check_health "$env" || FAIL_COUNT=$((FAIL_COUNT + 1))
done

echo ""
for result in "${RESULTS[@]}"; do
    echo "  $result"
done

echo ""
echo "Results: $((${#ENVIRONMENTS[@]} - FAIL_COUNT))/${#ENVIRONMENTS[@]} passed"

if [ "$FAIL_COUNT" -gt 0 ]; then
    echo "STATUS: SOME ENVIRONMENTS DOWN"
    exit 1
else
    echo "STATUS: ALL ENVIRONMENTS HEALTHY"
    exit 0
fi