#!/bin/bash

# SUPERPORT 마스터 테스트 스위트 실행 스크립트
# 
# 사용법:
#   ./run_master_test_suite.sh                    # 기본 실행 (병렬 모드)
#   ./run_master_test_suite.sh --sequential       # 순차 실행
#   ./run_master_test_suite.sh --include License  # 특정 화면만 테스트
#   ./run_master_test_suite.sh --exclude Company  # 특정 화면 제외
#   ./run_master_test_suite.sh --verbose         # 상세 로그 출력

echo "======================================================"
echo "🚀 SUPERPORT 마스터 테스트 스위트 실행"
echo "======================================================"
echo ""

# 현재 디렉토리 저장
CURRENT_DIR=$(pwd)

# 프로젝트 루트로 이동
cd "$(dirname "$0")/../../.." || exit 1

# 테스트 리포트 디렉토리 생성
mkdir -p test_reports

# 이전 테스트 결과 백업
if [ -d "test_reports" ]; then
    BACKUP_DIR="test_reports_backup_$(date +%Y%m%d_%H%M%S)"
    echo "📁 이전 테스트 결과를 백업합니다: $BACKUP_DIR"
    mv test_reports "$BACKUP_DIR" 2>/dev/null || true
    mkdir -p test_reports
fi

# 시작 시간 기록
START_TIME=$(date +%s)

echo "🔧 테스트 환경 준비 중..."
echo ""

# Flutter 패키지 업데이트
echo "📦 Flutter 패키지 업데이트..."
flutter pub get

echo ""
echo "🧪 마스터 테스트 스위트 실행..."
echo "======================================================"

# 테스트 실행
flutter test test/integration/automated/master_test_suite.dart \
    --reporter json > test_reports/test_output.json 2>&1 &

TEST_PID=$!

# 진행 상황 모니터링
while kill -0 $TEST_PID 2>/dev/null; do
    echo -n "."
    sleep 1
done

echo ""

# 테스트 프로세스 종료 상태 확인
wait $TEST_PID
TEST_EXIT_CODE=$?

# 종료 시간 기록
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))

echo ""
echo "======================================================"
echo "📊 테스트 실행 완료"
echo "======================================================"
echo "⏱️ 총 소요시간: ${DURATION}초"
echo ""

# 테스트 결과 확인
if [ $TEST_EXIT_CODE -eq 0 ]; then
    echo "✅ 모든 테스트가 성공했습니다!"
else
    echo "❌ 일부 테스트가 실패했습니다. (Exit code: $TEST_EXIT_CODE)"
fi

echo ""
echo "📄 생성된 리포트:"
echo "======================================================"

# 생성된 리포트 파일 목록 표시
if [ -d "test_reports" ]; then
    find test_reports -name "*.md" -o -name "*.html" -o -name "*.json" | while read -r file; do
        echo "  • $file"
    done
fi

echo ""
echo "💡 리포트를 보려면:"
echo "  - HTML: open test_reports/master_test_report_*.html"
echo "  - Markdown: cat test_reports/master_test_report_*.md"
echo "  - JSON: cat test_reports/master_test_report_*.json"
echo ""

# 원래 디렉토리로 복귀
cd "$CURRENT_DIR" || exit 1

exit $TEST_EXIT_CODE