Spaces:
Sleeping
Sleeping
| """ | |
| State Schema for UI Regression Testing Workflow | |
| Defines the structure of data passed between agents. | |
| """ | |
| from typing import TypedDict, Dict, List, Any, Optional | |
| class WorkflowState(TypedDict, total=False): | |
| """Complete state for the UI regression testing workflow.""" | |
| # Configuration | |
| figma_file_key: str | |
| figma_access_token: str | |
| website_url: str | |
| execution_id: str | |
| hf_token: Optional[str] | |
| # Screenshot paths | |
| figma_screenshots: Dict[str, str] # {"desktop": "path/to/file.png", "mobile": "..."} | |
| website_screenshots: Dict[str, str] | |
| # Screenshot metadata (for proper comparison) | |
| figma_dimensions: Dict[str, Dict[str, int]] # {"desktop": {"width": 1440, "height": 1649}} | |
| website_dimensions: Dict[str, Dict[str, int]] | |
| # Comparison results | |
| comparison_images: Dict[str, str] # {"desktop": "path/to/diff.png"} | |
| visual_differences: List[Dict[str, Any]] | |
| similarity_scores: Dict[str, float] # {"desktop": 85.5, "mobile": 78.2} | |
| overall_score: float | |
| # Workflow control | |
| user_approval: bool | |
| status: str | |
| error_message: Optional[str] | |
| # Logs | |
| logs: List[str] | |
| def create_initial_state( | |
| figma_file_key: str, | |
| figma_access_token: str, | |
| website_url: str, | |
| execution_id: str, | |
| hf_token: str = "" | |
| ) -> WorkflowState: | |
| """Create initial state for a new workflow run.""" | |
| return WorkflowState( | |
| figma_file_key=figma_file_key, | |
| figma_access_token=figma_access_token, | |
| website_url=website_url, | |
| execution_id=execution_id, | |
| hf_token=hf_token, | |
| figma_screenshots={}, | |
| website_screenshots={}, | |
| figma_dimensions={}, | |
| website_dimensions={}, | |
| comparison_images={}, | |
| visual_differences=[], | |
| similarity_scores={}, | |
| overall_score=0.0, | |
| user_approval=False, | |
| status="initialized", | |
| error_message=None, | |
| logs=[] | |
| ) | |