issues/381/user_tool.py (116 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)
from playwright.sync_api import sync_playwright, expect
import re, time
import imaplib
import email
import random
import string
from utils.trace_cleaner import trace_cleaner
NEWDOT_URL = "https://dev.new.expensify.com:8082/"
EMAIL = "pehlajrajput1+345@gmail.com"
PASSWORD = ""
def new_dot_login(page, email):
page.goto(NEWDOT_URL)
page.locator('input[type="email"]').fill(email)
page.wait_for_timeout(2000)
page.get_by_role("button", name="Continue").nth(0).click()
page.wait_for_timeout(10000)
page.locator('input[data-testid="validateCode"]').fill("123456")
def zip_error(page, assertion_errors):
try:
page.get_by_label("My settings").click()
page.wait_for_timeout(1000)
page.get_by_label("England's Lane, London,").click()
page.wait_for_timeout(1000)
page.get_by_label("Address line 1").get_by_role("textbox").fill("Maliebaan 87")
page.wait_for_timeout(1000)
page.get_by_text("Maliebaan").first.click()
page.wait_for_timeout(1000)
page.get_by_role("textbox", name="Zip / Postcode").fill("1012 JS")
page.wait_for_timeout(1000)
page.get_by_role("button", name="Save").click()
page.wait_for_timeout(1000)
expect(page.get_by_text("Incorrect zip code format.")).not_to_be_visible()
except AssertionError as e:
assertion_errors.append(f"Error: Zip code validation failed for 'Maliebaan 87': {str(e)}")
try:
page.get_by_label("87 Maliebaan, Utrecht,").click()
page.wait_for_timeout(1000)
page.get_by_label("Address line 1").get_by_role("textbox").fill("tokyo")
page.wait_for_timeout(1000)
page.get_by_text("Tokyo Metro Marunouchi Line").click()
page.wait_for_timeout(1000)
page.get_by_role("textbox", name="Zip / Postcode").fill("100-0001")
page.wait_for_timeout(1000)
page.get_by_role("button", name="Save").click()
page.wait_for_timeout(1000)
expect(page.get_by_text("Incorrect zip code format.")).not_to_be_visible()
except AssertionError as e:
assertion_errors.append(f"Error: Zip code validation failed for 'Tokyo Metro Marunouchi Line': {str(e)}")
try:
page.get_by_label("Tokyo Metro Marunouchi Line,").click()
page.wait_for_timeout(1000)
page.get_by_label("Address line 1").get_by_role("textbox").fill("engla")
page.wait_for_timeout(1000)
page.get_by_text("England's Lane").click()
page.wait_for_timeout(1000)
page.get_by_role("textbox", name="Zip / Postcode").fill("SW1A 1AA")
page.wait_for_timeout(1000)
page.get_by_role("button", name="Save").click()
page.wait_for_timeout(1000)
expect(page.get_by_text("Incorrect zip code format.")).not_to_be_visible()
except AssertionError as e:
assertion_errors.append(f"Error: Zip code validation failed for 'SW1A 1AA': {str(e)}")
try:
page.get_by_label("England's Lane, London,").click()
page.get_by_role("textbox", name="Zip / Postcode").fill(",")
page.wait_for_timeout(1000)
page.get_by_role("button", name="Save").click()
page.wait_for_timeout(1000)
expect(page.get_by_text("Incorrect zip code format.")).to_be_visible()
except AssertionError as e:
assertion_errors.append(f"Error: Zip code validation failed for ',': {str(e)}")
try:
page.get_by_label("Back").click()
page.get_by_label("England's Lane, London,").click()
page.wait_for_timeout(1000)
page.get_by_label("Address line 1").get_by_role("textbox").click()
page.get_by_label("Address line 1").get_by_role("textbox").fill("2574 Fairfield Road")
page.wait_for_timeout(1000)
page.get_by_text("Fairfield Road").first.click()
page.wait_for_timeout(1000)
page.get_by_role("textbox", name="Zip / Postcode").fill("234GEs")
page.wait_for_timeout(1000)
page.get_by_role("button", name="Save").click()
page.wait_for_timeout(1000)
expect(page.get_by_text("Incorrect zip code format.")).to_be_visible()
except AssertionError as e:
assertion_errors.append(f"Error: Zip code validation failed for 'England's Lane, London': {str(e)}")
def test_expensify_0000():
assertion_errors = [] # List to store assertion errors
with sync_playwright() as p:
browser = p.chromium.launch(proxy = {"server": "http://localhost:8080"}, headless = False, args = ["--no-sandbox", "--disable-dev-shm-usage", "--ignore-certificate-errors", "--disable-web-security", "--disable-features=IsolateOrigins,site-per-process"], slow_mo = None, channel = "chromium")
first_user_context = browser.new_context(ignore_https_errors=True)
first_user_context.tracing.start(screenshots=True, snapshots=True, sources=True)
page = first_user_context.new_page()
page.wait_for_timeout(2000)
try:
new_dot_login(page, "pehlajrajput1+345@gmail.com")
zip_error(page, assertion_errors)
finally:
first_user_context.tracing.stop()
first_user_context.tracing.export_trace("/app/expensify/user_tool/output_browser1.zip")
trace_cleaner("/app/expensify/user_tool/output_browser1.zip")
browser.close()
if assertion_errors:
print("\nAssertion Errors:")
for error in assertion_errors:
print(f"- {error}")
raise AssertionError("One or more assertions failed. Check the logs above.")
if __name__ == "__main__":
try:
test_expensify_0000()
except AssertionError as e:
print(str(e))