import json
from pathlib import Path
from playwright.sync_api import sync_playwright
base='https://sma.agentsolutions-mallorca.com/cockpit?days=1&sort=relevance&tab=radar'
results=[]
with sync_playwright() as p:
browser=p.chromium.launch(headless=True)
page=browser.new_page(viewport={'width':1440,'height':1000})
errors=[]
page.on('pageerror', lambda e: errors.append(str(e)))
page.on('console', lambda m: errors.append(m.text) if m.type=='error' else None)
page.goto(base, wait_until='networkidle')
def snap(label):
page.wait_for_timeout(100)
active=page.locator('.f.on').all_text_contents()
cards=page.locator('.sig:visible').count()
api=page.evaluate("""async () => { const u=new URL('/api/signals',location.origin); u.search=location.search; u.searchParams.set('limit','100'); const r=await fetch(u); const x=await r.json(); return x.length; }""")
results.append({'step':label,'url':page.url,'active':active,'api':api,'ui':cards,'errors':list(errors)})
errors.clear()
snap('Heute')
for label in ['2T','3T','5T','7T','14T','5T']:
page.get_by_text(label, exact=True).first.click(); page.wait_for_load_state('networkidle'); snap(label)
for label, mode in [('Priorität','Priorität ↓'),('Priorität aus','Priorität ↓'),('Score','Score ↓'),('Score aus','Score ↓'),('Neu','Neu ↓'),('Neu aus','Neu ↓')]:
page.get_by_text(mode, exact=True).click(); page.wait_for_load_state('networkidle'); snap(label)
for label, mode in [('FB','FB · Filter'),('FB aus','FB · Filter'),('LI','LI · Filter'),('LI aus','LI · Filter'),('FB erneut','FB · Filter'),('LI Wechsel','LI · Filter'),('LI aus','LI · Filter')]:
page.get_by_text(mode, exact=True).click(); page.wait_for_load_state('networkidle'); snap(label)
page.reload(wait_until='networkidle'); snap('Reload')
page.go_back(wait_until='networkidle'); snap('Back')
page.go_forward(wait_until='networkidle'); snap('Forward')
page.screenshot(path='/home/hermes/Antworten/AA-023-cockpit.png', full_page=True)
browser.close()
Path('/home/hermes/Antworten').mkdir(parents=True,exist_ok=True)
Path('/home/hermes/Antworten/AA-023-browser.json').write_text(json.dumps(results,ensure_ascii=False,indent=2))
print(json.dumps({'steps':len(results),'last':results[-1],'screenshot':'/home/hermes/Antworten/AA-023-cockpit.png'},ensure_ascii=False))