def test_expensify()

in issues/365/user_tool.py [0:0]


def test_expensify():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True, args=[
            "--disable-web-security",
            "--disable-features=IsolateOrigins,site-per-process"
        ])

        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()
        try:
            page.wait_for_timeout(3000)

            new_dot_login(page, EMAIL)
            page.wait_for_timeout(3000)


            page.get_by_role("button", name="Start chat (Floating action)").click()
            page.get_by_text("Submit expense").click()
            page.get_by_test_id("IOURequestStartPage").get_by_role("button", name="Manual").click()


            amount_field_locator = (
                page.get_by_test_id("IOURequestStartPage")
                .locator("input[class='css-textinput-11aywtz r-placeholderTextColor-6taxm2']")
                .all()[0]
            )


            amount = "12345.67"
            temp = amount.split(".")
            digits_after_decimal = temp[1].strip()
            digits_before_decimal = temp[0].strip()


            amount_field_locator.fill(amount)


            for _ in range(len(digits_after_decimal) + 1):
                page.keyboard.press("ArrowLeft")

                page.wait_for_timeout(200)

            for _ in range(len(digits_before_decimal) + 1):
                page.keyboard.press("Backspace")

                page.wait_for_timeout(200)


            expected_amount = f"0.{digits_after_decimal}"
            actual_amount = amount_field_locator.input_value()
            assert_message = f"Amount should be {expected_amount} after removing all the digits before the decimal point"
            assert actual_amount == expected_amount, assert_message


            for x in digits_before_decimal:
                page.keyboard.press(x)

                page.wait_for_timeout(200)
            expected_amount = f"0{digits_before_decimal}.{digits_after_decimal}"
            actual_amount = amount_field_locator.input_value()
            assert_message = f"Amount should be {expected_amount} after the update"
            assert actual_amount == expected_amount, assert_message

            page.wait_for_timeout(1500)
        except Exception as e:

            raise e
        finally:

            trace_path = "/app/expensify/user_tool/output_browser1.zip"
            first_user_context.tracing.stop(path=trace_path)
            trace_cleaner(trace_path)

            page.close()
            browser.close()