mirror of
https://github.com/Skyvern-AI/skyvern.git
synced 2026-05-04 22:50:23 +00:00
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
74 lines
2.4 KiB
Python
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
|