#!/bin/bash set -e # Cleanup first scripts/clean_test_env.sh echo "Building backend..." go build -o neko_server ./cmd/neko echo "Creating data directory..." mkdir -p .data echo "Starting mock feed server on port 9090..." python3 -m http.server 9090 --directory scripts > mock_server.log 2>&1 & MOCK_PID=$! echo "Mock Server PID: $MOCK_PID" # Verify mock server sleep 2 if ! curl -s --head http://localhost:9090/mock_feed.xml > /dev/null; then echo "Mock server failed to start!" cat mock_server.log exit 1 fi echo "Mock server is up." echo "Starting backend on port 4994..." ./neko_server --verbose --allow-local --http=4994 --database=.data/test.db > backend.log 2>&1 & SERVER_PID=$! echo "Backend PID: $SERVER_PID" # Wait for server to be ready echo "Waiting for backend to start..." for i in {1..30}; do if nc -z localhost 4994; then echo "Backend is up!" break fi echo "Waiting..." sleep 1 done if ! nc -z localhost 4994; then echo "Backend failed to start. Check backend.log" cat backend.log kill $SERVER_PID || true exit 1 fi echo "Running E2E tests..." cd frontend if npm run test:e2e; then echo "Tests passed!" EXIT_CODE=0 else echo "Tests failed!" echo "Backend Logs:" cat ../backend.log EXIT_CODE=1 fi cd .. echo "Cleaning up..." kill $SERVER_PID || true kill $MOCK_PID || true scripts/clean_test_env.sh exit $EXIT_CODE