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: 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")