Skip to content

Commit

Permalink
kiosk printing (#1034)
Browse files Browse the repository at this point in the history
  • Loading branch information
LawyZheng authored Oct 23, 2024
1 parent fed24b4 commit 3f1a9b3
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 39 deletions.
14 changes: 1 addition & 13 deletions skyvern/webeye/actions/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
WebAction,
)
from skyvern.webeye.actions.responses import ActionAbort, ActionFailure, ActionResult, ActionSuccess
from skyvern.webeye.browser_factory import BrowserState, get_download_dir
from skyvern.webeye.browser_factory import BrowserState
from skyvern.webeye.scraper.scraper import (
CleanupElementTreeFunc,
ElementTreeFormat,
Expand Down Expand Up @@ -386,19 +386,7 @@ async def handle_click_to_download_file_action(

try:
await locator.click(timeout=SettingsManager.get_settings().BROWSER_ACTION_TIMEOUT_MS)

await page.wait_for_load_state(timeout=SettingsManager.get_settings().BROWSER_LOADING_TIMEOUT_MS)
# TODO: shall we back to the previous page ?
if await SkyvernFrame.get_print_triggered(page):
path = f"{get_download_dir(task.workflow_run_id, task.task_id)}/{uuid.uuid4()}"
LOG.warning(
"Trying to download the printed PDF",
path=path,
action=action,
)
await page.pdf(format="A4", display_header_footer=True, path=path)
await SkyvernFrame.reset_print_triggered(page)

except Exception as e:
LOG.exception("ClickAction with download failed", action=action, exc_info=True)
return [ActionFailure(e, download_triggered=False)]
Expand Down
1 change: 1 addition & 0 deletions skyvern/webeye/browser_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ def build_browser_args() -> dict[str, Any]:
"--disable-blink-features=AutomationControlled",
"--disk-cache-size=1",
"--start-maximized",
"--kiosk-printing",
],
"ignore_default_args": [
"--enable-automation",
Expand Down
26 changes: 0 additions & 26 deletions skyvern/webeye/utils/page.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,6 @@ def load_js_script() -> str:
raise e


DISABLE_PRINTER_WITH_FLAG = """
(function() {
const originalPrint = window.print;
window.print = function() {
window.__printTriggered = true;
};
window.__printTriggered = false;
})();
"""

JS_FUNCTION_DEFS = load_js_script()


Expand Down Expand Up @@ -128,22 +118,6 @@ async def take_split_screenshots(

return screenshots

@staticmethod
async def get_print_triggered(page: Page) -> bool:
"""
Get print triggered on the page. Only Page instance could be printed as PDF.
"""
# the flag was injected in the "window" object from the "add_init_script" when the BrowserContext initialized.
return await page.evaluate("window.__printTriggered")

@staticmethod
async def reset_print_triggered(page: Page) -> bool:
"""
Get print triggered on the page. Only Page instance could be printed as PDF.
"""
# the flag was injected in the "window" object from the "add_init_script" when the BrowserContext initialized.
return await page.evaluate("() => window.__printTriggered = false")

@classmethod
async def create_instance(cls, frame: Page | Frame) -> SkyvernFrame:
instance = cls(frame=frame)
Expand Down

0 comments on commit 3f1a9b3

Please sign in to comment.