Spaces:
Running
Running
| LOG_FILE="api_test_results.log" | |
| echo "=== Starting API E2E Test Suite ($(date)) ===" > $LOG_FILE | |
| # 1. Start BE Server in background | |
| echo "[INFO] Starting Backend Server..." | tee -a $LOG_FILE | |
| export ALLOW_TEST_BYPASS=true | |
| export LOG_LEVEL=info | |
| PYTHONPATH=. venv/bin/python -m uvicorn app.main:app --port 8000 > server_debug.log 2>&1 & | |
| SERVER_PID=$! | |
| # 2. Wait for server to be ready | |
| echo "[INFO] Waiting for server (PID: $SERVER_PID) on port 8000..." | tee -a $LOG_FILE | |
| MAX_RETRIES=15 | |
| READY=0 | |
| for i in $(seq 1 $MAX_RETRIES); do | |
| if curl -s http://localhost:8000/ > /dev/null; then | |
| READY=1 | |
| break | |
| fi | |
| sleep 2 | |
| done | |
| if [ $READY -eq 0 ]; then | |
| echo "[ERROR] Server failed to start in time. Check server_debug.log" | tee -a $LOG_FILE | |
| kill $SERVER_PID | |
| exit 1 | |
| fi | |
| echo "[INFO] Server is READY." | tee -a $LOG_FILE | |
| # 3. Prepare Test Data | |
| echo "[INFO] Preparing fresh test data..." | tee -a $LOG_FILE | |
| PREP_OUTPUT=$(PYTHONPATH=. venv/bin/python scripts/prepare_api_test.py) | |
| echo "$PREP_OUTPUT" >> $LOG_FILE | |
| export TEST_USER_ID=$(echo "$PREP_OUTPUT" | grep "RESULT:USER_ID=" | cut -d'=' -f2) | |
| export TEST_SESSION_ID=$(echo "$PREP_OUTPUT" | grep "RESULT:SESSION_ID=" | cut -d'=' -f2) | |
| if [ -z "$TEST_USER_ID" ] || [ -z "$TEST_SESSION_ID" ]; then | |
| echo "[ERROR] Failed to prepare test data." | tee -a $LOG_FILE | |
| kill $SERVER_PID | |
| exit 1 | |
| fi | |
| echo "[INFO] Test Data: User=$TEST_USER_ID, Session=$TEST_SESSION_ID" | tee -a $LOG_FILE | |
| # 4. Run Pytest | |
| echo "[INFO] Running API E2E Tests..." | tee -a $LOG_FILE | |
| PYTHONPATH=. venv/bin/python -m pytest tests/test_api_real_e2e.py -s >> $LOG_FILE 2>&1 | |
| TEST_EXIT_CODE=$? | |
| # 5. Cleanup | |
| echo "[INFO] Shutting down Server..." | tee -a $LOG_FILE | |
| kill $SERVER_PID | |
| echo "==========================================" | tee -a $LOG_FILE | |
| if [ $TEST_EXIT_CODE -eq 0 ]; then | |
| echo "FINAL RESULT: ✅ ALL API TESTS PASSED" | tee -a $LOG_FILE | |
| else | |
| echo "FINAL RESULT: ❌ SOME API TESTS FAILED (Code: $TEST_EXIT_CODE)" | tee -a $LOG_FILE | |
| fi | |
| echo "==========================================" | tee -a $LOG_FILE | |
| exit $TEST_EXIT_CODE | |