in issues/314/user_tool.py [0:0]
def test_check_cursor_position():
with sync_playwright() as p:
browser = p.chromium.launch(headless=True, args=["--ignore-certificate-errors", "--disable-web-security", "--disable-features=IsolateOrigins,site-per-process"])
context = browser.new_context()
context.tracing.start(screenshots=True, snapshots=True, sources=True)
page = context.new_page()
error = None
try:
user_email = "ibukunsamuel999+1733126918@gmail.com"
login_user(page, user_email, first_name="Milan", last_name="T")
page.get_by_role("textbox").fill("Hello @applausetester+mn03@applause.expensifail.com")
time.sleep(1)
page.get_by_role("paragraph").get_by_text("Hello").click()
time.sleep(1)
start_position = page.evaluate('''() => {
const selection = window.getSelection();
if (selection.rangeCount > 0) {
const range = selection.getRangeAt(0);
return range.startOffset;
}
return null;
}''')
for _ in range(5): # Moving cursor 5 steps to the right to reach the '@'
page.get_by_role("textbox").press("ArrowRight")
at_position = page.evaluate('''() => {
const selection = window.getSelection();
if (selection.rangeCount > 0) {
const range = selection.getRangeAt(0);
return range.startOffset;
}
return null;
}''')
for _ in range(5): # Moving cursor 5 steps to the left back to the start position
page.get_by_role("textbox").press("ArrowLeft")
final_position = page.evaluate('''() => {
const selection = window.getSelection();
if (selection.rangeCount > 0) {
const range = selection.getRangeAt(0);
return range.startOffset;
}
return null;
}''')
assert final_position == start_position, f"Cursor did not move after the @: start {start_position}, @ position {at_position}, final {final_position}"
time.sleep(2)
except Exception as e:
error = e
finally:
context.tracing.stop(path="/app/expensify/user_tool/output_browser1.zip")
trace_cleaner("/app/expensify/user_tool/output_browser1.zip")
browser.close()
if error:
raise error