Files
wenzi/scripts/e2e_continuous_runner.sh
Your Name 5f5597ef0f
Some checks failed
CI / build_test_package (push) Has been cancelled
CI / auto_merge (push) Has been cancelled
chore: sync project snapshot for gitea/github upload
2026-03-26 15:59:53 +08:00

65 lines
2.2 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
set -euo pipefail
PROJECT_DIR="/home/long/project/蚊子"
STATE_DIR="$PROJECT_DIR/logs/e2e-automation"
CLAUDE_BIN="${CLAUDE_BIN:-$HOME/.cursor/extensions/anthropic.claude-code-2.1.15-linux-x64/resources/native-binary/claude}"
CONTRACT_CHECK="$PROJECT_DIR/scripts/validate_test_contracts.sh"
mkdir -p "$STATE_DIR"
TS="$(date '+%Y%m%d_%H%M%S')"
RUN_LOG="$STATE_DIR/run_${TS}.log"
REPORT_FILE="$STATE_DIR/report_${TS}.md"
LATEST_LINK="$STATE_DIR/latest_report.md"
cd "$PROJECT_DIR"
if [ ! -x "$CONTRACT_CHECK" ]; then
echo "[$(date '+%F %T')] [data-contract] missing executable: $CONTRACT_CHECK" | tee -a "$RUN_LOG"
exit 2
fi
export SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE:-e2e}"
if ! "$CONTRACT_CHECK" "$PROJECT_DIR" runner >> "$RUN_LOG" 2>&1; then
echo "[$(date '+%F %T')] [data-contract] preflight failed, aborting run" | tee -a "$RUN_LOG"
exit 2
fi
echo "[$(date '+%F %T')] runner start" | tee -a "$RUN_LOG"
PROMPT=$(cat <<'EOF'
你现在负责 /home/long/project/蚊子 的端到端测试优化闭环。
要求:
1) 运行并修复端到端测试,直到全部通过(若仓库存在前后端测试,也一并回归)
2) 你可以直接修改代码并执行必要命令
3) 如遇失败,持续迭代修复,不要停在计划阶段
4) 输出最终报告中文Markdown必须包含
- 是否“全部通过”(是/否)
- 执行命令清单
- 修改文件清单
- 测试结果摘要(通过/失败数量)
- 若未全部通过,明确阻塞项和下一步
EOF
)
"$CLAUDE_BIN" -p \
--permission-mode dontAsk \
--dangerously-skip-permissions \
"$PROMPT" > "$REPORT_FILE" 2>> "$RUN_LOG"
cp -f "$REPORT_FILE" "$LATEST_LINK"
# Enhanced pattern matching to handle various report formats:
# - 全部通过(是)
# - 是否"全部通过": **是**
# - 是否"全部通过": **是Playwright测试/ 部分阻塞Cypress**
# - 全部通过.*✓
if grep -Eq '是否"全部通过".*是|全部通过\s*\(是\)|全部通过.*✓' "$REPORT_FILE"; then
touch "$STATE_DIR/done.flag"
echo "[$(date '+%F %T')] done flag set" | tee -a "$RUN_LOG"
else
echo "[$(date '+%F %T')] run finished but not fully passed" | tee -a "$RUN_LOG"
fi
echo "[$(date '+%F %T')] runner end" | tee -a "$RUN_LOG"