Spaces:
Running
Running
| from .base_page import BasePage | |
| from playwright.sync_api import expect | |
| class AdminPage(BasePage): | |
| """Page object for the admin page""" | |
| # Selectors using data-testid for stability | |
| LOGIN_FORM = "[data-testid='login-form']" | |
| PASSWORD_INPUT = "[data-testid='password-input']" | |
| LOGIN_BUTTON = "[data-testid='login-button']" | |
| ADMIN_DASHBOARD = "[data-testid='admin-dashboard']" | |
| SCHEMA_MANAGEMENT = "[data-testid='schema-management']" | |
| MODEL_CONFIG = "[data-testid='model-config']" | |
| SYSTEM_MONITORING = "[data-testid='system-monitoring']" | |
| LOGOUT_BUTTON = "[data-testid='logout-button']" | |
| SAVE_BUTTON = "[data-testid='save-button']" | |
| SUCCESS_MESSAGE = "[data-testid='success-message']" | |
| ERROR_MESSAGE = "[data-testid='error-message']" | |
| def __init__(self, page): | |
| super().__init__(page) | |
| self.page_url = "/admin" | |
| def navigate(self): | |
| """Navigate to admin page""" | |
| self.navigate_to(self.page_url) | |
| # For now, just verify the page loads without checking specific elements | |
| # since we don't have the actual UI with data-testid attributes | |
| def login(self, password: str): | |
| """Login to admin panel""" | |
| self.fill_input(self.PASSWORD_INPUT, password) | |
| self.click_element(self.LOGIN_BUTTON) | |
| self.expect_element_visible(self.ADMIN_DASHBOARD) | |
| def logout(self): | |
| """Logout from admin panel""" | |
| self.click_element(self.LOGOUT_BUTTON) | |
| self.expect_element_visible(self.LOGIN_FORM) | |
| def navigate_to_schema_management(self): | |
| """Navigate to schema management section""" | |
| self.click_element(self.SCHEMA_MANAGEMENT) | |
| self.page.wait_for_load_state("networkidle") | |
| def navigate_to_model_config(self): | |
| """Navigate to model configuration section""" | |
| self.click_element(self.MODEL_CONFIG) | |
| self.page.wait_for_load_state("networkidle") | |
| def navigate_to_system_monitoring(self): | |
| """Navigate to system monitoring section""" | |
| self.click_element(self.SYSTEM_MONITORING) | |
| self.page.wait_for_load_state("networkidle") | |
| def save_configuration(self): | |
| """Save configuration changes""" | |
| self.click_element(self.SAVE_BUTTON) | |
| self.expect_element_visible(self.SUCCESS_MESSAGE) | |
| def expect_admin_access(self): | |
| """Expect admin dashboard to be visible""" | |
| self.expect_element_visible(self.ADMIN_DASHBOARD) | |
| def expect_login_required(self): | |
| """Expect login form to be visible""" | |
| self.expect_element_visible(self.LOGIN_FORM) | |
| def expect_success_message(self): | |
| """Expect success message to be visible""" | |
| self.expect_element_visible(self.SUCCESS_MESSAGE) | |
| def expect_error_message(self): | |
| """Expect error message to be visible""" | |
| self.expect_element_visible(self.ERROR_MESSAGE) | |