#!/bin/bash SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" REPORT_DIR="$PROJECT_ROOT/test-results/reports" TIMESTAMP=$(date +"%Y%m%d_%H%M%S") echo "==========================================" echo " 统一测试报告生成器" echo "==========================================" echo "" mkdir -p "$REPORT_DIR" generate_api_report() { echo "生成 API 测试报告..." local api_dir="$PROJECT_ROOT/everything-is-suitable-api/everything-is-suitable-app" if [ -d "$api_dir/target/allure-results" ]; then cd "$api_dir" mvn allure:report -q 2>/dev/null || true if [ -d "target/site/allure-maven-plugin" ]; then cp -r target/site/allure-maven-plugin "$REPORT_DIR/api-report-$TIMESTAMP" echo "✅ API 测试报告: $REPORT_DIR/api-report-$TIMESTAMP/index.html" fi cd "$PROJECT_ROOT" else echo "⚠️ 未找到 API 测试结果" fi } generate_e2e_report() { echo "生成 E2E 测试报告..." local test_dir="$PROJECT_ROOT/everything-is-suitable-test" if [ -d "$test_dir/test-results" ]; then if [ -d "$test_dir/playwright-report" ]; then cp -r "$test_dir/playwright-report" "$REPORT_DIR/e2e-report-$TIMESTAMP" echo "✅ E2E 测试报告: $REPORT_DIR/e2e-report-$TIMESTAMP/index.html" elif [ -d "$test_dir/test-results/html-report" ]; then cp -r "$test_dir/test-results/html-report" "$REPORT_DIR/e2e-report-$TIMESTAMP" echo "✅ E2E 测试报告: $REPORT_DIR/e2e-report-$TIMESTAMP/index.html" else echo "⚠️ 未找到 E2E HTML 报告" fi else echo "⚠️ 未找到 E2E 测试结果" fi } generate_summary_report() { echo "生成摘要报告..." local summary_file="$REPORT_DIR/summary-$TIMESTAMP.md" cat > "$summary_file" << EOF # 测试报告摘要 **生成时间**: $(date '+%Y-%m-%d %H:%M:%S') --- ## 📊 测试概览 | 测试类型 | 状态 | 详情 | |---------|------|------| | API 测试 | $(if [ -d "$REPORT_DIR/api-report-$TIMESTAMP" ]; then echo "✅ 已生成"; else echo "⚠️ 无数据"; fi) | [查看报告](./api-report-$TIMESTAMP/index.html) | | E2E 测试 | $(if [ -d "$REPORT_DIR/e2e-report-$TIMESTAMP" ]; then echo "✅ 已生成"; else echo "⚠️ 无数据"; fi) | [查看报告](./e2e-report-$TIMESTAMP/index.html) | --- ## 📁 报告文件 \`\`\` $REPORT_DIR/ ├── api-report-$TIMESTAMP/ # API 测试报告 ├── e2e-report-$TIMESTAMP/ # E2E 测试报告 └── summary-$TIMESTAMP.md # 本摘要文件 \`\`\` --- ## 🔗 快速访问 - **API 报告**: \`open $REPORT_DIR/api-report-$TIMESTAMP/index.html\` - **E2E 报告**: \`open $REPORT_DIR/e2e-report-$TIMESTAMP/index.html\` --- ## 📝 测试环境 - **操作系统**: $(uname -s) $(uname -r) - **Node 版本**: $(node --version 2>/dev/null || echo "未安装") - **Java 版本**: $(java -version 2>&1 | head -1 || echo "未安装") - **Maven 版本**: $(mvn -version 2>/dev/null | head -1 || echo "未安装") --- *报告由自动化测试系统生成* EOF echo "✅ 摘要报告: $summary_file" } generate_junit_report() { echo "生成 JUnit 格式报告..." local test_dir="$PROJECT_ROOT/everything-is-suitable-test" local junit_file="$test_dir/test-results/junit.xml" if [ -f "$junit_file" ]; then cp "$junit_file" "$REPORT_DIR/junit-$TIMESTAMP.xml" echo "✅ JUnit 报告: $REPORT_DIR/junit-$TIMESTAMP.xml" fi } echo "" echo "开始生成测试报告..." echo "" generate_api_report generate_e2e_report generate_junit_report generate_summary_report echo "" echo "==========================================" echo " ✅ 报告生成完成" echo "==========================================" echo "" echo "报告目录: $REPORT_DIR" echo "" echo "查看摘要: cat $REPORT_DIR/summary-$TIMESTAMP.md" echo "打开报告: open $REPORT_DIR/api-report-$TIMESTAMP/index.html" echo ""