Skip to content

Fix bubbler block not having reset times in python script #30

Fix bubbler block not having reset times in python script

Fix bubbler block not having reset times in python script #30

Workflow file for this run

name: CI - Build and Test Application
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.x]
python-version: ['3.10', '3.11']
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Cache Python dependencies
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Install Node.js dependencies
run: npm ci
- name: Lint frontend code
run: npm run lint
continue-on-error: true
- name: Build frontend
run: npm run build
- name: Run Python tests
run: |
python -m pytest test/ -v
- name: Start backend server and health check
run: |
# Start the backend server in the background
python -m src.backend &
BACKEND_PID=$!
# Wait for the server to start
echo "Waiting for backend server to start..."
sleep 10
# Health check - test if the server is responding
max_attempts=30
attempt=1
while [ $attempt -le $max_attempts ]; do
if curl -f http://localhost:8000/health 2>/dev/null; then
echo "Backend server is healthy!"
break
elif curl -f http://localhost:8000/ 2>/dev/null; then
echo "Backend server is responding!"
break
else
echo "Attempt $attempt/$max_attempts: Backend not ready yet..."
sleep 2
attempt=$((attempt + 1))
fi
done
if [ $attempt -gt $max_attempts ]; then
echo "Backend server failed to start properly"
kill $BACKEND_PID 2>/dev/null || true
exit 1
fi
# Test basic API endpoints if they exist
echo "Testing backend endpoints..."
# Clean up
kill $BACKEND_PID 2>/dev/null || true
echo "Backend server test completed successfully!"
- name: Test frontend build serves correctly
run: |
# Start the preview server in the background
npm run preview &
FRONTEND_PID=$!
# Wait for the server to start
echo "Waiting for frontend server to start..."
sleep 5
# Health check for frontend
max_attempts=15
attempt=1
while [ $attempt -le $max_attempts ]; do
if curl -f http://localhost:4173/ 2>/dev/null; then
echo "Frontend server is serving correctly!"
break
else
echo "Attempt $attempt/$max_attempts: Frontend not ready yet..."
sleep 2
attempt=$((attempt + 1))
fi
done
if [ $attempt -gt $max_attempts ]; then
echo "Frontend server failed to start properly"
kill $FRONTEND_PID 2>/dev/null || true
exit 1
fi
# Clean up
kill $FRONTEND_PID 2>/dev/null || true
echo "Frontend server test completed successfully!"
integration-test:
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
npm ci
- name: Build frontend
run: npm run build
- name: Test full application stack
run: |
# Start both frontend and backend
echo "Starting full application stack..."
# Start backend
python -m src.backend &
BACKEND_PID=$!
# Start frontend preview
npm run preview &
FRONTEND_PID=$!
# Wait for both services
sleep 15
# Test both services are running
echo "Testing backend..."
if ! curl -f http://localhost:8000/ 2>/dev/null; then
echo "Backend failed to start"
kill $BACKEND_PID $FRONTEND_PID 2>/dev/null || true
exit 1
fi
echo "Testing frontend..."
if ! curl -f http://localhost:4173/ 2>/dev/null; then
echo "Frontend failed to start"
kill $BACKEND_PID $FRONTEND_PID 2>/dev/null || true
exit 1
fi
echo "Both services are running successfully!"
# Clean up
kill $BACKEND_PID $FRONTEND_PID 2>/dev/null || true
echo "Integration test completed successfully!"