From 255cdfd1ebc068c412d868ce9a964637b9db0452 Mon Sep 17 00:00:00 2001 From: "mendral-app[bot]" <233154221+mendral-app[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 00:04:13 -0700 Subject: [PATCH 1/2] fix: add open_viewer param to NotteSession.__init__ NotteSession.__init__ passes all **data kwargs to SessionStartRequest.model_validate(), but open_viewer is not a field of SessionStartRequest. This causes a Pydantic ValidationError when examples like cli_agent.py and quickstart.py call notte.Session(open_viewer=...). Add open_viewer as an explicit keyword parameter (matching RemoteSession.__init__) so it is consumed before **data reaches model_validate(). --- packages/notte-browser/src/notte_browser/session.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/notte-browser/src/notte_browser/session.py b/packages/notte-browser/src/notte_browser/session.py index 07e8d8a6f..722b7318e 100644 --- a/packages/notte-browser/src/notte_browser/session.py +++ b/packages/notte-browser/src/notte_browser/session.py @@ -129,6 +129,7 @@ def __init__( persona: BasePersona | None = None, window: BrowserWindow | None = None, keep_alive: bool = False, + open_viewer: bool = False, **data: Unpack[SessionStartRequestDict], ) -> None: if storage is not None and storage.is_remote: From be1a4251ec0718840da0abd468d5e802437188cd Mon Sep 17 00:00:00 2001 From: "mendral-app[bot]" <233154221+mendral-app[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 00:09:48 -0700 Subject: [PATCH 2/2] test: add regression test for open_viewer parameter Verify that NotteSession(open_viewer=True/False) does not raise a Pydantic ValidationError, covering the fix from the previous commit. --- tests/test_session.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/test_session.py b/tests/test_session.py index 5dce6052e..ff1766ea6 100644 --- a/tests/test_session.py +++ b/tests/test_session.py @@ -242,6 +242,14 @@ async def alist_downloaded_files(self) -> list[FileInfo]: _ = NotteSession(storage=_FakeRemoteStorage()) +@pytest.mark.parametrize("open_viewer", [True, False]) +def test_open_viewer_does_not_raise_validation_error(open_viewer: bool): + """open_viewer must be consumed before **data reaches SessionStartRequest.model_validate().""" + session = NotteSession(open_viewer=open_viewer) + # If we get here, no ValidationError was raised + assert session is not None + + def test_captcha_solver_not_available_error(): with pytest.raises(CaptchaSolverNotAvailableError): _ = NotteSession(solve_captchas=True, browser_type="chrome")