def test_expenses_members_list()

in issues/267/user_tool.py [0:0]


def test_expenses_members_list():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=True, args=["--disable-web-security", "--disable-features=IsolateOrigins,site-per-process"], slow_mo=500)
        context1 = None
        context2 = None
        try:
            # Create first context and start tracing
            context1 = browser.new_context()
            context1.tracing.start(screenshots=True, snapshots=True, sources=True)
            page1 = context1.new_page()

            login_user(email_username=EMAIL_USERNAME1, page=page1)
            submit_expense(page1, EMAIL_USERNAME2)

            # Continue with second context
            context2 = browser.new_context()
            context2.tracing.start(screenshots=True, snapshots=True, sources=True)
            page2 = context2.new_page()
            login_user(email_username=EMAIL_USERNAME2, page=page2)

            page2.get_by_label("Start chat (Floating action)").click()
            page2.get_by_label("Start chat", exact=True).click()
            page2.get_by_test_id("selection-list-text-input").click()
            page2.get_by_test_id("selection-list-text-input").fill(EMAIL_USERNAME1)
            page2.get_by_test_id("NewChatPage").get_by_label("Test 1").click()
            page2.get_by_role("textbox").click()
            page2.get_by_role("textbox").fill("hi")
            page2.keyboard.press("Enter")
            submit_expense(page2, EMAIL_USERNAME1)
            page2.wait_for_timeout(3000)

            page2.get_by_text("Test2 owes").first.click()
            try:
                page2.get_by_label("Test2 owes").first.click()
            except Exception:
                page2.get_by_text("Test2 owes").nth(1).click()
            page2.get_by_label("Members").click()
            page2.wait_for_timeout(2000)

            first_user_div = page2.locator(f'button[aria-label*="Test"]:has(div:has-text("{EMAIL_USERNAME1}"))')
            second_user_div = page2.locator(f'button[aria-label*="Test2"]:has(div:has-text("{EMAIL_USERNAME2}"))')
            first_user_div_count = first_user_div.count()
            second_user_div_count = second_user_div.count()

            assert first_user_div_count == 1, f"First user div count is {first_user_div_count}"
            assert second_user_div_count == 1, f"Second user div count is {second_user_div_count}"

        finally:
            # Export tracing and clean up for context1
            if context1 is not None:
                trace_path1 = "/app/expensify/user_tool/output_browser1.zip"
                try:
                    context1.tracing.stop(path=trace_path1)
                except Exception as e:
                    print(f"Error stopping tracing for context1: {e}")
                try:
                    trace_cleaner(trace_path1)
                except Exception as e:
                    print(f"Error cleaning trace for context1: {e}")
                try:
                    context1.close()
                except Exception as e:
                    print(f"Error closing context1: {e}")
            
            # Export tracing and clean up for context2
            if context2 is not None:
                trace_path2 = "/app/expensify/user_tool/output_browser2.zip"
                try:
                    context2.tracing.stop(path=trace_path2)
                except Exception as e:
                    print(f"Error stopping tracing for context2: {e}")
                try:
                    trace_cleaner(trace_path2)
                except Exception as e:
                    print(f"Error cleaning trace for context2: {e}")
                try:
                    context2.close()
                except Exception as e:
                    print(f"Error closing context2: {e}")
            try:
                browser.close()
            except Exception as e:
                print(f"Error closing browser: {e}")