@@ -916,6 +916,7 @@ async function sidebarChecks() {
916916 successful : [ 'invitee@org-redesign.test' ] ,
917917 added : [ ] ,
918918 failed : [ { email : 'refused@org-redesign.test' , error : 'Seat limit reached' } ] ,
919+ invitations : [ ] ,
919920 } ,
920921 } )
921922 )
@@ -2118,7 +2119,7 @@ async function integrationChecks() {
21182119 ) . toBeVisible ( )
21192120 await expect ( panel . getByRole ( 'heading' , { name : / R e a d - o n l y t o o l s / } ) ) . toBeVisible ( )
21202121 await expect ( panel . getByRole ( 'heading' , { name : / W r i t e t o o l s / } ) ) . toBeVisible ( )
2121- const group = panel . getByRole ( 'radiogroup ' , { name : 'Write tools permission' } )
2122+ const group = panel . getByRole ( 'group ' , { name : 'Write tools permission' } )
21222123 await expect ( group . getByRole ( 'radio' , { name : 'Allow' , exact : true } ) ) . toBeDisabled ( )
21232124 await expect ( group . getByRole ( 'radio' , { name : 'Block' , exact : true } ) ) . toBeEnabled ( )
21242125 const saved = page . waitForRequest (
@@ -2852,13 +2853,22 @@ async function blastRadiusChecks() {
28522853 [ ]
28532854 )
28542855 } )
2855- }
2856+ } ,
2857+ // The workspace shell reads its inbox whatever the group's hideInboxTab says, as it does today.
2858+ { allow : [ / 4 0 3 G E T .* \/ i n b o x / ] }
28562859 )
28572860 await check ( 'the extension panel has no platform surface and reads no Home data' , async ( ) => {
28582861 await withSession (
28592862 MEMBER ,
28602863 async ( session ) => {
28612864 const { page } = session
2865+ // Opened outside the extension's frame, where a chrome-extension target has no meaning.
2866+ await page . addInitScript ( ( ) => {
2867+ const post = window . postMessage . bind ( window )
2868+ window . postMessage = ( ( message : unknown , target : string ) => {
2869+ if ( ! String ( target ) . startsWith ( 'chrome-extension://' ) ) post ( message , target )
2870+ } ) as typeof window . postMessage
2871+ } )
28622872 const consoleErrors : string [ ] = [ ]
28632873 page . on ( 'console' , ( message ) => {
28642874 if ( message . type ( ) === 'error' ) consoleErrors . push ( message . text ( ) )
@@ -3191,9 +3201,11 @@ async function walkOne(persona: Persona, viewport: Viewport, theme: Theme) {
31913201 const response = await page . goto ( url ( `${ root } /${ route . path } ` ) , { timeout : 60_000 } )
31923202 await session . settle ( )
31933203 const screenshot = `${ persona . key } __${ route . name } __${ viewport . name } __${ theme } .png`
3194- await fullPageScreenshot ( page , resolve ( artifactDirectory , screenshot ) , viewport ) . catch (
3195- ( error ) => failures . push ( `${ route . name } screenshot: ${ getErrorMessage ( error ) } ` )
3196- )
3204+ const path = resolve ( artifactDirectory , screenshot )
3205+ await fullPageScreenshot ( page , path , viewport )
3206+ // A client redirect can land after the page has settled.
3207+ . catch ( ( ) => session . settle ( ) . then ( ( ) => fullPageScreenshot ( page , path , viewport ) ) )
3208+ . catch ( ( error ) => failures . push ( `${ route . name } screenshot: ${ getErrorMessage ( error ) } ` ) )
31973209 const facts = await page . evaluate ( ( ) => ( {
31983210 dark : document . documentElement . classList . contains ( 'dark' ) ,
31993211 font : getComputedStyle ( document . body ) . fontFamily ,
0 commit comments