package browser import ( "strings" "testing" "time" ) // TestCdpWaitIdleDefaults verifica el comportamiento observable de CdpWaitIdle // sin requerir una instancia Chrome real. func TestCdpWaitIdleDefaults(t *testing.T) { t.Run("conexion nula retorna error inmediato", func(t *testing.T) { err := CdpWaitIdle(nil, CdpWaitIdleOpts{}) if err == nil { t.Fatal("esperaba error para conexion nula, got nil") } }) t.Run("opts con ceros aplica defaults antes de usar", func(t *testing.T) { // Zero-value de CdpWaitIdleOpts debe tener todos los campos en 0 // para que la logica de defaults sea alcanzable. var opts CdpWaitIdleOpts if opts.QuietMs != 0 || opts.Timeout != 0 || opts.MaxInflight != 0 || opts.PollMs != 0 { t.Fatal("zero-value de CdpWaitIdleOpts debe tener todos los campos en 0") } }) t.Run("error de conexion nula contiene texto descriptivo", func(t *testing.T) { err := CdpWaitIdle(nil, CdpWaitIdleOpts{ QuietMs: 100, Timeout: 500 * time.Millisecond, PollMs: 50, }) if err == nil { t.Fatal("esperaba error, got nil") } msg := err.Error() if len(msg) == 0 { t.Error("el mensaje de error no debe estar vacio") } }) t.Run("mensaje de error nil-conn menciona cdp wait idle", func(t *testing.T) { err := CdpWaitIdle(nil, CdpWaitIdleOpts{}) if err == nil { t.Fatal("esperaba error, got nil") } if !strings.Contains(err.Error(), "cdp wait idle") { t.Errorf("mensaje de error %q no contiene 'cdp wait idle'", err.Error()) } }) }