diff --git a/packages/agentenv-protocol/src/agentenv_protocol/website_browser.py b/packages/agentenv-protocol/src/agentenv_protocol/website_browser.py index d88120714..21fa70b74 100644 --- a/packages/agentenv-protocol/src/agentenv_protocol/website_browser.py +++ b/packages/agentenv-protocol/src/agentenv_protocol/website_browser.py @@ -430,7 +430,10 @@ async def capture_page(self) -> dict: return {**({"png": png} if png is not None else {"blank": True}), "page": self._state_of(target)} async def _capture(self, session: str) -> Optional[str]: + """The tab's page as it shows now; with a dialog open on it, which keeps it from painting, the last it took.""" target = self._sessions[session] + if session in self._open_dialogs: + return self._shots.get(target) navigated = self.tabs.get(target, {}).get("url") try: shot = await self.devtools.call("Page.captureScreenshot", {"format": "png", "optimizeForSpeed": True}, diff --git a/packages/agentenv-protocol/tests/test_website_browser.py b/packages/agentenv-protocol/tests/test_website_browser.py index 6ae0861fd..80fd9e910 100644 --- a/packages/agentenv-protocol/tests/test_website_browser.py +++ b/packages/agentenv-protocol/tests/test_website_browser.py @@ -782,7 +782,7 @@ async def call(self, method, params=None, *, session_id=None, timeout_s=None): @pytest.mark.asyncio -async def test_while_a_dialog_keeps_its_page_from_painting_its_capture_is_the_last_it_took(): +async def test_while_a_dialog_keeps_its_page_from_painting_its_capture_is_the_last_it_took_without_waiting_on_it(): devtools = Tabbed() control = await _tabs(devtools, "a") before = await control.capture() @@ -790,6 +790,7 @@ async def test_while_a_dialog_keeps_its_page_from_painting_its_capture_is_the_la devtools.send("Page.javascriptDialogOpening", {"type": "alert", "message": "Saved"}, session="s-a") assert before == "png of s-a" and await control.capture() == "png of s-a" + assert len(devtools.timeouts) == 1 @pytest.mark.asyncio