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()