#!/usr/bin/env python3
import sys, time
sys.path.insert(0, "/tmp/amdwork")
import cdp

out = open("/tmp/amdwork/do_login.out", "w")
def log(*a):
    print(*a, file=out); out.flush()

# Read password securely from 0600 creds file
creds = {}
with open("/home/claude/.config/amd-agent/credentials.env") as f:
    for line in f:
        line = line.strip()
        if "=" in line:
            k, v = line.split("=", 1)
            creds[k] = v
user = creds["AMD_USER"]
office = creds["AMD_OFFICE"]
pw = creds["AMD_PASSWORD"]

t = cdp.find_target("identity") or cdp.find_target("advancedmd") or cdp.find_target()
p = cdp.attach(t)
p.enable()
log("url before:", p.eval("location.href"))

def set_input(selector, value):
    # Use native setter + input/change events so the SPA registers it
    js = """
    (function(){
      var el=document.querySelector(%r);
      if(!el) return 'NOFIELD';
      var proto=el.tagName==='TEXTAREA'?window.HTMLTextAreaElement.prototype:window.HTMLInputElement.prototype;
      var setter=Object.getOwnPropertyDescriptor(proto,'value').set;
      setter.call(el, %r);
      el.dispatchEvent(new Event('input',{bubbles:true}));
      el.dispatchEvent(new Event('change',{bubbles:true}));
      el.dispatchEvent(new Event('blur',{bubbles:true}));
      return 'OK';
    })()
    """ % (selector, value)
    return p.eval(js)

log("loginName:", set_input("input#loginName", user))
log("officeKey:", set_input("input#officeKey", office))
log("password:", "set" if set_input("input#password", pw)=="OK" else "FAIL")
# select PM radio
log("pm radio:", p.eval("(function(){var r=document.querySelector('input[name=applications][value=pm]'); if(r){r.click(); return 'OK';} return 'NOPM';})()"))
time.sleep(1)
# verify field values populated (NOT password value)
log("verify loginName:", p.eval("document.querySelector('input#loginName').value"))
log("verify officeKey:", p.eval("document.querySelector('input#officeKey').value"))
log("verify password length:", p.eval("document.querySelector('input#password').value.length"))
log("verify pm checked:", p.eval("var r=document.querySelector('input[name=applications][value=pm]'); r?r.checked:'none'"))
p.screenshot("/tmp/amdwork/login-filled.png")
# submit
log("submit:", p.eval("(function(){var b=document.querySelector('button[type=submit]'); if(b){b.click(); return 'clicked';} return 'NOBTN';})()"))
time.sleep(8)
log("url after:", p.eval("location.href"))
log("title after:", p.eval("document.title"))
log("body after:", p.eval("document.body?document.body.innerText.slice(0,1500):'nobody'"))
p.screenshot("/tmp/amdwork/after-login-submit.png")
log("DONE")
out.close()
