From 733536e83e8cd918b67b042ec5009414bef00911 Mon Sep 17 00:00:00 2001 From: protokey Date: Thu, 10 Sep 2026 23:59:08 +0400 Subject: [PATCH] =?UTF-8?q?chore:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=83=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B4=D0=BE=D0=B6=D0=B4=D0=B0=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/engine/actions.py | 8 ++++++++ tests/test_main.http | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/src/engine/actions.py b/src/engine/actions.py index 8777d71..0b558d7 100644 --- a/src/engine/actions.py +++ b/src/engine/actions.py @@ -1,3 +1,5 @@ +import asyncio + from playwright.async_api import Page from engine.schemas import ActionRequest @@ -17,6 +19,12 @@ async def fill(page: Page, act: ActionRequest) -> str | None: await page.fill(act.selector, act.value) +@register +async def delay(page: Page, act: ActionRequest) -> str | None: + assert act.value + await asyncio.sleep(int(act.value)) + + @register async def mouse_move(page: Page, act: ActionRequest) -> str | None: assert act.selector diff --git a/tests/test_main.http b/tests/test_main.http index 7dcac39..7da78f1 100644 --- a/tests/test_main.http +++ b/tests/test_main.http @@ -69,3 +69,42 @@ Cookie: session_id=2f2100be-6ce7-40d5-bae5-61424b2504c8; Path=/; SameSite=lax } ### +POST http://127.0.0.1:8000/v1/solve +Accept: application/json +Content-Type: application/json +X-API-Key: +Cookie: session_id=2f2100be-6ce7-40d5-bae5-61424b2504c8; Path=/; SameSite=lax + + +{ + "url": "http://127.0.0.1:8001/", + "proxy": "-", + "actions": [ + {"type": "mouse_move", "selector": ".logout"}, + {"type": "delay", "value": "3"}, + {"type": "click", "selector": ".logout"}, + {"type": "wait_for", "selector": "#username", "timeout": 10} + ] +} + +### +POST http://127.0.0.1:8000/v1/solve +Accept: application/json +Content-Type: application/json +X-API-Key: +Cookie: session_id=2f2100be-6ce7-40d5-bae5-61424b2504c8; Path=/; SameSite=lax + + +{ + "url": "http://127.0.0.1:8001/", + "proxy": "-", + "actions": [ + {"type": "mouse_move", "selector": ".menu-trigger"}, + {"type": "delay", "value": "2"}, + {"type": "click", "selector": "div.menu-item:nth-child(3)"}, + {"type": "mouse_move", "selector": ".logout"}, + {"type": "delay", "value": "10"} + ] +} + +###