issues/133/user_tool.py (45 lines of code) (raw):
from playwright.sync_api import sync_playwright
from utils.trace_cleaner import trace_cleaner
NEWDOT_URL = "https://dev.new.expensify.com:8082/"
def new_dot_login(page, email):
page.goto(NEWDOT_URL)
page.locator('input[type="email"]').fill(email)
page.keyboard.press('Enter')
# Magic code entry
page.wait_for_timeout(3000)
my_otp_code = '123456'
page.keyboard.type(my_otp_code)
try:
page.get_by_role("button", name="Sign in").click()
except Exception:
pass
def test_same_tab():
with sync_playwright() as p:
browser = p.chromium.launch(channel="chrome", headless=False,
proxy={"server": "http://127.0.0.1:8080/"},
args=[
"--disable-web-security",
"--disable-features=IsolateOrigins,site-per-process"
])
context = browser.new_context()
# Start tracing
context.tracing.start(screenshots=True, snapshots=True, sources=True)
page = context.new_page()
try:
email = 't2815719+2893@gmail.com'
# login user
new_dot_login(page, email)
new_pages = []
context.on("page", lambda new_page: new_pages.append(new_page))
# Navigate to settings
page.get_by_label("My settings").click()
page.get_by_label("Switch to Expensify Classic").click()
# Fill out necessary info to continue with operation
page.get_by_label("I don't understand how to use").click()
page.get_by_role("button", name="Next").click()
page.get_by_role("textbox", name="Your response").fill("test")
page.get_by_role("button", name="Next").click()
page.get_by_role("button", name="Switch to Expensify Classic").click()
page.wait_for_timeout(50000) # waiting for page to load and fail
# Test title of page is loading
assert len(new_pages) == 0, 'Switch to classic should open in same tab'
finally:
# Stop tracing and export the trace file
context.tracing.stop(path="/app/expensify/user_tool/output_browser1.zip")
trace_cleaner("/app/expensify/user_tool/output_browser1.zip")
browser.close()
if __name__ == '__main__':
test_same_tab()