issues/169/user_tool.py (54 lines of code) (raw):
import re
from playwright.sync_api import sync_playwright, expect
from utils.trace_cleaner import trace_cleaner
def launch_browser(playwright):
browser = playwright.chromium.launch(
channel="chrome",
headless=False,
slow_mo=500,
proxy={"server": "http://localhost:8080"},
args=[
"--ignore-certificate-errors",
"--disable-web-security",
"--disable-features=IsolateOrigins,site-per-process"
]
)
context = browser.new_context(timezone_id="Asia/Karachi")
context.tracing.start(screenshots=True, snapshots=True, sources=True)
page = context.new_page()
return browser, page
def login_user(page, first_name="Test", last_name="User"):
page.goto("https://dev.new.expensify.com:8082/")
user_email = "freelancer.test.exp+1739715118@gmail.com"
page.get_by_test_id("username").fill(user_email)
page.get_by_role("button", name="Continue").click()
page.get_by_role("button", name="Join").click()
page.get_by_text("Track and budget expenses").click()
page.get_by_role("button", name="Continue").click()
page.get_by_role("textbox", name="First name").fill(first_name)
page.get_by_role("textbox", name="Last name").fill(last_name)
page.get_by_role("form").get_by_role("button", name="Continue").click()
def test_example():
with sync_playwright() as playwright:
browser, page = launch_browser(playwright)
try:
login_user(page)
tracking_header = re.compile("Tracking .+")
page.get_by_test_id("lhn-options-list").get_by_text("Test User (you)").first.click()
page.get_by_role("button", name="Create").click()
page.get_by_label("Track expense").click()
page.get_by_label("Manual").click()
page.get_by_placeholder("0").fill("100")
page.locator("#numPadContainerView").get_by_role("button", name="Next").click()
page.get_by_role("button", name="Track expense").click()
page.get_by_text("Cash").click()
page.get_by_label(tracking_header).first.click()
expect(page.get_by_label("Submit it to someone")).to_be_visible()
expect(page.get_by_label("Categorize it")).to_be_visible()
expect(page.get_by_label("Share it with my accountant")).to_be_visible()
finally:
page.context.tracing.stop(path="/app/expensify/user_tool/output_browser1.zip")
trace_cleaner("/app/expensify/user_tool/output_browser1.zip")
browser.close()
if __name__ == "__main__":
test_example()