def test()

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


def test(setup_playwright):
    page_submitter, page_approver_2 = setup_playwright


    context_user1 = page_submitter.context
    context_user2 = page_approver_2.context
    context_user1.tracing.start(title="trace_user1", screenshots=True, snapshots=True, sources=True)
    context_user2.tracing.start(title="trace_user2", screenshots=True, snapshots=True, sources=True)

    try:
        email_submitter, name_submitter = EMAIL_SUBMITTER, NAME_SUBMITTER
        email_approver_1, name_approver_1 = EMAIL_APPROVER_1, NAME_APPROVER_1
        email_approver_2, name_approver_2 = EMAIL_APPROVER_2, NAME_APPROVER_2

        login_user(page_submitter, email_submitter)
        login_user(page_approver_2, email_approver_2)

        complete_onboarding(page_submitter, name_submitter)
        complete_onboarding(page_approver_2, name_approver_2)


        workspace_name = f"{name_submitter}'s Workspace"
        page_submitter.locator('button[aria-label="Workspaces"]').click()
        (
            page_submitter.get_by_test_id("WorkspaceSwitcherPage")
            .get_by_role("button", name="New workspace")
            .click()
        )

        invite_workspace_member(page_submitter, email_approver_1, name_approver_1)
        invite_workspace_member(page_submitter, email_approver_2, name_approver_2)


        page_submitter.locator('div[aria-label="More features"]').click()
        workflows_toggle = page_submitter.locator('button[aria-label="Configure how spend is approved and paid."][role="switch"]')
        if workflows_toggle.get_attribute('aria-checked') == "false":
            workflows_toggle.click()


        page_submitter.locator('div[aria-label="Workflows"]').click()
        approval_toggle = page_submitter.locator('button[aria-label="Require additional approval before authorizing a payment."][role="switch"]')
        if approval_toggle.get_attribute('aria-checked') == "false":
            approval_toggle.click()


        page_submitter.locator('button[aria-label="Add approvals"]').click()
        page_submitter.locator(
            'div[data-tag="pressable"]', has_text="Additional Approver"
        ).click()


        page_submitter.locator("button", has_text="Upgrade").click()
        page_submitter.locator("button", has_text="Got it, thanks").click()


        page_submitter.locator(
            f'div[aria-label="{name_submitter}"]', has_text="Approver"
        ).first.click()
        page_submitter.locator(f'button[aria-label="{name_approver_1}"]').last.click()
        page_submitter.locator(
            'button[data-listener="Enter"]', has_text="Save"
        ).last.click()

        page_submitter.locator(
            'div[data-tag="pressable"]', has_text="Additional Approver"
        ).first.click()
        page_submitter.locator(f'button[aria-label="{name_approver_2}"]').last.click()
        page_submitter.locator(
            'button[data-listener="Enter"]', has_text="Save"
        ).last.click()

        page_submitter.locator(
            'button[data-listener="Enter"]', has_text="Save"
        ).last.click()
        page_submitter.locator('button[aria-label="Back"]').nth(0).click()
        page_submitter.locator('button[aria-label="Back"]').nth(0).click()


        browse_to_workspace(page_submitter, workspace_name)
        browse_to_chat(page_submitter, workspace_name)
        submit_manual_expense(page_submitter, 10, "abc")


        page_approver_2.wait_for_timeout(2000)
        page_approver_2.goto("https://dev.new.expensify.com:8082/settings/workspaces")
        page_approver_2.get_by_label("Inbox").click()

        browse_to_workspace(page_approver_2, workspace_name)
        browse_to_chat(page_approver_2, f"{workspace_name} owes")
        expense_text = page_approver_2.locator(
            'button[aria-label="View details"]'
        ).last.inner_text()

        assert "Submit" not in expense_text

    finally:

        context_user1.tracing.stop(path="/app/expensify/user_tool/output_browser1.zip")
        trace_cleaner("/app/expensify/user_tool/output_browser1.zip")
        context_user2.tracing.stop(path="/app/expensify/user_tool/output_browser2.zip")
        trace_cleaner("/app/expensify/user_tool/output_browser2.zip")