#!/bin/bash # run-tests.sh - Run all tests (unit + UI) # Usage: ./run-tests.sh [unit|ui|all] set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$SCRIPT_DIR/MovieMapper-iOS" # Default test type TEST_TYPE="${1:-all}" # Load environment variables if [[ -f "$SCRIPT_DIR/.env" ]]; then export TVDB_API_KEY=$(grep "^TVDB_API_KEY=" "$SCRIPT_DIR/.env" | cut -d'=' -f2) echo "✓ Loaded TVDB_API_KEY from .env" else echo "⚠ .env file not found, TVDB_API_KEY may not be set" fi # Create test results directory RESULTS_DIR="$SCRIPT_DIR/test-results" mkdir -p "$RESULTS_DIR" echo "=== MovieMapper iOS Test Runner ===" echo "Test Type: $TEST_TYPE" echo "Results Directory: $RESULTS_DIR" echo "" cd "$PROJECT_DIR" if [[ "$TEST_TYPE" == "unit" || "$TEST_TYPE" == "all" ]]; then echo "=== Running Unit Tests ===" if [[ "$TEST_TYPE" == "unit" ]]; then swift test else swift test 2>&1 | tee "$RESULTS_DIR/unit-test.log" fi echo "✓ Unit tests completed" echo "" fi if [[ "$TEST_TYPE" == "ui" || "$TEST_TYPE" == "all" ]]; then echo "=== Running UI Tests ===" SCHEME="MovieMapper-iOS" xcodebuild test -project "$PROJECT_DIR" \ -scheme "$SCHEME" \ -destination 'platform=iOS Simulator,name=iPad Pro (12.9-inch) (17th generation)' \ -destination-timeout 60 \ -testSummaryReport "$RESULTS_DIR/ui-test.xml" \ -quiet 2>&1 | tee "$RESULTS_DIR/ui-test.log" echo "✓ UI tests completed" echo "" fi # Generate test summary report echo "=== Test Summary Report ===" echo "Generated at: $(date)" echo "" if [[ -f "$RESULTS_DIR/unit-test.log" ]]; then UNIT_PASSED=$(grep -c "Test Passed" "$RESULTS_DIR/unit-test.log" 2>/dev/null || echo 0) UNIT_FAILED=$(grep -c "Test Failed" "$RESULTS_DIR/unit-test.log" 2>/dev/null || echo 0) echo "Unit Tests:" echo " Passed: $UNIT_PASSED" echo " Failed: $UNIT_FAILED" echo "" fi if [[ -f "$RESULTS_DIR/ui-test.log" ]]; then UI_PASSED=$(grep -c "Test Passed" "$RESULTS_DIR/ui-test.log" 2>/dev/null || echo 0) UI_FAILED=$(grep -c "Test Failed" "$RESULTS_DIR/ui-test.log" 2>/dev/null || echo 0) echo "UI Tests:" echo " Passed: $UI_PASSED" echo " Failed: $UI_FAILED" echo "" fi echo "✓ All tests completed" echo "" echo "Test results saved to: $RESULTS_DIR"