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

# Open a fresh tab via browser-level Target.createTarget (PUT-safe alternative)
ver = json.loads(urllib.request.urlopen("http://localhost:9223/json/version", timeout=10).read())
bws = websocket.create_connection(ver["webSocketDebuggerUrl"], timeout=30, max_size=None)
_bid = [0]
def bsend(method, params=None):
    _bid[0]+=1; mid=_bid[0]
    bws.send(json.dumps({"id":mid,"method":method,"params":params or {}}))
    while True:
        m=json.loads(bws.recv())
        if m.get("id")==mid: return m
res = bsend("Target.createTarget", {"url":"https://static-100.advancedmd.com/apps/identity/#/security"})
tid = res["result"]["targetId"]
print("NEW_TARGET:", tid)
time.sleep(3)

target = None
for p in cdp.list_pages():
    if p.get("id") == tid:
        target = p; break
if not target:
    print("could not find new tab"); sys.exit(1)
pg = cdp.attach(target)
pg.enable()
time.sleep(1)

routes = ["#/", "#/security", "#/account", "#/profile", "#/mfa", "#/two-factor",
          "#/authenticator", "#/manage-account", "#/settings", "#/multifactor",
          "#/devices", "#/verification"]
base = "https://static-100.advancedmd.com/apps/identity/"
for r in routes:
    pg.navigate(base + r)
    time.sleep(2.5)
    url = pg.eval("location.href")
    body = (pg.eval("document.body.innerText") or "")[:200].replace("\n"," | ")
    has_auth = pg.eval("/authenticator|totp|google authenticator|qr code|scan this|two-factor|2-step|multi-factor|microsoft authenticator/i.test(document.body.innerText)")
    print("ROUTE", r, "->", url.split('#')[-1][:40], "| AUTHKW:", has_auth, "|", body[:140])
pg.screenshot("/tmp/amdwork/amd-identity-explore.png")
# Clean up: close the probe tab
bsend("Target.closeTarget", {"targetId": tid})
print("IDENTITY_PROBE2_DONE")
pg.close(); bws.close()
