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