import subprocess,sys,json,pathlib,time
from PIL import Image,ImageDraw
browser,session,root,home,url,prefix,version=sys.argv[1:]
def ab(*args):
 p=subprocess.run([browser,'--session',session,*args],capture_output=True,text=True,check=True)
 return p.stdout
if not __import__('os').environ.get('CAPTURE_RESUME'):
 subprocess.run(['node','apps/server/src/bin.ts','project','add','--base-dir',home,'--title','Tagged source proof',root],cwd=root,capture_output=True)
 pair=json.loads(subprocess.check_output(['node','apps/server/src/bin.ts','auth','pairing','create','--base-dir',home,'--base-url',url,'--json'],cwd=root))
 ab('open',url+'/pair')
 ab('set','viewport','1440','1000')
 ab('wait','--text','Pairing token')
 ab('find','role','textbox','fill',pair['credential'],'--name','Pairing token')
 ab('find','role','button','click','--name','Continue')
 ab('wait','--fn','!location.pathname.includes("/pair")')
ab('open',url+'/settings/about')
ab('wait','--text','Current version')
def shot(suffix):
 subprocess.run(['python3',str(pathlib.Path(__file__).with_name('capture-stable.py')),browser,session,prefix+suffix+'.png'],check=True)
shot('-about')
version=json.loads(ab('eval',"document.querySelector('button[aria-label^=\"Copy version\"]').getAttribute('aria-label')"))
ab('find','role','button','click','--name','Sharing & access')
ab('wait','--text','Network access')
text=json.loads(ab('eval','document.body.innerText'))
pathlib.Path(prefix+'-visible-versions.txt').write_text('About: '+version+'\nSharing & access:\n'+text[text.index('Version\n'):text.index('Network access')]+'\nMismatch banner present: '+str('Version mismatch' in text)+'\n')
shot('-server-private')
p=prefix+'-server-private.png'; im=Image.open(p); d=ImageDraw.Draw(im);d.rectangle((430,110,900,145),fill='#f4f4f5');d.text((438,119),'[environment name redacted]',fill='#555555'); im.save(prefix+'-server.png')
print('Captured '+pathlib.Path(prefix).name)
if 'built-dev' in prefix:
 im=Image.open(prefix+'-server.png');d=ImageDraw.Draw(im);d.rectangle((466,185,1000,211),fill='#f4f4f5');d.text((474,192),'[tailnet URL redacted]',fill='#555555');im.save(prefix+'-server.png')
 p=pathlib.Path(prefix+'-visible-versions.txt');import re;p.write_text(re.sub(r'https://[^/\s]+/?','[tailnet URL redacted]',p.read_text()))
