issues/215/user_tool.py (104 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) import time from playwright.sync_api import sync_playwright, expect import time from utils.trace_cleaner import trace_cleaner static_email = "totherandomuser+40121580@gmail.com" def login(p, if_phone=False, first_name="John", last_name="Cena"): browser = p.chromium.launch(headless=True, slow_mo=1000, args=["--disable-web-security", "--disable-features=IsolateOrigins,site-per-process"]) if if_phone: phone = p.devices['iPhone 12 Pro'] context = browser.new_context(**phone) else: context = browser.new_context() page = context.new_page() page.goto('https://dev.new.expensify.com:8082/') phone_or_email_input = page.locator('input[type="email"]') expect(phone_or_email_input).to_be_visible() phone_or_email_input.fill(static_email) page.get_by_role("button", name="Continue").click() page.get_by_role("button", name="Join").click() page.get_by_role("button", name="Join").wait_for(state="hidden") expect(page.locator("text=What do you want to do today?")).to_be_visible(timeout=50000) try: page.locator("text='Track and budget expenses'").click() page.wait_for_timeout(1000) first_name_input = page.locator('input[name="fname"]') expect(first_name_input).to_be_visible() first_name_input.fill(first_name) first_name_input = page.locator('input[name="lname"]') expect(first_name_input).to_be_visible() first_name_input.fill(last_name) continue_button = page.locator('button[data-tag="pressable"][tabindex="0"]', has_text="Continue") expect(continue_button).to_be_visible() continue_button.click() except: pass return browser, page def test(): with sync_playwright() as p: browser, page = login(p, True) context = page.context context.tracing.start(screenshots=True, snapshots=True) try: page.get_by_label("Back").last.click() page.get_by_label("Close").last.click() plus_icon = page.locator('button[aria-label="Start chat (Floating action)"]') expect(plus_icon).to_be_visible() plus_icon.click() new_workspace_button = page.locator('div[aria-label="New workspace"]') expect(new_workspace_button).to_be_visible() new_workspace_button.click() page.get_by_text("Members").click() page.get_by_role("button", name="Invite member").click() page.get_by_test_id("selection-list-text-input").click() page.get_by_test_id("selection-list-text-input").fill("totherandomuser@gmail.com") page.wait_for_timeout(2000) page.get_by_text("totherandomuser@gmail.com").last.click() page.get_by_role("button", name="Next").click() page.get_by_test_id("WorkspaceInviteMessagePage").get_by_role("button", name="Invite").click() page.get_by_test_id("WorkspaceMembersPage").get_by_label("Back").last.click() page.get_by_label("Back").last.click() page.wait_for_timeout(1000) page.get_by_label("Back").last.click() page.wait_for_timeout(1000) page.get_by_label("Inbox").click() page.wait_for_timeout(1000) user_chat = page.locator('button[aria-label="Navigates to a chat"]', has_text="Deepak Dhaka").last expect(user_chat).to_be_visible(timeout=5000) user_chat.click() page.get_by_label("Create").click() page.get_by_text("Assign task").click() page.get_by_role("textbox", name="Title").click() page.get_by_role("textbox", name="Title").fill("task1") page.wait_for_timeout(1000) page.get_by_role("button", name="Next").click() page.get_by_role("button", name="Confirm task").click() page.wait_for_timeout(1000) page.get_by_role("button", name="Task").last.click() page.wait_for_timeout(1000) task_container = page.locator('div[data-testid="DisplayNamesWithTooltip"]', has_text="task1") expect(task_container).to_be_visible(timeout=5000) task_container.click() page.locator('[data-selection-scrapper-hidden-element="false"]', has_text="Delete").click() page.locator('button[data-tag="pressable"]', has_text="Delete").click() delete_detected = False count_f = 0 for _ in range(50): # Try up to 50 times count = page.locator('[data-testid="DisplayNamesWithTooltip"]', has_text="[Deleted task]").count() if count > 0: print(f"Detected '[Deleted task]' {count} time(s) in page content!") count_f += count delete_detected = True page.wait_for_timeout(10) if not delete_detected: print("Delete text was not detected after retries.") assert count_f == 0, "[Deleted task] text has been found, It should not be there ideally!!" except Exception as e: print("Test failed with exception:", e) raise finally: context.tracing.stop(path="/app/expensify/user_tool/output_browser1.zip") trace_cleaner("/app/expensify/user_tool/output_browser1.zip")