08ea5fbe98
添加用户管理视图、API和状态管理文件
160 lines
4.1 KiB
Bash
Executable File
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
|