From 31c115ed5aa207ffe267e08150a838bd5237f106 Mon Sep 17 00:00:00 2001 From: Paillat Date: Tue, 9 Dec 2025 00:04:59 +0100 Subject: [PATCH] :goal_net: Add error handling for UI setup to improve robustness (#4) --- src/renderer/base.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/renderer/base.py b/src/renderer/base.py index 7e762d0..91058f2 100644 --- a/src/renderer/base.py +++ b/src/renderer/base.py @@ -233,19 +233,23 @@ class FlagRenderer: return new_path async def _setup_ui(self, page: playwright.async_api.Page) -> None: - side_panel_btn = page.locator(SITE_PANEL_BTN_XPATH) - await side_panel_btn.click(timeout=CLICK_TIMEOUT) + try: + side_panel_btn = page.locator(SITE_PANEL_BTN_XPATH) + await side_panel_btn.click(timeout=CLICK_TIMEOUT) - wind_control_btn = page.get_by_text(WIND_CONTROL_TEXT) - await wind_control_btn.click(timeout=CLICK_TIMEOUT) + wind_control_btn = page.get_by_text(WIND_CONTROL_TEXT) + await wind_control_btn.click(timeout=CLICK_TIMEOUT) - await side_panel_btn.click(timeout=CLICK_TIMEOUT) + await side_panel_btn.click(timeout=CLICK_TIMEOUT) - reset_camera_btn = page.get_by_text(RESET_CAMERA_TEXT) - await reset_camera_btn.click(timeout=CLICK_TIMEOUT, force=True) + reset_camera_btn = page.get_by_text(RESET_CAMERA_TEXT) + await reset_camera_btn.click(timeout=CLICK_TIMEOUT, force=True) - theater_mode_btn = page.get_by_text(THEATER_MODE_TEXT) - await theater_mode_btn.click(timeout=CLICK_TIMEOUT, force=True) + theater_mode_btn = page.get_by_text(THEATER_MODE_TEXT) + await theater_mode_btn.click(timeout=CLICK_TIMEOUT, force=True) + except playwright.async_api.TimeoutError: + logger.exception("Failed to setup the UI") + logger.debug("Page content: %s", await page.content()) @asynccontextmanager async def render(self, flag: "Flag") -> AsyncIterator[Path]: