Script run - take screenshot for the workflow run block (#3437)

This commit is contained in:
Shuchang Zheng
2025-09-14 23:43:10 -07:00
committed by GitHub
parent 41cab31fcc
commit 6f212ff327

View File

@@ -27,6 +27,7 @@ from skyvern.forge.sdk.core import skyvern_context
from skyvern.forge.sdk.models import Step, StepStatus
from skyvern.forge.sdk.schemas.files import FileInfo
from skyvern.forge.sdk.schemas.tasks import Task, TaskOutput, TaskStatus
from skyvern.forge.sdk.schemas.workflow_runs import WorkflowRunBlock
from skyvern.forge.sdk.workflow.models.block import (
CodeBlock,
FileParserBlock,
@@ -271,6 +272,33 @@ async def execute_script(
LOG.info("Script executed successfully", script_id=script_id)
async def _take_workflow_run_block_screenshot(
workflow_run_id: str,
organization_id: str,
workflow_run_block: WorkflowRunBlock,
) -> None:
"""
This function is a copy of the block screenshot logic from the execute_safe function in the block.py file.
"""
browser_state = app.BROWSER_MANAGER.get_for_workflow_run(workflow_run_id)
if not browser_state:
LOG.warning("No browser state found when creating workflow_run_block", workflow_run_id=workflow_run_id)
else:
screenshot = await browser_state.take_fullpage_screenshot(
use_playwright_fullpage=app.EXPERIMENTATION_PROVIDER.is_feature_enabled_cached(
"ENABLE_PLAYWRIGHT_FULLPAGE",
workflow_run_id,
properties={"organization_id": str(organization_id)},
)
)
if screenshot:
await app.ARTIFACT_MANAGER.create_workflow_run_block_artifact(
workflow_run_block=workflow_run_block,
artifact_type=ArtifactType.SCREENSHOT_LLM,
data=screenshot,
)
async def _create_workflow_block_run_and_task(
block_type: BlockType,
prompt: str | None = None,
@@ -343,6 +371,12 @@ async def _create_workflow_block_run_and_task(
organization_id=organization_id,
)
await _take_workflow_run_block_screenshot(
workflow_run_id=workflow_run_id,
organization_id=organization_id,
workflow_run_block=workflow_run_block,
)
context.step_id = step_id
context.task_id = task_id