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

LOG="/tmp/amdwork/open_reportcenter.log"
def log(*a):
    with open(LOG,"a") as f: f.write(" ".join(str(x) for x in a)+"\n")
open(LOG,"w").close()

def targets():
    return [t for t in json.loads(urllib.request.urlopen("http://localhost:9223/json",timeout=10).read()) if t.get("type")=="page"]
before=set(t.get("id") for t in targets())
pm=None
for t in targets():
    if "/amds/pm/app/" in (t.get("url") or "") or "/pm/app/" in (t.get("url") or ""):
        pm=t; break
p=cdp.attach(pm); p.enable()
log("PM url:", p.eval("location.href"))

r=p.eval("""(function(){
  var a=Array.from(document.querySelectorAll('a,span,li,button')).find(function(e){return (e.innerText||'').trim()==='Report Center';});
  if(!a) return 'NO_RC_LINK';
  (a.querySelector('a')||a).click();
  return 'clicked Report Center';
})()""")
log("click Report Center:", r)
time.sleep(7)

after=targets()
new=[t for t in after if t.get("id") not in before]
log("NEW TARGETS:")
for t in new: log("  NEW:", t.get("url"))
log("ALL TARGETS:")
for t in after: log("  ", t.get("url"))

log("PM url now:", p.eval("location.href"))
log("PM body sample:", json.dumps((p.eval("document.body.innerText") or "")[:1200]))
log("IFRAMES:", p.eval("JSON.stringify(Array.from(document.querySelectorAll('iframe')).map(f=>f.src))"))

rc_shot_done=False
for t in new:
    try:
        pp=cdp.attach(t); pp.enable()
        deadline=time.time()+25; b=""
        while time.time()<deadline:
            b=(pp.eval("document.body && document.body.innerText || ''") or "")
            if len(b.strip())>40: break
            time.sleep(2)
        log("NEWTAB url:", pp.eval("location.href"))
        log("NEWTAB title:", pp.eval("document.title"))
        log("NEWTAB body:", json.dumps(b[:1800]))
        pp.screenshot("/tmp/amd-agent-reportcenter.png"); rc_shot_done=True
        log("RC SHOT (newtab):/tmp/amd-agent-reportcenter.png")
        pp.close()
    except Exception as e:
        log("newtab inspect err:", str(e)[:200])

if not rc_shot_done:
    p.screenshot("/tmp/amd-agent-reportcenter.png")
    log("RC SHOT (main page):/tmp/amd-agent-reportcenter.png")
log("DONE_RC")
p.close()
