#!/bin/bash
#
# Git pre-push hook for studio-v2
# Runs Playwright E2E tests before pushing changes
#
# To install, run:
#   chmod +x .git-hooks/pre-push
#   git config core.hooksPath .git-hooks
#
# To skip tests (emergency only):
#   git push --no-verify

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

echo -e "${YELLOW}Running E2E tests before push...${NC}"
echo ""

# Navigate to studio-v2 directory
cd "$(dirname "$0")/../.." || exit 1

# Check if dev server is running on port 3001
if ! curl -s http://localhost:3001 > /dev/null 2>&1; then
    echo -e "${YELLOW}Dev server not running. Checking remote...${NC}"

    # Check if macmini server is available
    if curl -s https://macmini/korrektur > /dev/null 2>&1; then
        echo -e "${GREEN}Using remote server at https://macmini${NC}"
        export PLAYWRIGHT_BASE_URL="https://macmini"
    else
        echo -e "${RED}No server available. Start dev server with 'npm run dev' or deploy to macmini.${NC}"
        echo -e "${YELLOW}Skipping tests...${NC}"
        exit 0
    fi
fi

# Run tests
echo -e "${YELLOW}Running Playwright tests...${NC}"
npm run test:e2e -- --reporter=list 2>&1

# Check test result
if [ $? -eq 0 ]; then
    echo ""
    echo -e "${GREEN}All tests passed! Pushing...${NC}"
    exit 0
else
    echo ""
    echo -e "${RED}Tests failed! Push aborted.${NC}"
    echo -e "${YELLOW}Fix the failing tests and try again.${NC}"
    echo -e "${YELLOW}To push anyway (not recommended): git push --no-verify${NC}"
    exit 1
fi
