diff --git a/extras/hs-test/framework_test.go b/extras/hs-test/framework_test.go
index 8773fa2..8cbf936 100644
--- a/extras/hs-test/framework_test.go
+++ b/extras/hs-test/framework_test.go
@@ -2,12 +2,21 @@
 
 import (
 	"testing"
+	"time"
 
 	. "github.com/onsi/ginkgo/v2"
 	. "github.com/onsi/gomega"
 )
 
+var suiteTimeout time.Duration
+
 func TestHst(t *testing.T) {
+	if *isVppDebug {
+		// 30 minute timeout so that the framework won't timeout while debugging
+		suiteTimeout = time.Minute * 30
+	} else {
+		suiteTimeout = time.Minute * 5
+	}
 	RegisterFailHandler(Fail)
 	RunSpecs(t, "HST")
 }
diff --git a/extras/hs-test/suite_nginx_test.go b/extras/hs-test/suite_nginx_test.go
index ef4ca5c..4c6e9db 100644
--- a/extras/hs-test/suite_nginx_test.go
+++ b/extras/hs-test/suite_nginx_test.go
@@ -4,7 +4,6 @@
 	"reflect"
 	"runtime"
 	"strings"
-	"time"
 
 	. "github.com/onsi/ginkgo/v2"
 )
@@ -101,7 +100,7 @@
 		It(testName, func(ctx SpecContext) {
 			s.log(testName + ": BEGIN")
 			test(&s)
-		}, SpecTimeout(time.Minute*5))
+		}, SpecTimeout(suiteTimeout))
 	}
 })
 
@@ -128,6 +127,6 @@
 		It(testName, Label("SOLO"), func(ctx SpecContext) {
 			s.log(testName + ": BEGIN")
 			test(&s)
-		}, SpecTimeout(time.Minute*5))
+		}, SpecTimeout(suiteTimeout))
 	}
 })
diff --git a/extras/hs-test/suite_no_topo_test.go b/extras/hs-test/suite_no_topo_test.go
index 19a3e1f..260fc1d 100644
--- a/extras/hs-test/suite_no_topo_test.go
+++ b/extras/hs-test/suite_no_topo_test.go
@@ -4,7 +4,6 @@
 	"reflect"
 	"runtime"
 	"strings"
-	"time"
 
 	. "github.com/onsi/ginkgo/v2"
 )
@@ -77,7 +76,7 @@
 		It(testName, func(ctx SpecContext) {
 			s.log(testName + ": BEGIN")
 			test(&s)
-		}, SpecTimeout(time.Minute*5))
+		}, SpecTimeout(suiteTimeout))
 	}
 })
 
@@ -104,6 +103,6 @@
 		It(testName, Label("SOLO"), func(ctx SpecContext) {
 			s.log(testName + ": BEGIN")
 			test(&s)
-		}, SpecTimeout(time.Minute*5))
+		}, SpecTimeout(suiteTimeout))
 	}
 })
diff --git a/extras/hs-test/suite_ns_test.go b/extras/hs-test/suite_ns_test.go
index 377046c..7bdb90b 100644
--- a/extras/hs-test/suite_ns_test.go
+++ b/extras/hs-test/suite_ns_test.go
@@ -5,7 +5,6 @@
 	"reflect"
 	"runtime"
 	"strings"
-	"time"
 
 	. "github.com/onsi/ginkgo/v2"
 )
@@ -86,7 +85,7 @@
 		It(testName, func(ctx SpecContext) {
 			s.log(testName + ": BEGIN")
 			test(&s)
-		}, SpecTimeout(time.Minute*5))
+		}, SpecTimeout(suiteTimeout))
 	}
 })
 
@@ -113,6 +112,6 @@
 		It(testName, Label("SOLO"), func(ctx SpecContext) {
 			s.log(testName + ": BEGIN")
 			test(&s)
-		}, SpecTimeout(time.Minute*5))
+		}, SpecTimeout(suiteTimeout))
 	}
 })
diff --git a/extras/hs-test/suite_tap_test.go b/extras/hs-test/suite_tap_test.go
index ebf0f9b..cb06533 100644
--- a/extras/hs-test/suite_tap_test.go
+++ b/extras/hs-test/suite_tap_test.go
@@ -52,7 +52,7 @@
 		It(testName, func(ctx SpecContext) {
 			s.log(testName + ": BEGIN")
 			test(&s)
-		}, SpecTimeout(time.Minute*5))
+		}, SpecTimeout(suiteTimeout))
 	}
 })
 
@@ -79,6 +79,6 @@
 		It(testName, Label("SOLO"), func(ctx SpecContext) {
 			s.log(testName + ": BEGIN")
 			test(&s)
-		}, SpecTimeout(time.Minute*5))
+		}, SpecTimeout(suiteTimeout))
 	}
 })
diff --git a/extras/hs-test/suite_veth_test.go b/extras/hs-test/suite_veth_test.go
index c3038ca..13ef5ef 100644
--- a/extras/hs-test/suite_veth_test.go
+++ b/extras/hs-test/suite_veth_test.go
@@ -109,7 +109,7 @@
 		It(testName, func(ctx SpecContext) {
 			s.log(testName + ": BEGIN")
 			test(&s)
-		}, SpecTimeout(time.Minute*5))
+		}, SpecTimeout(suiteTimeout))
 	}
 })
 
@@ -137,6 +137,6 @@
 		It(testName, Label("SOLO"), func(ctx SpecContext) {
 			s.log(testName + ": BEGIN")
 			test(&s)
-		}, SpecTimeout(time.Minute*5))
+		}, SpecTimeout(suiteTimeout))
 	}
 })
diff --git a/extras/hs-test/vppinstance.go b/extras/hs-test/vppinstance.go
index 3276c2d..8a92776 100644
--- a/extras/hs-test/vppinstance.go
+++ b/extras/hs-test/vppinstance.go
@@ -108,6 +108,7 @@
 }
 
 func (vpp *VppInstance) start() error {
+	maxReconnectAttempts := 3
 	// Replace default logger in govpp with our own
 	govppLogger := logrus.New()
 	govppLogger.SetOutput(io.MultiWriter(vpp.getSuite().logger.Writer(), GinkgoWriter))
@@ -142,6 +143,8 @@
 
 	vpp.getSuite().log("starting vpp")
 	if *isVppDebug {
+		// default = 3; VPP will timeout while debugging if there are not enough attempts
+		maxReconnectAttempts = 5000
 		sig := make(chan os.Signal, 1)
 		signal.Notify(sig, syscall.SIGQUIT)
 		cont := make(chan bool, 1)
@@ -166,7 +169,7 @@
 	sockAddress := vpp.container.getHostWorkDir() + defaultApiSocketFilePath
 	conn, connEv, err := govpp.AsyncConnect(
 		sockAddress,
-		core.DefaultMaxReconnectAttempts,
+		maxReconnectAttempts,
 		core.DefaultReconnectInterval)
 	if err != nil {
 		vpp.getSuite().log("async connect error: " + fmt.Sprint(err))
@@ -184,7 +187,7 @@
 		context.Background(),
 		core.WithRequestSize(50),
 		core.WithReplySize(50),
-		core.WithReplyTimeout(time.Second*10))
+		core.WithReplyTimeout(time.Second*5))
 	if err != nil {
 		vpp.getSuite().log("creating stream failed: " + fmt.Sprint(err))
 		return err
