Spaces:
Sleeping
Sleeping
| """ | |
| 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)}" | |