Skyvern/tests/sdk/python_sdk/test_sdk_run_tasks.py
Stanislav Novosad 72b9fe960f
Some checks failed
Run tests and pre-commit / Run tests and pre-commit hooks (push) Waiting to run
Run tests and pre-commit / Frontend Lint and Build (push) Waiting to run
Publish Fern Docs / run (push) Waiting to run
Build Skyvern SDK and publish to PyPI / check-version-change (push) Has been cancelled
Build Skyvern SDK and publish to PyPI / run-ci (push) Has been cancelled
Build Skyvern SDK and publish to PyPI / build-sdk (push) Has been cancelled
Add manual SDK tests (#4555)
2026-01-26 15:43:53 -07:00

74 lines
2.4 KiB
Python

import asyncio
import pytest
from skyvern.forge.sdk.schemas.credentials import NonEmptyPasswordCredential, TotpType
from skyvern.schemas.run_blocks import CredentialType
@pytest.mark.asyncio
async def test_login(web_server, skyvern_browser):
page = await skyvern_browser.get_working_page()
await page.goto(f"{web_server}/login.html")
credentials = await skyvern_browser.skyvern.get_credentials()
credential = next((item for item in credentials if item.name == "test_login"), None)
if credential is None:
print("Credentials not found. Creating new one.")
credential = await skyvern_browser.skyvern.create_credential(
name="test_login",
credential_type="password",
credential=NonEmptyPasswordCredential(
username="testlogin",
password="testpassword",
totp=None,
totp_type=TotpType.NONE,
),
)
await page.agent.login(
credential_type=CredentialType.skyvern,
credential_id=credential.credential_id,
)
await page.click("#accountBtn")
await asyncio.sleep(1)
await page.act("Click on 'Click Me' button")
assert await page.locator("#clickCounter").text_content() == "Button clicked 1 times"
await asyncio.sleep(1)
await page.screenshot(path="screenshot.png", full_page=True)
@pytest.mark.asyncio
async def test_test_finishes_login(web_server, skyvern_browser):
page = await skyvern_browser.get_working_page()
await page.goto("https://www.saucedemo.com/")
await page.fill("#user-name", "standard_user")
await page.fill("#password", "secret_sauce")
await page.agent.run_task("Click on login button", engine="skyvern-1.0")
assert await page.get_by_role("button", name="Add to cart").count() > 0
@pytest.mark.asyncio
async def test_download_file(web_server, skyvern_browser):
page = await skyvern_browser.get_working_page()
await page.goto(f"{web_server}/download_file.html")
r = await page.agent.download_files(
prompt="Click the 'Download PDF Report' button to download the sample PDF file",
download_suffix="sample_report.pdf",
)
for downloaded_file in r.downloaded_files:
print(downloaded_file)
assert len(r.downloaded_files) == 1
await asyncio.sleep(2)
await page.screenshot(path="download_test.png", full_page=True)
assert len(r.downloaded_files) == 1