#!/bin/bash # Load environment variables if [ ! -f ./.env ]; then echo "Error: .env file not found!" exit 1 fi echo "Sourcing .env file from: $(pwd)/.env" source ./.env # Change to the script's directory parent (wordpress-dev) SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) cd "$SCRIPT_DIR/.." || exit 1 echo "Changed working directory to: $(pwd)" # 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 TEST_SUITE="" # Parse arguments while [[ $# -gt 0 ]]; do case $1 in --unit) RUN_UNIT=true shift ;; --integration) RUN_INTEGRATION=true shift ;; --e2e) RUN_E2E=true shift ;; --login) RUN_E2E=true TEST_SUITE="login" 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. Exiting.${NC}" exit 1 # Exit script immediately on failure fi } # Create results directory mkdir -p ../test-results # Composer dependencies are managed on the host and mounted via volume. # Run unit tests using relative path via docker-compose exec if $RUN_UNIT; then run_tests "Unit" "docker-compose exec -T wordpress sh -c 'vendor/bin/phpunit --verbose --testsuite unit --log-junit ../test-results/unit.xml; exit \$?'" fi # Run integration tests using relative path via docker-compose exec if $RUN_INTEGRATION; then run_tests "Integration" "docker-compose exec -T wordpress vendor/bin/phpunit --testsuite integration --log-junit ../test-results/integration.xml" fi # Run E2E tests if $RUN_E2E; then if [ -n "$TEST_SUITE" ]; then run_tests "E2E" "npx playwright test --config=tests/e2e/playwright.config.ts --grep @$TEST_SUITE" else run_tests "E2E" "npx playwright test --config=tests/e2e/playwright.config.ts" fi fi