#!/usr/bin/env python3
"""GHL login - Try with browser context isolation and extended stealth"""
import os, sys, json, time
from datetime import datetime
from pathlib import Path

REPORT_DIR = Path(f'/mnt/e/genesis-system/reports/ghl_attempt_{datetime.now().strftime("%H%M%S")}')
REPORT_DIR.mkdir(parents=True, exist_ok=True)

def run():
    from playwright.sync_api import sync_playwright, BrowserContext
    
    with sync_playwright() as p:
        # Try Firefox instead - GHL may not block it as aggressively
        print("Launching Firefox (may be less blocked than Chromium)...")
        browser = p.firefox.launch(
            headless=True,
            args=[
                '--no-sandbox',
            ]
        )
        
        ctx = browser.new_context(
            viewport={'width': 1920, 'height': 1080},
            user_agent='Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0',
        )
        
        page = ctx.new_page()
        
        try:
            print("Navigating to GHL login (via Firefox)...")
            page.goto('https://app.leadconnectorhq.com/login', timeout=30000)
            page.wait_for_load_state('load')
            page.wait_for_timeout(4000)
            
            page.screenshot(path=str(REPORT_DIR/'01_firefox_login.png'))
            
            # Check if form loaded
            inputs = page.query_selector_all('input')
            print(f"Inputs found: {len(inputs)}")
            
            if len(inputs) == 0:
                html = page.content()
                with open(REPORT_DIR/'firefox_html.txt', 'w') as f:
                    f.write(html[:5000])
                print("No inputs found on Firefox either. GHL is blocking headless access.")
                
                result = {
                    'success': False,
                    'error': 'GHL blocks headless browsers aggressively',
                    'firefox_blocked': True,
                    'report_dir': str(REPORT_DIR)
                }
            else:
                print("Firefox loaded the form! Attempting login...")
                
                inputs[0].fill('kinan@agileadapt.com')
                page.wait_for_timeout(300)
                
                if len(inputs) > 1:
                    inputs[1].fill('SystemBird505*')
                    page.wait_for_timeout(300)
                
                page.screenshot(path=str(REPORT_DIR/'02_firefox_filled.png'))
                
                # Try to find submit button
                buttons = page.query_selector_all('button')
                for btn in buttons:
                    btn_text = btn.inner_text()
                    if 'sign' in btn_text.lower() or 'login' in btn_text.lower() or 'submit' in btn_text.lower():
                        btn.click()
                        print(f"Clicked button: {btn_text}")
                        break
                else:
                    page.keyboard.press('Enter')
                    print("Pressed Enter")
                
                page.wait_for_timeout(3000)
                page.screenshot(path=str(REPORT_DIR/'03_firefox_submit.png'))
                
                final_url = page.url
                result = {
                    'success': 'dashboard' in final_url.lower(),
                    'url': final_url,
                    'report_dir': str(REPORT_DIR)
                }
            
            json.dump(result, open(REPORT_DIR/'result.json','w'))
            print(json.dumps(result, indent=2))
            
        except Exception as e:
            print(f"Exception: {e}")
            result = {
                'success': False,
                'error': str(e),
                'url': page.url,
                'report_dir': str(REPORT_DIR)
            }
            json.dump(result, open(REPORT_DIR/'result.json','w'))
        
        finally:
            browser.close()

if __name__ == '__main__':
    run()
