#!/usr/bin/env python3
"""E2E: prova que na LP do dominio do cliente o clique em WhatsApp dispara dataLayer.push({event:'whatsapp_click'}) e que o GTM (GTM-W785CPB6) esta carregado."""
import asyncio
import json
import sys
from playwright.async_api import async_playwright

TARGETS = [
    "https://ribeiros.drivetour.erdrones.com.br/",  # dominio que Google Ads aponta
    "https://ribeiros.erdrones.com.br/",            # alias curto do cliente
]

async def run():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        results = []
        for url in TARGETS:
            ctx = await browser.new_context(viewport={"width": 1366, "height": 900})
            page = await ctx.new_page()

            gtm_requests = []
            page.on("request", lambda req: gtm_requests.append(req.url) if "googletagmanager.com" in req.url or "google-analytics.com" in req.url or "analytics.google.com" in req.url else None)

            # Bloqueia navegacao para o WhatsApp (senao target=_blank abriria pagina externa)
            await page.route("**/wa.me/**", lambda route: route.abort())
            await page.route("**/api.whatsapp.com/**", lambda route: route.abort())

            resp = await page.goto(url, wait_until="networkidle", timeout=30000)

            # Snapshot dataLayer antes do clique
            dl_before = await page.evaluate("() => (window.dataLayer || []).slice()")

            # Encontra o primeiro botao WhatsApp visivel e clica
            btn = page.locator("a[href*='wa.me']").first
            btn_count = await page.locator("a[href*='wa.me']").count()
            click_ok = False
            try:
                await btn.scroll_into_view_if_needed(timeout=5000)
                await btn.click(timeout=5000, force=True, no_wait_after=True)
                click_ok = True
            except Exception as e:
                pass

            await page.wait_for_timeout(1500)
            dl_after = await page.evaluate("() => (window.dataLayer || []).slice()")

            whatsapp_events = [e for e in dl_after if isinstance(e, dict) and e.get("event") == "whatsapp_click"]

            gtm_container_loaded = any("gtm.js?id=GTM-W785CPB6" in u or "id=GTM-W785CPB6" in u for u in gtm_requests)

            results.append({
                "url": url,
                "status": resp.status if resp else None,
                "wa_buttons_count": btn_count,
                "click_ok": click_ok,
                "gtm_container_loaded": gtm_container_loaded,
                "gtm_related_requests_sample": [u for u in gtm_requests if "GTM-W785CPB6" in u or "collect" in u][:5],
                "datalayer_size_before": len(dl_before),
                "datalayer_size_after": len(dl_after),
                "whatsapp_click_events_fired": len(whatsapp_events),
                "sample_whatsapp_event": whatsapp_events[0] if whatsapp_events else None,
            })

            await ctx.close()
        await browser.close()
        print(json.dumps(results, indent=2, ensure_ascii=False))

asyncio.run(run())
