in issues/94/user_tool.py [0:0]
def login_user(page, user_email, first_name="John", last_name="Doe"):
"""
Log into the Expensify app.
"""
# Open the Expensify app
page.goto(EXPENSIFY_URL)
# Login user
page.get_by_test_id("username").fill(user_email)
page.get_by_role("button", name="Continue").click()
# Check if OTP is required for the login
try:
expect(page.get_by_test_id("SignInPage").get_by_test_id("validateCode")).to_be_visible(timeout=7000)
except (AssertionError, TimeoutError):
# If not required, expect the join button to appear and click the button
page.get_by_test_id("SignInPage").get_by_role("button", name="Join").click()
else:
# Get the OTP and complete verification
otp_code = "123456"
page.get_by_test_id("SignInPage").get_by_test_id("validateCode").fill(otp_code)
try:
page.get_by_test_id("SignInPage").get_by_role("button", name="Sign in").click(timeout=2000)
except (AssertionError, TimeoutError):
pass
# Check if onboarding is required
try:
expect(page.get_by_text("What do you want to do today?")).to_be_visible(timeout=5000)
except (AssertionError, TimeoutError):
pass
else:
# Complete the onboarding
page.get_by_label("Track and budget expenses").click()
page.get_by_role("button", name="Continue").first.click()
page.get_by_role("textbox", name="First name").fill(first_name)
page.get_by_role("textbox", name="Last name").fill(last_name)
page.get_by_role("button", name="Continue").last.click()
# Dismiss get started dialog if appears
try:
page.get_by_role("button", name="Get started").click(timeout=3000)
except (AssertionError, TimeoutError):
pass
# Expect the main screen to appear
expect(page.get_by_test_id("BaseSidebarScreen")).to_be_visible(timeout=7000)