Files
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

160 lines
4.1 KiB
Bash
Executable File

#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
CONFIG_FILE="$SCRIPT_DIR/config/test-config.yml"
LOG_DIR="$PROJECT_ROOT/test-automation/logs"
REPORT_DIR="$PROJECT_ROOT/test-automation/test-reports"
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
CURRENT_REPORT_DIR="$REPORT_DIR/$TIMESTAMP"
mkdir -p "$LOG_DIR"
mkdir -p "$CURRENT_REPORT_DIR"
TEST_RESULT=0
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
log "========================================="
log "全面自动化测试执行开始"
log "========================================="
log "项目根目录: $PROJECT_ROOT"
log "报告输出目录: $CURRENT_REPORT_DIR"
log "========================================="
# 环境检查
log "[环境检查] 检查依赖..."
check_command() {
if ! command -v $1 &> /dev/null; then
log "[环境检查] ✗ $1 未安装"
exit 1
fi
log "[环境检查] ✓ $1 已安装"
}
check_command java
check_command mvn
check_command node
check_command npm
log "[环境检查] ✓ 环境检查通过"
# 启动服务
log "[启动服务] 正在启动API服务..."
bash "$SCRIPT_DIR/scripts/start-api.sh"
if ! bash "$SCRIPT_DIR/scripts/wait-for-api.sh"; then
log "[启动服务] ✗ API服务启动失败"
bash "$SCRIPT_DIR/scripts/cleanup.sh"
exit 1
fi
log "[启动服务] ✓ API服务已就绪"
# 执行API测试
log "[API测试] 开始执行API测试..."
cd "$PROJECT_ROOT/everything-is-suitable-api"
API_TEST_LOG="$CURRENT_REPORT_DIR/api-test.log"
if mvn test -Dspring.profiles.active=test > "$API_TEST_LOG" 2>&1; then
log "[API测试] ✓ API测试通过"
else
log "[API测试] ✗ API测试失败"
TEST_RESULT=1
fi
cp -r */target/surefire-reports/* "$CURRENT_REPORT_DIR/" 2>/dev/null || true
log "[API测试] API测试完成"
# 执行前端对接测试
log "[前端对接测试] 开始执行前端对接测试..."
ADMIN_DIR="$PROJECT_ROOT/everything-is-suitable-admin"
if [ -d "$ADMIN_DIR/e2e" ]; then
cd "$ADMIN_DIR"
FRONTEND_TEST_LOG="$CURRENT_REPORT_DIR/frontend-test.log"
if [ -f "package.json" ]; then
log "[前端对接测试] 安装依赖..."
npm install > /dev/null 2>&1
log "[前端对接测试] 执行Playwright测试..."
if npx playwright test --reporter=html > "$FRONTEND_TEST_LOG" 2>&1; then
log "[前端对接测试] ✓ 前端对接测试通过"
else
log "[前端对接测试] ✗ 前端对接测试失败"
TEST_RESULT=1
fi
mkdir -p "$CURRENT_REPORT_DIR/frontend-report"
cp -r playwright-report/* "$CURRENT_REPORT_DIR/frontend-report/" 2>/dev/null || true
fi
fi
log "[前端对接测试] 前端对接测试完成"
# 执行E2E测试
log "[E2E测试] 开始执行E2E测试..."
E2E_TEST_LOG="$CURRENT_REPORT_DIR/e2e-test.log"
if [ -d "$ADMIN_DIR/e2e" ]; then
cd "$ADMIN_DIR"
if npx playwright test e2e/ --reporter=html --project=chromium > "$E2E_TEST_LOG" 2>&1; then
log "[E2E测试] ✓ E2E测试通过"
else
log "[E2E测试] ✗ E2E测试失败"
TEST_RESULT=1
fi
mkdir -p "$CURRENT_REPORT_DIR/e2e-report"
cp -r playwright-report/* "$CURRENT_REPORT_DIR/e2e-report/" 2>/dev/null || true
fi
log "[E2E测试] E2E测试完成"
# 生成报告
log "[生成报告] 正在生成综合测试报告..."
if [ -f "$SCRIPT_DIR/reporters/report-generator.py" ]; then
python3 "$SCRIPT_DIR/reporters/report-generator.py" \
--report-dir "$CURRENT_REPORT_DIR" \
--timestamp "$TIMESTAMP" \
--config "$CONFIG_FILE" || log "[生成报告] 报告生成失败,但继续执行"
fi
log "[生成报告] ✓ 报告已生成: $CURRENT_REPORT_DIR"
# 清理环境
log "[清理环境] 正在清理环境..."
bash "$SCRIPT_DIR/scripts/cleanup.sh"
log "[清理环境] ✓ 环境清理完成"
log "========================================="
log "测试执行完成"
log "========================================="
if [ $TEST_RESULT -eq 0 ]; then
log "✓ 所有测试通过"
log "退出码: 0"
exit 0
else
log "✗ 部分测试失败"
log "退出码: 1"
exit 1
fi