@@ -125,7 +125,14 @@ func TestPaymentWatcher_WatchPayment_Reconnect(t *testing.T) {
125125 assert .False (t , gotCallback )
126126
127127 // We have to reconnect in order to pay the invoice.
128- payer .Connect (payee , true )
128+ err = payer .Connect (payee , true )
129+ if err != nil {
130+ t .Fatalf ("Failed Connect(): %v" , err )
131+ }
132+ err = waitForLndPaymentRoute (payer , payee )
133+ if err != nil {
134+ t .Fatalf ("Failed waiting for route: %v" , err )
135+ }
129136
130137 // Now we pay the invoice and check if the watcher is still active. If the
131138 // watcher is still active, the callback should be called.
@@ -197,7 +204,14 @@ func TestPaymentWatcher_WatchPayment_Reconnect_OnGracefulStop(t *testing.T) {
197204 assert .False (t , gotCallback )
198205
199206 // We have to reconnect in order to pay the invoice.
200- payer .Connect (payee , true )
207+ err = payer .Connect (payee , true )
208+ if err != nil {
209+ t .Fatalf ("Failed Connect(): %v" , err )
210+ }
211+ err = waitForLndPaymentRoute (payer , payee )
212+ if err != nil {
213+ t .Fatalf ("Failed waiting for route: %v" , err )
214+ }
201215
202216 // Now we pay the invoice and check if the watcher is still active. If the
203217 // watcher is still active, the callback should be called.
@@ -213,6 +227,29 @@ func TestPaymentWatcher_WatchPayment_Reconnect_OnGracefulStop(t *testing.T) {
213227 }
214228}
215229
230+ func waitForLndPaymentRoute (payer , payee * testframework.LndNode ) error {
231+ scid , err := payer .GetScid (payee )
232+ if err != nil {
233+ return fmt .Errorf ("GetScid() %w" , err )
234+ }
235+
236+ return testframework .WaitForWithErr (func () (bool , error ) {
237+ payerActive , err := payer .IsChannelActive (scid )
238+ if err != nil {
239+ return false , fmt .Errorf ("payer.IsChannelActive() %w" , err )
240+ }
241+ payeeActive , err := payee .IsChannelActive (scid )
242+ if err != nil {
243+ return false , fmt .Errorf ("payee.IsChannelActive() %w" , err )
244+ }
245+ hasRoute , err := payer .HasRoute (payee .Id (), scid )
246+ if err != nil {
247+ return false , nil
248+ }
249+ return payerActive && payeeActive && hasRoute , nil
250+ }, testframework .TIMEOUT )
251+ }
252+
216253func paymentwatcherNodeSetup (t * testing.T , dir string ) (
217254 bitcoind * testframework.BitcoinNode ,
218255 payer * testframework.LndNode ,
0 commit comments