#!/bin/bash
# Wrapper for ./vendor/bin/codecept with chromedriver loading

PLUGIN_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"

# Convert to Windows path if running under Cygwin
if command -v cygpath >/dev/null 2>&1; then
  WIN_PLUGIN_ROOT="$(cygpath -w "$PLUGIN_ROOT")"
else
  WIN_PLUGIN_ROOT="$PLUGIN_ROOT"
fi

WAIT_FOR_IT="$PLUGIN_ROOT/shared/tools/wait-for-it.sh"
CHROMEDRIVER_PORT=9515

# Change to plugin root before starting chromedriver and codecept
cd "$PLUGIN_ROOT"

# Start chromedriver in background
chromedriver --url-base=/wd/hub/ --port=$CHROMEDRIVER_PORT > /dev/null 2>&1 &
CHROME_PID=$!

# Ensure chromedriver is cleaned up no matter what
#trap "kill $CHROME_PID 2>/dev/null" EXIT
trap "taskkill /PID $CHROME_PID /T /F >/dev/null 2>&1" EXIT

# Wait until it's ready
$WAIT_FOR_IT 127.0.0.1:$CHROMEDRIVER_PORT -t 120 > /dev/null 2>&1
WAIT_STATUS=$?

if [ $WAIT_STATUS -ne 0 ]; then
  echo "Chromedriver failed to start or respond in time"
  exit 1
fi

# Replace current process with codecept (so script ends cleanly after)
exec "$WIN_PLUGIN_ROOT/vendor/bin/codecept" "$@"
