#!/opt/quark/bin/python
# Start Playwright codegen with custom browser options
# and full HAR recording enabled.

from playwright.sync_api import Playwright, sync_playwright

browser_args = { 'headless': True, 'args': ["--disable-blink-features=AutomationControlled", "--disable-webgl"]}

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(
        **browser_args | {'headless': False, 'slow_mo': 500}
    )
    context = browser.new_context(
        accept_downloads=True,
        user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36',
#       user_agent='Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'
    )
    context.route_from_har(
        har="recording.har", update=True, update_content="embed", update_mode="full"
    )
    context.tracing.start(
        screenshots=True,
        snapshots=True,
        sources=True,
    )
    page = context.new_page()

    # Start manual recording, Ctrl+C to stop
    print("Press Ctrl+C to exit codegen.")

#   page.goto('https://bot.sannysoft.com/')
#   page.screenshot(path=f'foo.png', full_page=True)
    page.pause()

#   try:
#       page.pause()
#   except Exception:
#       pass

    # ---------------------
    context.tracing.stop(
        path="trace.zip",
    )
    context.tracing.stop()
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)
