#/apps/aroflo_connector_app/ui_automation/core/browser.py
from __future__ import annotations

from typing import Optional, Tuple
from playwright.sync_api import Browser, BrowserContext, Playwright

def launch_browser_context(
    p: Playwright,
    cfg,
    *,
    storage_state: Optional[str] = None,
) -> Tuple[Browser, BrowserContext]:
    """
    Lanza Chromium y crea un BrowserContext.
    - Respeta cfg.headless y cfg.slow_mo_ms
    - Si storage_state se pasa, lo carga en el context
    """
    browser = p.chromium.launch(headless=cfg.headless, slow_mo=cfg.slow_mo_ms)

    kwargs = {}
    if storage_state:
        kwargs["storage_state"] = storage_state

    context = browser.new_context(**kwargs)
    # Si tú estás usando tracing en otros comandos, déjalo aquí centralizado.
    # Si no lo quieres global, bórralo y maneja tracing en cada command.
    try:
        context.tracing.start(screenshots=True, snapshots=True, sources=True)
    except Exception:
        pass

    return browser, context
