LoRa Manager E2E Testing
This skill provides workflows and utilities for end-to-end testing of LoRa Manager using Chrome DevTools MCP.
Prerequisites
- •LoRa Manager project cloned and dependencies installed (
pip install -r requirements.txt) - •Chrome browser available for debugging
- •Chrome DevTools MCP connected
Quick Start Workflow
1. Start LoRa Manager Standalone
# Use the provided script to start the server python .agents/skills/lora-manager-e2e/scripts/start_server.py --port 8188
Or manually:
cd /home/miao/workspace/ComfyUI/custom_nodes/ComfyUI-Lora-Manager python standalone.py --port 8188
Wait for server ready message before proceeding.
2. Open Chrome Debug Mode
# Chrome with remote debugging on port 9222 google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-lora-manager http://127.0.0.1:8188/loras
3. Connect Chrome DevTools MCP
Ensure the MCP server is connected to Chrome at http://localhost:9222.
4. Navigate and Interact
Use Chrome DevTools MCP tools to:
- •Take snapshots:
take_snapshot - •Click elements:
click - •Fill forms:
fillorfill_form - •Evaluate scripts:
evaluate_script - •Wait for elements:
wait_for
Common E2E Test Patterns
Pattern: Full Page Load Verification
# Navigate to LoRA list page navigate_page(type="url", url="http://127.0.0.1:8188/loras") # Wait for page to load wait_for(text="LoRAs", timeout=10000) # Take snapshot to verify UI state snapshot = take_snapshot()
Pattern: Restart Server for Configuration Changes
# Stop current server (if running) # Start with new configuration python .agents/skills/lora-manager-e2e/scripts/start_server.py --port 8188 --restart # Wait and refresh browser navigate_page(type="reload", ignoreCache=True) wait_for(text="LoRAs", timeout=15000)
Pattern: Verify Backend API via Frontend
# Execute script in browser to call backend API
result = evaluate_script(function="""
async () => {
const response = await fetch('/loras/api/list');
const data = await response.json();
return { count: data.length, firstItem: data[0]?.name };
}
""")
Pattern: Form Submission Flow
# Fill a form (e.g., search or filter)
fill_form(elements=[
{"uid": "search-input", "value": "character"},
])
# Click submit button
click(uid="search-button")
# Wait for results
wait_for(text="Results", timeout=5000)
# Verify results via snapshot
snapshot = take_snapshot()
Pattern: Modal Dialog Interaction
# Open modal (e.g., add LoRA)
click(uid="add-lora-button")
# Wait for modal to appear
wait_for(text="Add LoRA", timeout=3000)
# Fill modal form
fill_form(elements=[
{"uid": "lora-name", "value": "Test LoRA"},
{"uid": "lora-path", "value": "/path/to/lora.safetensors"},
])
# Submit
click(uid="modal-submit-button")
# Wait for success message or close
wait_for(text="Success", timeout=5000)
Available Scripts
scripts/start_server.py
Starts or restarts the LoRa Manager standalone server.
python scripts/start_server.py [--port PORT] [--restart] [--wait]
Options:
- •
--port: Server port (default: 8188) - •
--restart: Kill existing server before starting - •
--wait: Wait for server to be ready before exiting
scripts/wait_for_server.py
Polls server until ready or timeout.
python scripts/wait_for_server.py [--port PORT] [--timeout SECONDS]
Test Scenarios Reference
See references/test-scenarios.md for detailed test scenarios including:
- •LoRA list display and filtering
- •Model metadata editing
- •Recipe creation and management
- •Settings configuration
- •Import/export functionality
Network Request Verification
Use list_network_requests and get_network_request to verify API calls:
# List recent XHR/fetch requests requests = list_network_requests(resourceTypes=["xhr", "fetch"]) # Get details of specific request details = get_network_request(reqid=123)
Console Message Monitoring
# Check for errors or warnings messages = list_console_messages(types=["error", "warn"])
Performance Testing
# Start performance trace performance_start_trace(reload=True, autoStop=False) # Perform actions... # Stop and analyze results = performance_stop_trace()
Cleanup
Always ensure proper cleanup after tests:
- •Stop the standalone server
- •Close browser pages (keep at least one open)
- •Clear temporary data if needed