2
0

run-stability-test.sh 2.7 KB

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