#!/usr/bin/env python3
"""DAS: uji klik pada tombol WhatsApp YANG BERpelacak, lalu pastikan event klik_wa terkirim ke GA4."""
import asyncio, json, sys

UJI = sys.argv[1] if len(sys.argv) > 1 else "https://dasindonesia.com/bengkel-mercy-surabaya/"


async def main():
    from playwright.async_api import async_playwright
    minta = []
    async with async_playwright() as pw:
        br = await pw.chromium.launch()
        ctx = await br.new_context(user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36")
        hal = await ctx.new_page()

        async def tangkap(req):
            if "google-analytics.com" in req.url or "analytics.google.com" in req.url:
                minta.append(req.url)
        hal.on("request", lambda r: asyncio.create_task(tangkap(r)))

        await hal.goto(UJI, wait_until="domcontentloaded", timeout=180000)
        await hal.wait_for_timeout(7000)
        print("   fungsi gtag:", await hal.evaluate("typeof window.gtag"))

        # rekam semua panggilan gtag
        await hal.evaluate("""
            window.__rekam = [];
            if (window.gtag) {
                const asli = window.gtag.bind(window);
                window.gtag = function () { window.__rekam.push(Array.from(arguments)); return asli.apply(null, arguments); };
            }
        """)
        ada = await hal.evaluate("document.querySelectorAll(\"a[onclick*='klik_wa']\").length")
        print("   tombol berpelacak:", ada)
        if not ada:
            print("   ⚠️ halaman ini belum berpelacak")
            await br.close(); return

        await hal.evaluate("""
            const t = document.querySelectorAll("a[onclick*='klik_wa']");
            t[0].setAttribute('target','_blank');
            t[0].click();
        """)
        await hal.wait_for_timeout(6000)
        rekam = await hal.evaluate("window.__rekam || []")
        print("   panggilan gtag yang terekam:", json.dumps(rekam)[:400])
        await hal.wait_for_timeout(3000)
        await br.close()

    kena = [u for u in minta if "klik_wa" in u]
    print("\n=== permintaan pengukuran ===")
    for u in minta:
        print(("   ✅ " if "klik_wa" in u else "      ") + u[:130])
    print(f"\n   total {len(minta)} permintaan | memuat klik_wa: {len(kena)}")
    print("   HASIL:", "✅ event klik_wa sampai ke GA4" if kena else "⚠️ event belum terkirim")


asyncio.run(main())
