mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-21 13:12:12 -03:00
Introduce comprehensive documentation for the new `lora-manager-e2e` skill, which provides end-to-end testing workflows for LoRa Manager. The skill enables automated validation of standalone mode, including server management, UI interaction via Chrome DevTools MCP, and frontend-to-backend integration testing. Key additions: - Detailed skill description and prerequisites - Quick start workflow for server setup and browser debugging - Common E2E test patterns for page load verification, server restart, and API testing - Example test flows demonstrating step-by-step validation procedures - Scripts and MCP command examples for practical implementation This documentation supports automated testing of LoRa Manager's web interface and backend functionality, ensuring reliable end-to-end validation of features.
194 lines
5.6 KiB
Python
Executable File
194 lines
5.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Example E2E test demonstrating LoRa Manager testing workflow.
|
|
|
|
This script shows how to:
|
|
1. Start the standalone server
|
|
2. Use Chrome DevTools MCP to interact with the UI
|
|
3. Verify functionality end-to-end
|
|
|
|
Note: This is a template. Actual execution requires Chrome DevTools MCP.
|
|
"""
|
|
|
|
import subprocess
|
|
import sys
|
|
import time
|
|
|
|
|
|
def run_test():
|
|
"""Run example E2E test flow."""
|
|
|
|
print("=" * 60)
|
|
print("LoRa Manager E2E Test Example")
|
|
print("=" * 60)
|
|
|
|
# Step 1: Start server
|
|
print("\n[1/5] Starting LoRa Manager standalone server...")
|
|
result = subprocess.run(
|
|
[sys.executable, "start_server.py", "--port", "8188", "--wait", "--timeout", "30"],
|
|
capture_output=True,
|
|
text=True
|
|
)
|
|
if result.returncode != 0:
|
|
print(f"Failed to start server: {result.stderr}")
|
|
return 1
|
|
print("Server ready!")
|
|
|
|
# Step 2: Open Chrome (manual step - show command)
|
|
print("\n[2/5] Open Chrome with debug mode:")
|
|
print("google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-lora-manager http://127.0.0.1:8188/loras")
|
|
print("(In actual test, this would be automated via MCP)")
|
|
|
|
# Step 3: Navigate and verify page load
|
|
print("\n[3/5] Page Load Verification:")
|
|
print("""
|
|
MCP Commands to execute:
|
|
1. navigate_page(type="url", url="http://127.0.0.1:8188/loras")
|
|
2. wait_for(text="LoRAs", timeout=10000)
|
|
3. snapshot = take_snapshot()
|
|
""")
|
|
|
|
# Step 4: Test search functionality
|
|
print("\n[4/5] Search Functionality Test:")
|
|
print("""
|
|
MCP Commands to execute:
|
|
1. fill(uid="search-input", value="test")
|
|
2. press_key(key="Enter")
|
|
3. wait_for(text="Results", timeout=5000)
|
|
4. result = evaluate_script(function="""
|
|
() => {
|
|
const cards = document.querySelectorAll('.lora-card');
|
|
return { count: cards.length };
|
|
}
|
|
""")
|
|
""")
|
|
|
|
# Step 5: Verify API
|
|
print("\n[5/5] API Verification:")
|
|
print("""
|
|
MCP Commands to execute:
|
|
1. api_result = evaluate_script(function="""
|
|
async () => {
|
|
const response = await fetch('/loras/api/list');
|
|
const data = await response.json();
|
|
return { count: data.length, status: response.status };
|
|
}
|
|
""")
|
|
2. Verify api_result['status'] == 200
|
|
""")
|
|
|
|
print("\n" + "=" * 60)
|
|
print("Test flow completed!")
|
|
print("=" * 60)
|
|
|
|
return 0
|
|
|
|
|
|
def example_restart_flow():
|
|
"""Example: Testing configuration change that requires restart."""
|
|
|
|
print("\n" + "=" * 60)
|
|
print("Example: Server Restart Flow")
|
|
print("=" * 60)
|
|
|
|
print("""
|
|
Scenario: Change setting and verify after restart
|
|
|
|
Steps:
|
|
1. Navigate to settings page
|
|
- navigate_page(type="url", url="http://127.0.0.1:8188/settings")
|
|
|
|
2. Change a setting (e.g., theme)
|
|
- fill(uid="theme-select", value="dark")
|
|
- click(uid="save-settings-button")
|
|
|
|
3. Restart server
|
|
- subprocess.run([python, "start_server.py", "--restart", "--wait"])
|
|
|
|
4. Refresh browser
|
|
- navigate_page(type="reload", ignoreCache=True)
|
|
- wait_for(text="LoRAs", timeout=15000)
|
|
|
|
5. Verify setting persisted
|
|
- navigate_page(type="url", url="http://127.0.0.1:8188/settings")
|
|
- theme = evaluate_script(function="() => document.querySelector('#theme-select').value")
|
|
- assert theme == "dark"
|
|
""")
|
|
|
|
|
|
def example_modal_interaction():
|
|
"""Example: Testing modal dialog interaction."""
|
|
|
|
print("\n" + "=" * 60)
|
|
print("Example: Modal Dialog Interaction")
|
|
print("=" * 60)
|
|
|
|
print("""
|
|
Scenario: Add new LoRA via modal
|
|
|
|
Steps:
|
|
1. Open modal
|
|
- click(uid="add-lora-button")
|
|
- wait_for(text="Add LoRA", timeout=3000)
|
|
|
|
2. Fill form
|
|
- fill_form(elements=[
|
|
{"uid": "lora-name", "value": "Test Character"},
|
|
{"uid": "lora-path", "value": "/models/test.safetensors"},
|
|
])
|
|
|
|
3. Submit
|
|
- click(uid="modal-submit-button")
|
|
|
|
4. Verify success
|
|
- wait_for(text="Successfully added", timeout=5000)
|
|
- snapshot = take_snapshot()
|
|
""")
|
|
|
|
|
|
def example_network_monitoring():
|
|
"""Example: Network request monitoring."""
|
|
|
|
print("\n" + "=" * 60)
|
|
print("Example: Network Request Monitoring")
|
|
print("=" * 60)
|
|
|
|
print("""
|
|
Scenario: Verify API calls during user interaction
|
|
|
|
Steps:
|
|
1. Clear network log (implicit on navigation)
|
|
- navigate_page(type="url", url="http://127.0.0.1:8188/loras")
|
|
|
|
2. Perform action that triggers API call
|
|
- fill(uid="search-input", value="character")
|
|
- press_key(key="Enter")
|
|
|
|
3. List network requests
|
|
- requests = list_network_requests(resourceTypes=["xhr", "fetch"])
|
|
|
|
4. Find search API call
|
|
- search_requests = [r for r in requests if "/api/search" in r.get("url", "")]
|
|
- assert len(search_requests) > 0, "Search API was not called"
|
|
|
|
5. Get request details
|
|
- if search_requests:
|
|
details = get_network_request(reqid=search_requests[0]["reqid"])
|
|
- Verify request method, response status, etc.
|
|
""")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print("LoRa Manager E2E Test Examples\n")
|
|
print("This script demonstrates E2E testing patterns.\n")
|
|
print("Note: Actual execution requires Chrome DevTools MCP connection.\n")
|
|
|
|
run_test()
|
|
example_restart_flow()
|
|
example_modal_interaction()
|
|
example_network_monitoring()
|
|
|
|
print("\n" + "=" * 60)
|
|
print("All examples shown!")
|
|
print("=" * 60)
|