File tree Expand file tree Collapse file tree 3 files changed +47
-4
lines changed
hyperbrowser/client/managers Expand file tree Collapse file tree 3 files changed +47
-4
lines changed Original file line number Diff line number Diff line change @@ -37,7 +37,17 @@ async def _execute_request(
3737 "session must be a plain string session ID or SessionDetail"
3838 )
3939
40- if not session .computer_action_endpoint :
40+ try :
41+ computer_action_endpoint = session .computer_action_endpoint
42+ except HyperbrowserError :
43+ raise
44+ except Exception as exc :
45+ raise HyperbrowserError (
46+ "session must include computer_action_endpoint" ,
47+ original_error = exc ,
48+ ) from exc
49+
50+ if not computer_action_endpoint :
4151 raise HyperbrowserError (
4252 "Computer action endpoint not available for this session"
4353 )
@@ -48,7 +58,7 @@ async def _execute_request(
4858 payload = params
4959
5060 response = await self ._client .transport .post (
51- session . computer_action_endpoint ,
61+ computer_action_endpoint ,
5262 data = payload ,
5363 )
5464 return parse_response_model (
Original file line number Diff line number Diff line change @@ -37,7 +37,17 @@ def _execute_request(
3737 "session must be a plain string session ID or SessionDetail"
3838 )
3939
40- if not session .computer_action_endpoint :
40+ try :
41+ computer_action_endpoint = session .computer_action_endpoint
42+ except HyperbrowserError :
43+ raise
44+ except Exception as exc :
45+ raise HyperbrowserError (
46+ "session must include computer_action_endpoint" ,
47+ original_error = exc ,
48+ ) from exc
49+
50+ if not computer_action_endpoint :
4151 raise HyperbrowserError (
4252 "Computer action endpoint not available for this session"
4353 )
@@ -48,7 +58,7 @@ def _execute_request(
4858 payload = params
4959
5060 response = self ._client .transport .post (
51- session . computer_action_endpoint ,
61+ computer_action_endpoint ,
5262 data = payload ,
5363 )
5464 return parse_response_model (
Original file line number Diff line number Diff line change @@ -41,6 +41,29 @@ async def run() -> None:
4141 asyncio .run (run ())
4242
4343
44+ def test_sync_computer_action_manager_wraps_missing_endpoint_attribute ():
45+ manager = SyncComputerActionManager (_DummyClient ())
46+
47+ with pytest .raises (
48+ HyperbrowserError , match = "session must include computer_action_endpoint"
49+ ) as exc_info :
50+ manager .screenshot (SimpleNamespace ())
51+
52+ assert isinstance (exc_info .value .original_error , AttributeError )
53+
54+
55+ def test_async_computer_action_manager_wraps_missing_endpoint_attribute ():
56+ async def run () -> None :
57+ manager = AsyncComputerActionManager (_DummyClient ())
58+ with pytest .raises (
59+ HyperbrowserError , match = "session must include computer_action_endpoint"
60+ ) as exc_info :
61+ await manager .screenshot (SimpleNamespace ())
62+ assert isinstance (exc_info .value .original_error , AttributeError )
63+
64+ asyncio .run (run ())
65+
66+
4467def test_sync_computer_action_manager_rejects_string_subclass_session_ids ():
4568 class _SessionId (str ):
4669 pass
You can’t perform that action at this time.
0 commit comments