issues/8/user_tool.py (59 lines of code) (raw):
import pytest
from playwright.async_api import Page, expect
from utils.login import NEW_DOT_URL, sign_in
from utils.browser import close_browser, start_browser
from utils.trace_cleaner import trace_cleaner
STATIC_PREFIX = 55073
EXPENSIFY_USERNAME_FIRSTNAME = "osaidtest"
EXPENSIFY_USERNAME_LASTNAME = "testaccount"
EXPENSIFY_USERNAME = f"{EXPENSIFY_USERNAME_FIRSTNAME} {EXPENSIFY_USERNAME_LASTNAME}"
EXPENSIFY_EMAIL_USERNAME = "osaidtest5"
EXPENSIFY_EMAIL = f"osaidtest5+{STATIC_PREFIX}@gmail.com"
EXPENSIFY_PASSWORD = "ntvd acej mmaa qqmd"
DATA_DIR = "browser_context"
WORKSPACE_NAME = "workspace_1"
SLOW_MO = 1000
NORMAL_RUN = False
PROXY_SETTINGS = {"server": "http://localhost:8080"}
async def sign_in_recorded(page: Page, email: str):
await page.get_by_test_id("username").fill(email)
await page.get_by_role("button", name="Continue").click()
await page.get_by_test_id("validateCode").fill("123456")
@pytest.mark.asyncio
async def test_41157():
context, page, playwright = await start_browser(
persistent=False,
data_dir=DATA_DIR,
headless=False,
slow_mo=SLOW_MO,
launch_args=[
"--ignore-certificate-errors",
"--disable-web-security",
"--disable-features=IsolateOrigins,site-per-process",
],
proxy=PROXY_SETTINGS
)
# Start tracing
await context.tracing.start(screenshots=True, snapshots=True, sources=True)
try:
# Step 1: Sign in
if NORMAL_RUN:
# Normal test run
await sign_in(page, EXPENSIFY_EMAIL, password=EXPENSIFY_PASSWORD)
else:
# Recorded Test Run.
await page.goto(NEW_DOT_URL)
await sign_in_recorded(page=page, email=EXPENSIFY_EMAIL)
# Go to the workspace settings.
await page.get_by_role("button", name="My settings").click()
await page.get_by_role("menuitem", name="Workspaces").click()
await page.get_by_test_id("WorkspacesListPage").get_by_role(
"button", name="row"
).filter(has=page.get_by_text(WORKSPACE_NAME)).click()
await page.get_by_role('menuitem', name='Workflows').click()
await page.get_by_text("Connect bank account").click()
await page.get_by_role("menuitem", name="State").click()
await page.get_by_test_id("selection-list-text-input").fill("randominput")
await page.get_by_test_id("PushRowModal").get_by_label("Back").click()
await page.get_by_role("menuitem", name="State").click()
await expect(page.get_by_test_id("selection-list-text-input")).not_to_have_value('randominput')
finally:
# Stop tracing and export the trace file
trace_path = "/app/expensify/user_tool/output_browser1.zip"
await context.tracing.stop(path=trace_path)
trace_cleaner(trace_path)
# Close the browser
await close_browser(context, page, playwright)