@@ -350,10 +350,33 @@ describe("the wait right after connecting a provider", () => {
350350 expect ( text ) . toContain ( "Myra is taking longer than usual" ) ;
351351 expect ( text ) . not . toMatch ( / \d + o f \d + / ) ;
352352 const retry = Array . from ( container ?. querySelectorAll ( "button" ) ?? [ ] ) . find (
353- ( button ) => button . textContent === "Try again " ,
353+ ( button ) => button . textContent === "Retry " ,
354354 ) ;
355355 expect ( retry ) . not . toBeUndefined ( ) ;
356356 } ) ;
357+
358+ test ( "auto-navigates once Myra becomes ready even after the stall message fires, with no click" , async ( ) => {
359+ // Myra doesn't answer until well past the stall threshold — the slow
360+ // message must not be the end of the line. Polling keeps going
361+ // underneath it, and the land happens on its own once she's ready.
362+ benchWhereMyraArrivesAfter ( 6 ) ;
363+ const navigated : string [ ] = [ ] ;
364+ await renderHome ( { retryMs : 10 , stallAfterMs : 40 , navigated } ) ;
365+ for ( let i = 0 ; i < 40 ; i ++ ) {
366+ await settle ( ) ;
367+ if ( ( container ?. textContent ?? "" ) . includes ( "longer than usual" ) ) break ;
368+ }
369+ expect ( container ?. textContent ?? "" ) . toContain (
370+ "Myra is taking longer than usual" ,
371+ ) ;
372+
373+ for ( let i = 0 ; i < 60 ; i ++ ) {
374+ await settle ( ) ;
375+ if ( navigated . length > 0 ) break ;
376+ }
377+
378+ expect ( navigated ) . toEqual ( [ "/w/chan_new" ] ) ;
379+ } ) ;
357380} ) ;
358381
359382describe ( 'a failed memberships fetch never reads as "pick from the switcher"' , ( ) => {
0 commit comments