run-stability-test.sh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #!/bin/bash
  2. # Epic 9 稳定性测试脚本
  3. # 运行残疾人管理核心测试 10 次,验证稳定性
  4. # 测试范围:37个核心测试(photo、bankcard、note、visit、crud)
  5. # 配置
  6. RUNS=10
  7. PROJECT_ROOT="/mnt/code/188-179-template-6"
  8. WEB_DIR="${PROJECT_ROOT}/web"
  9. PASSED=0
  10. FAILED=0
  11. TIMES=()
  12. # 切换到 web 目录
  13. cd "${WEB_DIR}" || exit 1
  14. echo "========================================="
  15. echo "Epic 9 稳定性验证测试"
  16. echo "========================================="
  17. echo "运行次数: ${RUNS}"
  18. echo "测试范围: 残疾人管理核心测试 (37 个测试)"
  19. echo " - disability-person-photo.spec.ts (8 测试)"
  20. echo " - disability-person-bankcard.spec.ts (8 测试)"
  21. echo " - disability-person-note.spec.ts (8 测试)"
  22. echo " - disability-person-visit.spec.ts (10 测试)"
  23. echo " - disability-person-crud.spec.ts (16 测试)"
  24. echo "并行模式: 4 workers"
  25. echo "开始时间: $(date)"
  26. echo ""
  27. echo "========================================="
  28. echo ""
  29. # 运行测试
  30. for i in $(seq 1 ${RUNS}); do
  31. echo "=== 运行 #${i}/${RUNS} ==="
  32. START=$(date +%s)
  33. # 运行测试(4 workers 并行)- 只运行核心测试文件
  34. if pnpm test:e2e:chromium admin/disability-person-photo.spec.ts admin/disability-person-bankcard.spec.ts admin/disability-person-note.spec.ts admin/disability-person-visit.spec.ts admin/disability-person-crud.spec.ts --workers=4; then
  35. PASSED=$((PASSED + 1))
  36. echo "✅ 运行 #${i} 通过"
  37. else
  38. FAILED=$((FAILED + 1))
  39. echo "❌ 运行 #${i} 失败"
  40. fi
  41. END=$(date +%s)
  42. DURATION=$((END - START))
  43. TIMES+=($DURATION)
  44. echo "⏱️ 耗时: ${DURATION}s"
  45. echo ""
  46. done
  47. # 计算统计数据
  48. TOTAL=$((PASSED + FAILED))
  49. PASS_RATE=$((PASSED * 100 / TOTAL))
  50. AVG_TIME=$(awk '{sum+=$1} END {print sum/NR}' <<< "${TIMES[@]}")
  51. MIN_TIME=$(printf "%s\n" "${TIMES[@]}" | sort -n | head -1)
  52. MAX_TIME=$(printf "%s\n" "${TIMES[@]}" | sort -n | tail -1)
  53. # 输出结果
  54. echo "========================================="
  55. echo "稳定性测试结果"
  56. echo "========================================="
  57. echo "通过: ${PASSED}/${TOTAL} (${PASS_RATE}%)"
  58. echo "失败: ${FAILED}/${TOTAL}"
  59. echo ""
  60. echo "执行时间统计:"
  61. echo " 平均: ${AVG_TIME}s"
  62. echo " 最快: ${MIN_TIME}s"
  63. echo " 最慢: ${MAX_TIME}s"
  64. echo ""
  65. echo "结束时间: $(date)"
  66. echo "========================================="
  67. # 判断结果
  68. if [ $PASSED -eq $TOTAL ]; then
  69. echo ""
  70. echo "🎉 Epic 9 稳定性验证通过!100% 成功率!"
  71. echo "✅ Epic 9 可以标记为完成"
  72. exit 0
  73. else
  74. echo ""
  75. echo "⚠️ 稳定性不足,需要修复失败的测试"
  76. echo "❌ 请分析失败原因并修复后重新运行"
  77. exit 1
  78. fi