Skip to content

Commit 491ca1a

Browse files
Use HyperbrowserError in computer action endpoint checks
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent c263e64 commit 491ca1a

3 files changed

Lines changed: 49 additions & 2 deletions

File tree

hyperbrowser/client/managers/async_manager/computer_action.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from pydantic import BaseModel
22
from typing import Union, List, Optional
3+
from hyperbrowser.exceptions import HyperbrowserError
34
from hyperbrowser.models import (
45
SessionDetail,
56
ComputerActionParams,
@@ -32,7 +33,9 @@ async def _execute_request(
3233
session = await self._client.sessions.get(session)
3334

3435
if not session.computer_action_endpoint:
35-
raise ValueError("Computer action endpoint not available for this session")
36+
raise HyperbrowserError(
37+
"Computer action endpoint not available for this session"
38+
)
3639

3740
if isinstance(params, BaseModel):
3841
payload = params.model_dump(by_alias=True, exclude_none=True)

hyperbrowser/client/managers/sync_manager/computer_action.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from pydantic import BaseModel
22
from typing import Union, List, Optional
3+
from hyperbrowser.exceptions import HyperbrowserError
34
from hyperbrowser.models import (
45
SessionDetail,
56
ComputerActionParams,
@@ -32,7 +33,9 @@ def _execute_request(
3233
session = self._client.sessions.get(session)
3334

3435
if not session.computer_action_endpoint:
35-
raise ValueError("Computer action endpoint not available for this session")
36+
raise HyperbrowserError(
37+
"Computer action endpoint not available for this session"
38+
)
3639

3740
if isinstance(params, BaseModel):
3841
payload = params.model_dump(by_alias=True, exclude_none=True)
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import asyncio
2+
from types import SimpleNamespace
3+
4+
import pytest
5+
6+
from hyperbrowser.client.managers.async_manager.computer_action import (
7+
ComputerActionManager as AsyncComputerActionManager,
8+
)
9+
from hyperbrowser.client.managers.sync_manager.computer_action import (
10+
ComputerActionManager as SyncComputerActionManager,
11+
)
12+
from hyperbrowser.exceptions import HyperbrowserError
13+
14+
15+
class _DummyClient:
16+
def __init__(self) -> None:
17+
self.sessions = None
18+
self.transport = None
19+
20+
21+
def test_sync_computer_action_manager_raises_hyperbrowser_error_without_endpoint():
22+
manager = SyncComputerActionManager(_DummyClient())
23+
session = SimpleNamespace(computer_action_endpoint=None)
24+
25+
with pytest.raises(
26+
HyperbrowserError, match="Computer action endpoint not available"
27+
):
28+
manager.screenshot(session)
29+
30+
31+
def test_async_computer_action_manager_raises_hyperbrowser_error_without_endpoint():
32+
async def run() -> None:
33+
manager = AsyncComputerActionManager(_DummyClient())
34+
session = SimpleNamespace(computer_action_endpoint=None)
35+
36+
with pytest.raises(
37+
HyperbrowserError, match="Computer action endpoint not available"
38+
):
39+
await manager.screenshot(session)
40+
41+
asyncio.run(run())

0 commit comments

Comments
 (0)