issues/150/user_tool.py (50 lines of code) (raw):
import re
from playwright.sync_api import Playwright, sync_playwright, expect
import time
from utils.trace_cleaner import trace_cleaner
def get_mail_addr():
timestamp = int(time.time())
return f"aliceoglualicee+{timestamp}@gmail.com"
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False, args=[
'--ignore-certificate-errors',
'--disable-web-security',
'--disable-features=IsolateOrigins,site-per-process',
])
context = browser.new_context(ignore_https_errors=True)
# Start tracing
context.tracing.start(screenshots=True, snapshots=True, sources=True)
page = context.new_page()
try:
page.goto("https://dev.new.expensify.com:8082/")
# Step 1: Log in
user_mail = "aliceoglualicee+1739544967@gmail.com"
page.get_by_test_id("username").click()
page.get_by_test_id("username").fill(user_mail)
page.get_by_role("button", name="Continue").click()
page.get_by_role("button", name="Join").click()
page.wait_for_timeout(1000)
# Step 2: Enter user information
page.get_by_text("Track and budget expenses").click()
page.get_by_role("textbox", name="First name").fill("ali")
page.get_by_role("textbox", name="First name").press("Tab")
page.get_by_role("textbox", name="Last name").fill("veli")
page.get_by_role("button", name="Continue").click()
page.wait_for_timeout(1000)
# Step 3: Create WS
page.get_by_label("My settings").click()
page.get_by_test_id("InitialSettingsPage").get_by_label("Workspaces").get_by_text("Workspaces").click()
page.get_by_label("New workspace").nth(1).click()
page.wait_for_timeout(1000)
# Step 4: Enable workflow
page.get_by_text("More features").click()
page.get_by_label("Configure how spend is").click()
page.get_by_test_id("WorkspaceInitialPage").get_by_text("Workflows").click()
page.wait_for_timeout(1000)
# Step 5: Click connect bank account
page.get_by_text("Connect bank account").click()
page.wait_for_timeout(1000)
# Step 6: Verify the app is not crashed
locator = page.locator('div[dir="auto"]', has_text="Uh-oh, something went wrong!")
expect(locator).not_to_be_visible()
finally:
# Stop tracing, export trace file and clean it
context.tracing.stop(path="/app/expensify/user_tool/output_browser1.zip")
trace_cleaner("/app/expensify/user_tool/output_browser1.zip")
context.close()
browser.close()
def test_51961():
with sync_playwright() as playwright:
run(playwright)