package browser

import (
	"fmt"
	"time"
)

// CdpWaitLoad espera a que la página actual termine de cargar completamente.
// Hace polling de document.readyState via Runtime.evaluate cada 200ms hasta
// que sea "complete", o hasta que se agote el timeout.
// Retorna error si el timeout se agota o si CdpEvaluate falla (conexion rota).
func CdpWaitLoad(c *CDPConn, timeout time.Duration) error {
	if c == nil {
		return fmt.Errorf("cdp wait load: conexion nula")
	}
	if timeout <= 0 {
		timeout = 30 * time.Second
	}

	deadline := time.Now().Add(timeout)
	interval := 200 * time.Millisecond

	for time.Now().Before(deadline) {
		result, err := CdpEvaluate(c, "document.readyState")
		if err != nil {
			return fmt.Errorf("cdp wait load: error evaluando readyState: %w", err)
		}
		if result == "complete" {
			return nil
		}
		time.Sleep(interval)
	}

	return fmt.Errorf("cdp wait load: pagina no cargo despues de %s", timeout)
}
