import sys, time, json, urllib.request
sys.path.insert(0, "/tmp/amdwork")
from cdp import attach

# Raw target list, tolerate origin issues by trying each page target.
raw = json.loads(urllib.request.urlopen("http://localhost:9223/json", timeout=10).read())
print("RAW TARGETS:")
for p in raw:
    print("  ", p.get("type"), "|", (p.get("title") or "")[:35], "|", (p.get("url") or "")[:80])

# pick the first page target we can attach to
pg = None
for p in raw:
    if p.get("type") != "page":
        continue
    try:
        pg = attach(p)
        pg.enable()
        print("ATTACHED:", (p.get("url") or "")[:80])
        break
    except Exception as e:
        print("skip target:", str(e)[:80])
if pg is None:
    print("NO ATTACHABLE PAGE")
    sys.exit(2)

print("current url:", pg.eval("location.href"))
# Navigate to launch-app explicitly and wait
pg.navigate("https://static-100.advancedmd.com/apps/login/#/launch-app")
time.sleep(10)
print("url now:", pg.eval("location.href"))
print("title:", pg.eval("document.title"))
blen = pg.eval("document.body ? document.body.innerText.length : 0")
print("bodylen:", blen)
print("BODY (1200):")
print(pg.eval("document.body ? document.body.innerText.slice(0,1200) : ''"))
# list visible buttons/links
print("CLICKABLES:", pg.eval("""(function(){var o=[];document.querySelectorAll('button,a,input[type=submit]').forEach(function(b){if(b.offsetParent!==null){o.push((b.innerText||b.value||'').trim().slice(0,40));}});return JSON.stringify(o.filter(Boolean));})()"""))
pg.screenshot("/tmp/amdwork/relaunch.png")
print("SHOT /tmp/amdwork/relaunch.png")

# After launch-app, AMD may have opened a new pm tab. Re-list.
time.sleep(3)
raw2 = json.loads(urllib.request.urlopen("http://localhost:9223/json", timeout=10).read())
print("TARGETS AFTER:")
for p in raw2:
    print("  ", p.get("type"), "|", (p.get("title") or "")[:35], "|", (p.get("url") or "")[:80])
pg.close()
print("DONE_RELAUNCH")
