import os, sys, json, time

os.environ["BU_NAME"] = "work"
sys.path.insert(0, "/opt/data/browser-harness")
from helpers import goto, wait_for_load, sleep, screenshot, cdp, click, scroll, list_tabs, page_info, new_tab, switch_tab
from admin import daemon_alive, start_remote_daemon

NAME = "work"
assert daemon_alive(NAME), "Browser not alive!"

# Click on password input and type password
print("Focusing password field...")
cdp("Runtime.evaluate", expression="""
    (function() {
        let pwdField = document.getElementById('password-input');
        if (pwdField) {
            pwdField.focus();
            pwdField.value = '';
            return 'focused password field';
        }
        return 'password field not found';
    })();
""", returnByValue=True)
time.sleep(0.5)

# Type password character by character - handle special chars properly
password = "pCrL5Q-t7$mk?B5"
print("Typing password...")
for char in password:
    # Use char type for simple chars, keyDown/keyUp for special
    cdp("Input.dispatchKeyEvent", type="char", text=char)
    time.sleep(0.05)

time.sleep(1)

# Verify password length
pwd_len = cdp("Runtime.evaluate", expression="document.getElementById('password-input').value.length", returnByValue=True)
print(f"Password field length: {pwd_len}")

screenshot("/tmp/cbm_tm_07_pwd.png")

# Click Sign In button
print("Clicking Sign In...")
signin_result = cdp("Runtime.evaluate", expression="""
    (function() {
        let allBtns = document.querySelectorAll('button');
        for (let i = 0; i < allBtns.length; i++) {
            if (allBtns[i].textContent.trim() === 'Sign in') {
                let rr = allBtns[i].getBoundingClientRect();
                allBtns[i].click();
                return JSON.stringify({x: rr.x + rr.width/2, y: rr.y + rr.height/2});
            }
        }
        return 'sign in button not found';
    })();
""", returnByValue=True)
print(f"Clicked Sign In: {signin_result}")

# Wait for response - could redirect or show error
sleep(8)
screenshot("/tmp/cbm_tm_08_after_signin.png")

page_text = cdp("Runtime.evaluate", expression="document.body.innerText.substring(0, 3000)", returnByValue=True)
print(f"Page after sign in: {page_text}")

url = cdp("Runtime.evaluate", expression="window.location.href", returnByValue=True)
print(f"URL after sign in: {url}")