ui-regression-testing-2 / app_methods_extension.py
riazmo's picture
Upload 61 files
6f38c76 verified
"""
Extension methods for RegressionTestingApp
Adds HF Vision and Storage management methods
"""
from storage_manager import get_storage_manager
def get_hf_analysis_info(app_instance) -> str:
"""Get HF Vision analysis results."""
if not app_instance.current_state or not hasattr(app_instance.current_state, 'hf_analysis_results'):
return "No HF analysis results available yet. Run a test to see results."
hf_results = app_instance.current_state.hf_analysis_results
if not hf_results:
return "HF Vision analysis not performed (model not available or disabled)."
lines = []
lines.append("# HF Vision Model Analysis Results\n")
for viewport, result in hf_results.items():
lines.append(f"## {viewport.upper()} Viewport\n")
if "error" in result:
lines.append(f"Error: {result['error']}\n")
continue
comp_type = result.get("comparison_type", "unknown")
if comp_type == "captioning":
lines.append(f"**Analysis Type**: Image Captioning\n")
lines.append(f"**Design Caption**: {result.get('figma_caption', 'N/A')}")
lines.append(f"**Website Caption**: {result.get('website_caption', 'N/A')}")
lines.append(f"**Similarity Score**: {result.get('similarity_score', 0):.1f}%\n")
if result.get("missing_elements"):
lines.append(f"**Missing Elements**: {', '.join(result['missing_elements'])}")
if result.get("extra_elements"):
lines.append(f"**Extra Elements**: {', '.join(result['extra_elements'])}\n")
elif comp_type == "detection":
lines.append(f"**Analysis Type**: Object Detection\n")
lines.append(f"**Design Objects**: {result.get('figma_object_count', 0)}")
lines.append(f"**Website Objects**: {result.get('website_object_count', 0)}\n")
if result.get("missing_objects"):
lines.append(f"**Missing Objects**: {', '.join(result['missing_objects'])}")
if result.get("extra_objects"):
lines.append(f"**Extra Objects**: {', '.join(result['extra_objects'])}\n")
return "\n".join(lines) if lines else "No HF analysis results available."
def get_storage_info(app_instance) -> str:
"""Get storage information."""
try:
storage = get_storage_manager()
stats = storage.get_storage_stats()
executions = storage.list_executions()
lines = []
lines.append("# Screenshot Storage Information\n")
# Overall stats
lines.append("## Storage Statistics\n")
lines.append(f"- **Total Files**: {stats.get('total_files', 0)}")
lines.append(f"- **Total Size**: {stats.get('total_size_mb', 0):.2f}MB")
lines.append(f"- **Storage Location**: {stats.get('base_dir', 'N/A')}\n")
# Recent executions
if executions:
lines.append("## Recent Executions\n")
for exec_info in executions[:10]: # Show last 10
lines.append(f"### {exec_info['execution_id']}")
lines.append(f"- **Timestamp**: {exec_info['timestamp']}")
lines.append(f"- **Screenshots**: {exec_info['screenshot_count']}")
lines.append(f"- **Size**: {exec_info['size_mb']:.2f}MB\n")
else:
lines.append("No executions stored yet.\n")
# Storage recommendations
lines.append("## Storage Management\n")
lines.append("- Screenshots are automatically saved for each test run")
lines.append("- Old screenshots (7+ days) can be cleaned up using the cleanup button")
lines.append(f"- Current storage: {stats.get('total_size_mb', 0):.2f}MB")
return "\n".join(lines)
except Exception as e:
return f"Error getting storage info: {str(e)}"
def cleanup_storage(app_instance) -> str:
"""Cleanup old screenshots."""
try:
storage = get_storage_manager()
deleted_count, freed_space = storage.cleanup_old_screenshots(days=7)
lines = []
lines.append("# Storage Cleanup Results\n")
lines.append(f"Cleanup completed successfully!\n")
lines.append(f"- **Files Deleted**: {deleted_count}")
lines.append(f"- **Space Freed**: {freed_space:.2f}MB\n")
# Show updated stats
stats = storage.get_storage_stats()
lines.append("## Updated Storage Statistics\n")
lines.append(f"- **Total Files**: {stats.get('total_files', 0)}")
lines.append(f"- **Total Size**: {stats.get('total_size_mb', 0):.2f}MB")
return "\n".join(lines)
except Exception as e:
return f"Error during cleanup: {str(e)}"