merge: resolve conflict with main (read_item refactor #393)

This commit is contained in:
ThePhaseless
2026-08-11 11:30:23 +02:00
5 changed files with 125 additions and 85 deletions
+7 -2
View File
@@ -1,3 +1,4 @@
import base64
from http import HTTPStatus
from json import JSONDecodeError
from unittest.mock import AsyncMock, MagicMock
@@ -111,7 +112,6 @@ def test_pdf_handling():
if solution.get("contentType") != "application/pdf":
pytest.skip("Skipping PDF test - PDF bytes could not be fetched (upstream issue)")
assert solution["response"] # non-empty base64
import base64
decoded = base64.b64decode(solution["response"])
assert decoded[:5] == b"%PDF-"
@@ -146,6 +146,9 @@ def fake_dep(*, fail_states: set[str] | None = None) -> BrowserDepClass:
page.title.return_value = "Login"
page.evaluate.return_value = "UnitTestBrowser/1.0"
page.content.return_value = "<html><title>Login</title></html>"
locator = MagicMock()
locator.count = AsyncMock(return_value=0)
page.locator = MagicMock(return_value=locator)
def wait_for_load_state(state: str, **_kwargs: object) -> None:
"""Fail the wait when asked for a configured state."""
@@ -163,14 +166,16 @@ def fake_dep(*, fail_states: set[str] | None = None) -> BrowserDepClass:
@pytest.mark.asyncio
async def test_networkidle_timeout_after_domcontentloaded_returns_content():
"""Pages that never go idle after DOM load must still return their content."""
dep = fake_dep(fail_states={"networkidle"})
response = await read_item(
LinkRequest(url="https://example.test/login"),
fake_dep(fail_states={"networkidle"}),
dep,
)
assert response.status == "ok"
assert response.solution.status == HTTPStatus.OK
assert response.solution.response == "<html><title>Login</title></html>"
dep.solver.solve_captcha.assert_not_called()
@pytest.mark.asyncio