Files
wenzi/frontend/scripts/run-e2e-tests.sh
Your Name 91a0b77f7a test(cache): 修复CacheConfigTest边界值测试
- 修改 shouldVerifyCacheManager_withMaximumIntegerTtl 为 shouldVerifyCacheManager_withMaximumAllowedTtl
- 使用正确的最大TTL值(10080分钟,7天)而不是 Integer.MAX_VALUE
- 新增 shouldThrowException_whenTtlExceedsMaximum 测试验证边界检查
- 所有1266个测试用例通过
- 覆盖率: 指令81.89%, 行88.48%, 分支51.55%

docs: 添加项目状态报告
- 生成 PROJECT_STATUS_REPORT.md 详细记录项目当前状态
- 包含质量指标、已完成功能、待办事项和技术债务
2026-03-02 13:31:54 +08:00

169 lines
4.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# 🦟 蚊子项目 E2E测试启动脚本
# 同时启动前后端服务并运行E2E测试
set -e
echo "🚀 蚊子项目 E2E测试启动器"
echo ""
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 检查端口占用
check_port() {
local port=$1
if lsof -i :$port > /dev/null 2>&1; then
echo -e "${RED}❌ 端口 $port 已被占用${NC}"
return 1
fi
return 0
}
# 清理函数
cleanup() {
echo ""
echo -e "${YELLOW}🧹 清理进程中...${NC}"
# 杀死后端进程
if [ -n "$BACKEND_PID" ]; then
kill $BACKEND_PID 2>/dev/null || true
echo " 后端进程已停止"
fi
# 杀死前端进程
if [ -n "$FRONTEND_PID" ]; then
kill $FRONTEND_PID 2>/dev/null || true
echo " 前端进程已停止"
fi
echo -e "${GREEN}✅ 清理完成${NC}"
}
# 注册清理函数
trap cleanup EXIT INT TERM
# 检查必要命令
command -v mvn >/dev/null 2>&1 || { echo -e "${RED}❌ 需要Maven (mvn)${NC}"; exit 1; }
command -v node >/dev/null 2>&1 || { echo -e "${RED}❌ 需要Node.js${NC}"; exit 1; }
command -v npm >/dev/null 2>&1 || { echo -e "${RED}❌ 需要npm${NC}"; exit 1; }
# 检查端口
echo "🔍 检查端口..."
check_port 8080 || exit 1
check_port 5173 || exit 1
echo -e "${GREEN} ✅ 端口可用${NC}"
echo ""
# 获取项目根目录
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
FRONTEND_DIR="$PROJECT_ROOT/frontend"
echo "📂 项目目录: $PROJECT_ROOT"
echo ""
# 步骤1: 编译后端
echo "📦 步骤1: 编译后端..."
cd "$PROJECT_ROOT"
mvn clean compile -q -DskipTests
if [ $? -eq 0 ]; then
echo -e "${GREEN} ✅ 后端编译成功${NC}"
else
echo -e "${RED} ❌ 后端编译失败${NC}"
exit 1
fi
echo ""
# 步骤2: 启动后端服务
echo "🚀 步骤2: 启动后端服务..."
cd "$PROJECT_ROOT"
mvn spring-boot:run -Dspring-boot.run.profiles=e2e -Dspring-boot.run.jvmArguments="-Xmx512m" > /tmp/mosquito-backend.log 2>&1 &
BACKEND_PID=$!
echo " 后端PID: $BACKEND_PID"
echo " 日志: /tmp/mosquito-backend.log"
echo ""
# 等待后端启动
echo "⏳ 等待后端服务就绪..."
for i in {1..60}; do
if curl -s http://localhost:8080/api/v1/activities > /dev/null 2>&1; then
echo -e "${GREEN} ✅ 后端服务已就绪${NC}"
break
fi
if [ $i -eq 60 ]; then
echo -e "${RED} ❌ 后端服务启动超时${NC}"
exit 1
fi
echo -n "."
sleep 2
done
echo ""
# 步骤3: 安装前端依赖
echo "📦 步骤3: 安装前端依赖..."
cd "$FRONTEND_DIR"
npm install --silent
echo -e "${GREEN} ✅ 前端依赖已安装${NC}"
echo ""
# 步骤4: 启动前端服务
echo "🚀 步骤4: 启动前端服务..."
cd "$FRONTEND_DIR"
npm run dev -- --port 5173 > /tmp/mosquito-frontend.log 2>&1 &
FRONTEND_PID=$!
echo " 前端PID: $FRONTEND_PID"
echo " 日志: /tmp/mosquito-frontend.log"
echo ""
# 等待前端启动
echo "⏳ 等待前端服务就绪..."
for i in {1..30}; do
if curl -s http://localhost:5173 > /dev/null 2>&1; then
echo -e "${GREEN} ✅ 前端服务已就绪${NC}"
break
fi
if [ $i -eq 30 ]; then
echo -e "${RED} ❌ 前端服务启动超时${NC}"
exit 1
fi
echo -n "."
sleep 1
done
echo ""
# 步骤5: 运行E2E测试
echo "🎭 步骤5: 运行E2E测试..."
echo " 后端地址: http://localhost:8080"
echo " 前端地址: http://localhost:5173"
echo ""
cd "$FRONTEND_DIR"
# 设置环境变量
export API_BASE_URL=http://localhost:8080
export PLAYWRIGHT_BASE_URL=http://localhost:5173
# 运行Playwright测试
echo " 正在运行Playwright E2E测试..."
npx playwright test --reporter=list "$@"
TEST_EXIT_CODE=$?
echo ""
if [ $TEST_EXIT_CODE -eq 0 ]; then
echo -e "${GREEN}✅ E2E测试通过${NC}"
else
echo -e "${RED}❌ E2E测试失败${NC}"
fi
echo ""
echo "📊 查看报告:"
echo " Playwright报告: npx playwright show-report e2e-report"
echo " 后端日志: tail -100 /tmp/mosquito-backend.log"
echo " 前端日志: tail -100 /tmp/mosquito-frontend.log"
exit $TEST_EXIT_CODE