#!/bin/bash # Load environment variables if [ ! -f ../.env ]; then echo "Error: .env file not found!" exit 1 fi source ../.env # Colors for output GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # Default values RUN_UNIT=false RUN_INTEGRATION=false RUN_E2E=false DEBUG=false # Parse arguments while [[ $# -gt 0 ]]; do case $1 in --unit) RUN_UNIT=true shift ;; --integration) RUN_INTEGRATION=true shift ;; --e2e) RUN_E2E=true shift ;; --debug) DEBUG=true shift ;; *) echo "Unknown option: $1" exit 1 ;; esac done # If no test type specified, run all if ! $RUN_UNIT && ! $RUN_INTEGRATION && ! $RUN_E2E; then RUN_UNIT=true RUN_INTEGRATION=true RUN_E2E=true fi # Function to run tests run_tests() { local test_type=$1 local test_command=$2 echo -e "${YELLOW}Running $test_type tests...${NC}" if $DEBUG; then echo "Test command: $test_command" fi if eval $test_command; then echo -e "${GREEN}✓ $test_type tests passed${NC}" return 0 else echo -e "${RED}✗ $test_type tests failed${NC}" return 1 fi } # Create results directory mkdir -p ../test-results # Run unit tests if $RUN_UNIT; then run_tests "Unit" "docker-compose exec wordpress vendor/bin/phpunit --testsuite unit --log-junit ../test-results/unit.xml" fi # Run integration tests if $RUN_INTEGRATION; then run_tests "Integration" "docker-compose exec wordpress vendor/bin/phpunit --testsuite integration --log-junit ../test-results/integration.xml" fi # Run E2E tests if $RUN_E2E; then run_tests "E2E" "npx playwright test --config=tests/e2e/playwright.config.ts" fi