mirror of
https://github.com/Skyvern-AI/skyvern.git
synced 2026-04-28 03:30:10 +00:00
72 lines
2.8 KiB
Python
72 lines
2.8 KiB
Python
"""Tests for scroll_to_top and scroll_to_next_page None-guard in SkyvernFrame."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from unittest.mock import AsyncMock, patch
|
|
|
|
import pytest
|
|
|
|
from skyvern.webeye.utils.page import SkyvernFrame
|
|
|
|
|
|
@pytest.fixture
|
|
def skyvern_frame() -> SkyvernFrame:
|
|
"""Create a SkyvernFrame with a mock frame."""
|
|
frame = AsyncMock()
|
|
sf = SkyvernFrame.__new__(SkyvernFrame)
|
|
sf.frame = frame
|
|
return sf
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_scroll_to_top_returns_float(skyvern_frame: SkyvernFrame) -> None:
|
|
with patch.object(SkyvernFrame, "evaluate", new_callable=AsyncMock, return_value=123.45):
|
|
result = await skyvern_frame.scroll_to_top(draw_boxes=False, frame="", frame_index=0)
|
|
assert result == 123.45
|
|
assert isinstance(result, float)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_scroll_to_top_returns_float_from_int(skyvern_frame: SkyvernFrame) -> None:
|
|
with patch.object(SkyvernFrame, "evaluate", new_callable=AsyncMock, return_value=0):
|
|
result = await skyvern_frame.scroll_to_top(draw_boxes=False, frame="", frame_index=0)
|
|
assert result == 0.0
|
|
assert isinstance(result, float)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_scroll_to_top_none_returns_zero(skyvern_frame: SkyvernFrame) -> None:
|
|
with patch.object(SkyvernFrame, "evaluate", new_callable=AsyncMock, return_value=None):
|
|
result = await skyvern_frame.scroll_to_top(draw_boxes=False, frame="", frame_index=0)
|
|
assert result == 0.0
|
|
assert isinstance(result, float)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_scroll_to_top_string_returns_zero(skyvern_frame: SkyvernFrame) -> None:
|
|
with patch.object(SkyvernFrame, "evaluate", new_callable=AsyncMock, return_value="bad"):
|
|
result = await skyvern_frame.scroll_to_top(draw_boxes=False, frame="", frame_index=0)
|
|
assert result == 0.0
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_scroll_to_next_page_returns_float(skyvern_frame: SkyvernFrame) -> None:
|
|
with patch.object(SkyvernFrame, "evaluate", new_callable=AsyncMock, return_value=500.0):
|
|
result = await skyvern_frame.scroll_to_next_page(draw_boxes=False, frame="", frame_index=0)
|
|
assert result == 500.0
|
|
assert isinstance(result, float)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_scroll_to_next_page_none_returns_zero(skyvern_frame: SkyvernFrame) -> None:
|
|
with patch.object(SkyvernFrame, "evaluate", new_callable=AsyncMock, return_value=None):
|
|
result = await skyvern_frame.scroll_to_next_page(draw_boxes=False, frame="", frame_index=0)
|
|
assert result == 0.0
|
|
assert isinstance(result, float)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_scroll_to_next_page_string_returns_zero(skyvern_frame: SkyvernFrame) -> None:
|
|
with patch.object(SkyvernFrame, "evaluate", new_callable=AsyncMock, return_value="bad"):
|
|
result = await skyvern_frame.scroll_to_next_page(draw_boxes=False, frame="", frame_index=0)
|
|
assert result == 0.0
|