import sys,pathlib,re
side,row=sys.argv[1:3];sys.argv=[sys.argv[0],side,'snapshot']
exec(pathlib.Path('/tmp/issue-lead-27024-r1/capture-2/native-driver.py').read_text().split('try:')[0])
def cap(tag,selected=True):
 d('scroll','top')
 for i in range(8):
  a=run/(tag+str(i)+'a.png');b=run/(tag+str(i)+'b.png');d('screenshot',str(a));time.sleep(.5);d('screenshot',str(b));c=subprocess.run(['compare','-metric','AE',str(a),str(b),'null:'],text=True,capture_output=True)
  if c.stderr.strip()=='0':
   if selected and not os.environ.get('CAPTURE_NO_SELECTED_STILLS'):(ROOT/f'{row.lower()}-mobile-{side}-{tag}.png').write_bytes(b.read_bytes())
   return
 raise RuntimeError('Unsettled '+tag)
def fold():
 snapshot=d('snapshot');labels=re.findall(r'\[button\] "(Worked for [^"]+)"',snapshot);label=labels[0];d('click','label='+json.dumps(label),'--settle')
try:
 d('wait','text','HARNESS '+row,'30000');d('scroll','top');d('record','start',str(ROOT/f'{row.lower()}-mobile-{side}.mp4'),'--fps','15','--hide-touches')
 cap('collapsed')
 if row=='R1':
  d('click','label='+json.dumps('Resume child'),'--settle');cap('resumed-live')
  d('click','label='+json.dumps('Complete child and notify'),'--settle');cap('settled')
  fold();cap('settled-expanded');fold();cap('recollapsed')
  port='8084' if side=='before' else '8085'
  d('open','com.t3tools.t3code.dev','--relaunch','--launch-url',f't3code-dev://expo-development-client/?url=http%3A%2F%2F100.101.192.104%3A{port}&disableAutoLaunch=1&disableFab=1','--metro-host','100.101.192.104','--metro-port',port)
  d('wait','absent','label="Loading from Metro…"','30000')
  env=json.load(__import__('urllib.request').request.urlopen('http://127.0.0.1:'+('15549' if side=='before' else '15168')+'/.well-known/t3/environment'))['environmentId']
  for navigationAttempt in range(3):
   d('open','com.t3tools.t3code.dev','--launch-url','t3code-dev://threads/'+env+'/r1-proof')
   try:d('wait','text','HARNESS R1','5000' if navigationAttempt==0 else '30000');break
   except RuntimeError as error:
    if navigationAttempt==2 or 'wait timed out' not in str(error):raise
  d('click','label="Reset fixture"','--settle');d('click','label="Resume child"','--settle');d('click','label="Complete child and notify"','--settle');cap('reloaded');fold();cap('reloaded-expanded');fold()
 else:fold();cap('expanded');fold()
 if row=='R2':
  snap=d('snapshot');label=re.search(r'\[button\] "(2 subagents[^"]*)"',snap)[1];d('click','label='+json.dumps(label),'--settle');cap('live-batch-open');d('click','label='+json.dumps(label),'--settle')
 if row in ['R2','R4']:
  d('click','label='+json.dumps('Settle final child' if row=='R2' else 'Swap trailing work order'),'--settle');cap('settled' if row=='R2' else 'reverse-order');fold();cap('settled-expanded' if row=='R2' else 'reverse-expanded')
  if row=='R2':
   snapshot=d('snapshot');label=re.search(r'\[button\] "(2 subagents[^"]*)"',snapshot)[1];d('click','label='+json.dumps(label),'--settle');cap('settled-batch-open')
   snapshot=d('snapshot');match=re.search(r'(@e\S+) \[link\] "Research the completed task[^\n]*',snapshot)
   if not match:raise RuntimeError('No child link')
   d('click',match[1],'--settle');d('wait','text','Harness child target','30000');time.sleep(2);d('back','--settle');d('wait','text','HARNESS R2','30000')
  else:fold()
 cap('final-ready',False);time.sleep(2);d('record','stop')
finally:
 (run/'steps.json').write_text(json.dumps(steps,indent=2));print(json.dumps(steps),flush=True)
