Files
gym-manage/test-suite/run_e2e_uat.sh
T

161 lines
3.8 KiB
Bash
Executable File

#!/bin/bash
# 完整的E2E/UAT测试启动脚本
set -e
echo "================================================"
echo "🔧 E2E/UAT 测试完整启动脚本"
echo "================================================"
# 解析参数
ENV=${1:-dev}
DATABASE=${2:-h2}
BACKEND_URL=${3:-http://localhost:8084}
FRONTEND_URL=${4:-http://localhost:3000}
echo "📋 配置参数:"
echo " 环境: $ENV"
echo " 数据库: $DATABASE"
echo " 后端地址: $BACKEND_URL"
echo " 前端地址: $FRONTEND_URL"
echo ""
# 步骤1: 检查依赖
echo "📦 步骤1: 检查依赖..."
if ! command -v python3 &> /dev/null; then
echo "❌ 未找到Python3,请安装Python 3.10+"
exit 1
fi
python3 --version
if ! command -v mvn &> /dev/null; then
echo "❌ 未找到Maven,请安装Maven"
exit 1
fi
mvn -version
echo "✅ 依赖检查通过"
echo ""
# 步骤2: 启动后端服务
echo "🚀 步骤2: 启动后端服务..."
cd "$(dirname "$0")"
# 检查后端是否已启动
if curl -s "$BACKEND_URL/actuator/health" | grep -q '"status":"UP"'; then
echo "✅ 后端服务已在运行: $BACKEND_URL"
else
echo "⚙️ 启动后端服务(后台运行)..."
nohup mvn spring-boot:run \
-pl ../novalon-manage-api/manage-app \
-Dspring-boot.run.profiles=$ENV \
-Dspring.r2dbc.url="r2dbc:h2:mem:///testdb" \
-Dspring.datasource.url="jdbc:h2:mem:testdb" \
-Dflyway.enabled=false \
> /tmp/backend.log 2>&1 &
BACKEND_PID=$!
echo " 后端服务PID: $BACKEND_PID"
echo "⏳ 等待后端服务启动..."
for i in {1..30}; do
if curl -s "$BACKEND_URL/actuator/health" | grep -q '"status":"UP"'; then
echo "✅ 后端服务启动成功"
break
fi
sleep 2
done
fi
echo ""
# 步骤3: 启动前端服务
echo "🚀 步骤3: 启动前端服务..."
cd novalon-manage-web
if curl -s "$FRONTEND_URL" | grep -q "Novalon"; then
echo "✅ 前端服务已在运行: $FRONTEND_URL"
else
echo "⚙️ 启动前端服务(后台运行)..."
nohup npm run dev > /tmp/frontend.log 2>&1 &
FRONTEND_PID=$!
echo " 前端服务PID: $FRONTEND_PID"
echo "⏳ 等待前端服务启动..."
sleep 10
if curl -s "$FRONTEND_URL" | grep -q "Novalon"; then
echo "✅ 前端服务启动成功"
else
echo "⚠️ 前端服务启动可能失败,请检查日志: /tmp/frontend.log"
fi
fi
echo ""
# 步骤4: 运行测试
echo "🧪 步骤4: 运行测试..."
cd ../test-suite
# 安装测试依赖
echo "📦 安装测试依赖..."
pip install -r requirements.txt
# 设置环境变量
export BASE_URL=$BACKEND_URL
export FRONTEND_URL=$FRONTEND_URL
export ENV=$ENV
export DATABASE=$DATABASE
# 运行测试
echo "🚀 运行E2E/UAT测试..."
python3 run_tests.py \
--env $ENV \
--database $DATABASE \
--backend-url $BACKEND_URL \
--frontend-url $FRONTEND_URL \
--test-dir tests \
--parallel \
--reruns 2 \
--html-report reports/report.html \
--junit-report reports/junit.xml \
--coverage
TEST_RESULT=$?
echo ""
# 步骤5: 输出报告
echo "================================================"
echo "📊 测试报告"
echo "================================================"
if [ $TEST_RESULT -eq 0 ]; then
echo "✅ 测试全部通过!"
else
echo "❌ 测试失败,请检查报告"
fi
echo ""
echo "📄 报告文件:"
echo " HTML: file://$(pwd)/reports/report.html"
echo " JUnit: $(pwd)/reports/junit.xml"
echo " Coverage: file://$(pwd)/reports/coverage/index.html"
echo ""
# 步骤6: 清理
echo "🧹 步骤6: 清理..."
echo "✅ 清理完成"
echo ""
echo "================================================"
echo "🔧 E2E/UAT 测试完成"
echo "================================================"
exit $TEST_RESULT