import sys, time
from pathlib import Path
sys.path.append(str(Path("05_Production_Pipeline").resolve()))
from invisible_playwright import InvisiblePlaywright
from muse_invpw_driver import DEFAULT_PROFILE

def test_download_button():
    with InvisiblePlaywright(profile_dir=DEFAULT_PROFILE, headless=True) as ctx:
        page = ctx.pages[0] if ctx.pages else ctx.new_page()
        page.goto("https://muse.ai", wait_until="domcontentloaded", timeout=30000)
        time.sleep(5)
        
        dl_selector = 'button:has-text("Tải video xuống"), button[aria-label*="Tải video xuống"], button[data-pel="media_download"], button[data-pel-click="media_download"]'
        btns = page.locator(dl_selector)
        count = btns.count()
        print(f"Found {count} download buttons on main page.")
        if count > 0:
            btn = btns.last
            print("Button outer HTML:", btn.evaluate("el => el.outerHTML"))
            print("Button attributes:", btn.evaluate("""el => {
                const attrs = {};
                for (let a of el.attributes) attrs[a.name] = a.value;
                return attrs;
            }"""))
            
            # Listen to network requests on click
            reqs = []
            page.on("request", lambda r: reqs.append(f"{r.method} {r.url}"))
            
            # Check what happens when clicked
            try:
                with page.expect_download(timeout=5000) as dl_info:
                    btn.click()
                dl = dl_info.value
                print("Download triggered! Filename:", dl.suggested_filename)
                save_p = Path("04_Assets/temp_downloads/test_btn_download.mp4").resolve()
                save_p.parent.mkdir(parents=True, exist_ok=True)
                dl.save_as(str(save_p))
                print(f"Saved to {save_p}, size={save_p.stat().st_size} bytes")
            except Exception as e:
                print("expect_download result:", e)
                
            time.sleep(2)
            print("Network requests triggered by click:")
            for r in reqs[-10:]:
                print(" ", r)

if __name__ == '__main__':
    test_download_button()
