#!/usr/bin/env python3
"""
Login visual no Google Flow com screenshots
"""
import asyncio
from playwright.async_api import async_playwright
import json

async def login_google_flow_visual():
    async with async_playwright() as p:
        browser = await p.chromium.launch(
            headless=False,
            args=['--no-sandbox', '--disable-dev-shm-usage', '--disable-gpu']
        )
        
        context = await browser.new_context()
        page = await context.new_page()
        
        print("🚀 Navegando para Google Flow Labs...")
        await page.goto('https://labs.google/fx')
        await page.wait_for_load_state('networkidle')
        
        # Screenshot 1: Página inicial
        await page.screenshot(path='screenshot_01_homepage.png')
        print("📸 Screenshot 1: Homepage salvo")
        
        # Procurar e clicar em Sign in
        try:
            sign_in_btn = page.locator('text=Sign in with Google').first
            if await sign_in_btn.is_visible():
                print("🔐 Clicando em 'Sign in with Google'...")
                await sign_in_btn.click()
                await page.wait_for_load_state('networkidle')
                await asyncio.sleep(3)
                
                # Screenshot 2: Página de login
                await page.screenshot(path='screenshot_02_login.png')
                print("📸 Screenshot 2: Login page salvo")
        except Exception as e:
            print(f"⚠️ Erro ao clicar em sign in: {e}")
        
        # Se chegou na página de login do Google
        if 'accounts.google.com' in page.url:
            print("✉️ Inserindo email...")
            try:
                email_field = page.locator('input[type="email"]').first
                await email_field.fill('gabrielcustodiooliveira@gmail.com')
                await page.keyboard.press('Enter')
                await page.wait_for_load_state('networkidle')
                await asyncio.sleep(3)
                
                # Screenshot 3: Depois do email
                await page.screenshot(path='screenshot_03_after_email.png')
                print("📸 Screenshot 3: Após email salvo")
                
                print("🔑 Inserindo senha...")
                password_field = page.locator('input[type="password"]').first
                await password_field.fill('mmommorpg')
                await page.keyboard.press('Enter')
                await page.wait_for_load_state('networkidle')
                await asyncio.sleep(3)
                
                # Screenshot 4: Depois da senha
                await page.screenshot(path='screenshot_04_after_password.png')
                print("📸 Screenshot 4: Após senha salvo")
                
            except Exception as e:
                print(f"⚠️ Erro no login: {e}")
                # Screenshot de erro
                await page.screenshot(path='screenshot_error.png')
                print("📸 Screenshot de erro salvo")
        
        print("⏳ Aguardando 60 segundos para 2FA e navegação...")
        await asyncio.sleep(60)
        
        # Screenshot 5: Status final
        await page.screenshot(path='screenshot_05_final.png')
        print("📸 Screenshot 5: Estado final salvo")
        
        print("🍪 Extraindo cookies...")
        cookies = await context.cookies()
        
        # Salvar cookies
        with open('google_flow_cookies_visual.json', 'w') as f:
            json.dump(cookies, f, indent=2)
        
        # Procurar tokens relevantes
        session_token = None
        csrf_token = None
        
        for cookie in cookies:
            name = cookie['name'].lower()
            if 'session' in name or 'auth' in name:
                session_token = cookie['value']
                print(f"✅ Session-like token: {cookie['name']} = {cookie['value'][:50]}...")
            elif 'csrf' in name or 'xsrf' in name:
                csrf_token = cookie['value']
                print(f"✅ CSRF token: {cookie['name']} = {cookie['value'][:50]}...")
        
        print(f"📄 URL atual: {page.url}")
        print("💾 Todos os cookies salvos em google_flow_cookies_visual.json")
        
        await browser.close()
        return session_token, csrf_token

if __name__ == "__main__":
    session, csrf = asyncio.run(login_google_flow_visual())