Add persist_browser_session flag to workflows (#777)

This commit is contained in:
Kerem Yilmaz
2024-09-06 12:01:56 -07:00
committed by GitHub
parent be1c8ba060
commit 95b2e53c46
14 changed files with 139 additions and 1 deletions

View File

@@ -22,6 +22,7 @@ from skyvern.exceptions import (
UnknownBrowserType,
UnknownErrorWhileCreatingBrowserContext,
)
from skyvern.forge import app
from skyvern.forge.sdk.core.skyvern_context import current
from skyvern.forge.sdk.schemas.tasks import ProxyLocation
from skyvern.forge.sdk.settings_manager import SettingsManager
@@ -89,11 +90,13 @@ class BrowserContextFactory:
video_artifacts: list[VideoArtifact] | None = None,
har_path: str | None = None,
traces_dir: str | None = None,
browser_session_dir: str | None = None,
) -> BrowserArtifacts:
return BrowserArtifacts(
video_artifacts=video_artifacts or [],
har_path=har_path,
traces_dir=traces_dir,
browser_session_dir=browser_session_dir,
)
@classmethod
@@ -137,6 +140,7 @@ class BrowserArtifacts(BaseModel):
video_artifacts: list[VideoArtifact] = []
har_path: str | None = None
traces_dir: str | None = None
browser_session_dir: str | None = None
async def _create_headless_chromium(
@@ -386,3 +390,9 @@ class BrowserState:
async def take_screenshot(self, full_page: bool = False, file_path: str | None = None) -> bytes:
page = await self.__assert_page()
return await SkyvernFrame.take_screenshot(page=page, full_page=full_page, file_path=file_path)
async def store_browser_session(self, organization_id: str, workflow_permanent_id: str) -> None:
if self.browser_artifacts.browser_session_dir:
await app.STORAGE.store_browser_session(
organization_id, workflow_permanent_id, self.browser_artifacts.browser_session_dir
)