handwriting-ocr / test_server.sh
Raymond Weitekamp
stuck on server test
37cf6e7
raw
history blame
2.87 kB
#!/bin/bash
# Exit on error
set -e
# Parse command line arguments
DEBUG=0
while [[ "$#" -gt 0 ]]; do
case $1 in
--debug) DEBUG=1 ;;
*) echo "Unknown parameter: $1"; exit 1 ;;
esac
shift
done
# Check if auth_state.json exists
if [ ! -f "auth_state.json" ]; then
echo "Error: auth_state.json not found. Please run save_hf_storage_state.py first to save your Hugging Face login state."
exit 1
fi
# Activate virtual environment if it exists, create if it doesn't
if [ ! -d "venv" ]; then
echo "Creating virtual environment..."
python -m venv venv
fi
echo "Activating virtual environment..."
source venv/bin/activate
# Install dependencies if needed
echo "Installing dependencies..."
if ! command -v uv &> /dev/null; then
echo "Installing uv package installer..."
curl -LsSf https://astral.sh/uv/install.sh | sh
fi
uv pip install -r requirements.txt
# Install Playwright browsers if needed
echo "Installing Playwright browsers..."
playwright install chromium
# Create a new test file specifically for server tests
cat > test_server.py << 'EOL'
import os
import pytest
import pytest_asyncio
from playwright.async_api import async_playwright, expect
import asyncio
@pytest_asyncio.fixture(scope="session")
def event_loop():
policy = asyncio.get_event_loop_policy()
loop = policy.new_event_loop()
yield loop
loop.close()
@pytest.mark.asyncio
async def test_space_loads():
"""Test that we can access the Space and see the heading"""
async with async_playwright() as playwright:
browser = await playwright.chromium.launch(headless=False)
page = await browser.new_page()
try:
# Navigate to the Space
await page.goto("https://huggingface.co/spaces/rawwerks/handwriting-ocr")
if os.getenv('PWDEBUG'):
await page.pause()
# Now look for the login button from Gradio
print("Looking for login button...")
login_button = page.get_by_role("button").filter(has_text="Login")
await login_button.wait_for(state="visible", timeout=5000)
print("Found login button, clicking...")
if os.getenv('PWDEBUG'):
await page.pause()
await login_button.click()
print("Clicked login button")
finally:
await browser.close()
EOL
# Run the server tests with or without Playwright Inspector based on debug flag
echo "Running server tests..."
if [ "$DEBUG" -eq 1 ]; then
echo "Debug mode enabled - launching Playwright Inspector..."
PWDEBUG=1 python -m pytest test_server.py -v
else
python -m pytest test_server.py -v
fi
# Cleanup
echo "Cleaning up..."
rm test_server.py
rm -f error.png
# Deactivate virtual environment
deactivate