@@ -110,7 +110,9 @@ test('source authorization returns to its desktop screen and refreshes live', as
110110 const ok = attempts . get ( state ) === session && url . searchParams . has ( 'code' )
111111 attempts . delete ( state )
112112 if ( ok ) installed = true
113- redirect ( `/credential-groups/slack-complete?state=${ state } &ok=${ ok } ` )
113+ const reason =
114+ url . searchParams . get ( 'error' ) === 'session_expired' ? '&reason=signin_required' : ''
115+ redirect ( `/credential-groups/slack-complete?state=${ state } &ok=${ ok } ${ reason } ` )
114116 return
115117 }
116118 if (
@@ -224,7 +226,7 @@ test('source authorization returns to its desktop screen and refreshes live', as
224226 if ( path === '/provider' ) {
225227 const state = url . searchParams . get ( 'state' ) ?? ''
226228 response . end (
227- `<!doctype html><a href="/api/knowledge/slack/oauth/callback?state=${ state } &code=fixture">Authorize</a><a href="/api/knowledge/slack/oauth/callback?state=${ state } &error=denied">Cancel</a>`
229+ `<!doctype html><a href="/api/knowledge/slack/oauth/callback?state=${ state } &code=fixture">Authorize</a><a href="/api/knowledge/slack/oauth/callback?state=${ state } &error=denied">Cancel</a><a href="/api/knowledge/slack/oauth/callback?state= ${ state } &error=session_expired">Session expired</a> `
228230 )
229231 return
230232 }
@@ -389,6 +391,15 @@ test('source authorization returns to its desktop screen and refreshes live', as
389391 await expect ( page . getByLabel ( 'Enrollment error' ) ) . toHaveText ( '' )
390392 expect ( page . url ( ) ) . toBe ( `${ origin } /home` )
391393 } )
394+ await check ( 'browser sign-in failures retain recovery guidance on desktop' , async ( ) => {
395+ await page . getByRole ( 'button' , { name : 'Connect Slack' } ) . click ( )
396+ await expect . poll ( async ( ) => ( await opened ( ) ) . length ) . toBe ( 8 )
397+ await external . goto ( ( await opened ( ) ) [ 7 ] )
398+ await external . getByRole ( 'link' , { name : 'Session expired' } ) . click ( )
399+ await expect ( page . getByLabel ( 'Connection' ) ) . toHaveText ( 'error' )
400+ await expect ( page . getByRole ( 'alert' ) ) . toContainText ( 'Sign in to Sim in your browser' )
401+ expect ( page . url ( ) ) . toBe ( `${ origin } /home` )
402+ } )
392403 await page . screenshot ( { path : test . info ( ) . outputPath ( 'source-connect-desktop.png' ) } )
393404 } finally {
394405 mkdirSync ( dirname ( reportPath ) , { recursive : true } )
0 commit comments