issues/357/user_tool.py (54 lines of code) (raw):
import sys, os
base_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
sys.path.insert(0, base_path)
import pytest
from utils.login import NEW_DOT_URL, check_if_logged_in
from utils.browser import start_browser, close_browser
from utils.trace_cleaner import trace_cleaner
import io
EMAIL = "testexpen@gmail.com"
def generate_in_memory_text_file(content):
text_file = io.BytesIO()
text_file.write(content.encode('utf-8'))
text_file.seek(0) # Reset file pointer to the beginning
return text_file, "example_text_file.txt"
@pytest.mark.asyncio
async def test_issue_28030():
context, page, playwright = await start_browser(
persistent=True,
launch_args=["--disable-web-security", "--disable-features=IsolateOrigins, site-per-process"]
)
await context.tracing.start(
title="test_issue_28030",
screenshots=True,
snapshots=True
)
try:
if await check_if_logged_in(page=page, url=NEW_DOT_URL) == False:
await page.get_by_test_id("username").fill(EMAIL)
await page.get_by_role("button", name="Continue").click()
await page.get_by_test_id("validateCode").fill("123456")
await page.get_by_label("My settings").click()
content = "This is a sample text file generated for demonstration purposes."
text_file, file_name = generate_in_memory_text_file(content)
async with page.expect_file_chooser() as fc_info:
await page.get_by_label("Edit photo").click()
file_chooser = await fc_info.value
await file_chooser.set_files({
"name": file_name,
"mimeType": "text/plain",
"buffer": text_file.read()
})
await page.get_by_text("Profile picture must be one").hover()
await page.mouse.move(455, 340)
await page.mouse.down() # Simulates starting a text selection
await page.mouse.move(900, 340)
await page.mouse.up() # Simulate end of a text selection
selected_text = await page.evaluate("() => window.getSelection().toString()")
assert selected_text == "Profile picture must be one of the following types: jpg, jpeg, png, gif, bmp, svg.", f"Text not selectable, got '{selected_text}'"
except:
raise
finally:
await context.tracing.stop(path="/app/expensify/user_tool/output_browser1.zip")
trace_cleaner("/app/expensify/user_tool/output_browser1.zip")
await close_browser(page, context, playwright)