issues/246/user_tool.py (66 lines of code) (raw):

import sys, os base_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) sys.path.insert(0, base_path) """ Test to verify that GL codes are saved for dependent tags """ import pytest import pytest_asyncio from playwright.async_api import async_playwright, expect, Page from utils.email_handler import EmailHandler NEW_DOT_URL = "https://dev.new.expensify.com:8082" EXPENSIFY_EMAIL = "testingq186+45771_1@gmail.com" EXPENSIFY_PASSWORD = "" TESTING_FLOW = True @pytest_asyncio.fixture async def page(): pw = await async_playwright().start() browser = await pw.chromium.launch( channel="chrome", headless=True, args=["--ignore-certificate-errors", "--disable-web-security", "--disable-features=IsolateOrigins,site-per-process"], proxy={"server": "http://localhost:8080"}, slow_mo=500 ) page = await browser.new_page() yield page await page.close() await browser.close() await pw.stop() async def sign_in_new_dot(page: Page, email: str, password: str): with EmailHandler(email, password) as email_handler: if not TESTING_FLOW: email_handler.clean_inbox() await page.get_by_test_id("username").fill(email) await page.get_by_role("button", name="Continue").click() await expect(page.get_by_test_id("validateCode")).to_be_visible() otp = email_handler.read_otp_code() if not TESTING_FLOW else "123456" await page.get_by_test_id("validateCode").fill(otp) @pytest.mark.asyncio async def test_saving_GL_code_for_dependent_tags(page: Page): trace_path = "/app/expensify/user_tool/output_browser1.zip" await page.context.tracing.start(screenshots=True, snapshots=True, sources=True) try: await page.goto(NEW_DOT_URL) await page.wait_for_load_state("load") await sign_in_new_dot(page, EXPENSIFY_EMAIL, EXPENSIFY_PASSWORD) await page.get_by_label("My settings").click() await page.get_by_test_id("InitialSettingsPage").get_by_label("Workspaces").get_by_text("Workspaces").click() await page.get_by_label("row").get_by_text(EXPENSIFY_EMAIL.split("@")[0], exact=True).click() try: await expect(page.get_by_label("Tags")).to_be_visible() except: await page.get_by_label("More features").click() await page.get_by_label("Classify costs and track").click() await page.get_by_label("Tags").click() await page.get_by_label("State").click() await page.locator("#California").click() await page.get_by_role("menuitem", name="GL code").click() await page.get_by_role("textbox", name="GL code").clear() await page.get_by_role("textbox", name="GL code").fill("This GL code should be visible") await page.get_by_role("button", name="Save").click() await expect(page.get_by_test_id("TagSettingsPage").get_by_text("This GL code should be visible")).to_be_visible() await page.get_by_role("menuitem", name="GL code").click() await page.get_by_role("textbox", name="GL code").clear() await page.get_by_role("button", name="Save").click() finally: await page.context.tracing.stop(path=trace_path) from utils.trace_cleaner import trace_cleaner trace_cleaner(trace_path)