"""
E2E FINAL — abre landing com UTMs, espera 6s pra snippet 21 injetar,
verifica hidden fields dos 2 forms CF7, salva screenshots.
"""
import time
from playwright.sync_api import sync_playwright

TSTAMP = int(time.time())
UTM_SRC = f"teste_leo_{TSTAMP}"

URL = (
    "https://www.px3lab.com.br/cloud-photorf/"
    f"?utm_source={UTM_SRC}"
    "&utm_medium=cpc"
    "&utm_campaign=leo_chain_test"
    "&utm_content=validation_final"
    "&utm_term=hidden_check"
    "&gclid=leo_gclid_teste_abc123"
)

print(f"URL:      {URL}")
print(f"UTM_SRC:  {UTM_SRC}")
print("---")

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    ctx = browser.new_context(
        user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
        viewport={"width": 1366, "height": 800},
    )
    page = ctx.new_page()
    page.goto(URL, wait_until="load", timeout=60000)

    # Espera timeouts do snippet 21 (500, 1500, 3000)
    time.sleep(5)

    forms_state = page.evaluate(
        """() => {
            const forms = document.querySelectorAll('form.wpcf7-form');
            const out = [];
            forms.forEach((f, i) => {
                const fid = f.querySelector('input[name="_wpcf7"]')?.value;
                const item = {form_idx: i, form_id: fid};
                ['utm_source','utm_medium','utm_campaign','utm_content','utm_term','gclid'].forEach(k => {
                    const inp = f.querySelector('input[name="' + k + '"]');
                    item[k] = inp ? inp.value : '(no input)';
                });
                out.push(item);
            });
            const ss = {};
            for (let i = 0; i < sessionStorage.length; i++) {
                const k = sessionStorage.key(i);
                if (k.startsWith('px3_')) ss[k] = sessionStorage.getItem(k);
            }
            return {forms: out, session_storage: ss};
        }"""
    )

    print("=== HIDDEN FIELDS UTM em cada form CF7 ===")
    for f in forms_state['forms']:
        print(f"Form _wpcf7={f['form_id']} (idx {f['form_idx']}):")
        for k in ('utm_source','utm_medium','utm_campaign','utm_content','utm_term','gclid'):
            val = f[k]
            mark = '  OK' if val and val != '(no input)' else '  FALHA' if val == '' else '  MISSING'
            print(f"    {k:15s} = {val!r:60s}{mark}")

    print("\n=== sessionStorage px3_* ===")
    for k, v in forms_state['session_storage'].items():
        print(f"  {k} = {v!r}")

    # Screenshot
    page.screenshot(path='/tmp/px3_e2e_final.png', full_page=False)
    print("\nScreenshot: /tmp/px3_e2e_final.png")

    browser.close()

print("\n---")
print("Validação:")
print("  - Se hidden fields dos 2 forms estao populados = snippet 21 OK")
print("  - Se sessionStorage px3_* populado = capture OK")
print("  - Chain CF7 -> email -> N8N -> Linkia ja confirmada via exec 9363 (jane avelar)")
