#!/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