@@ -59,8 +59,9 @@ for (const shared of [true, false]) {
5959 await page . goto ( `/server/${ base64Encode ( server ) } /session/${ sessionID } ` )
6060 await expectSessionTitle ( page , title )
6161 await expect ( page . getByRole ( "textbox" , { name : "Prompt" , exact : true } ) ) . toBeEditable ( )
62- await page . keyboard . press ( "ControlOrMeta+;" )
63- const dialog = page . getByRole ( "dialog" , { name : "MCPs" , exact : true } )
62+ await page . getByRole ( "button" , { name : "Session details" , exact : true } ) . click ( )
63+ await page . getByRole ( "button" , { name : "MCP" , exact : true } ) . click ( )
64+ const dialog = page . getByRole ( "dialog" , { name : "MCP" , exact : true } )
6465 await expect ( dialog . getByText ( "figma-desktop" , { exact : true } ) ) . toBeVisible ( )
6566 const toggle = dialog . getByRole ( "switch" )
6667 await expect ( toggle ) . not . toBeChecked ( )
@@ -92,7 +93,7 @@ for (const surface of ["popover", "dialog"] as const) {
9293 const state = { fail : true , status : surface === "popover" ? "failed" : "disabled" }
9394 const requests : { path : string ; directory : string } [ ] = [ ]
9495 await page . addInitScript ( ( ) => {
95- localStorage . setItem ( "settings.v3" , JSON . stringify ( { general : { showStatus : true } } ) )
96+ localStorage . setItem ( "settings.v3" , JSON . stringify ( { keybinds : { "mcp.toggle" : "ctrl+;" } } ) )
9697 } )
9798 await mockOpenCodeServer ( page , {
9899 directory,
@@ -113,6 +114,10 @@ for (const surface of ["popover", "dialog"] as const) {
113114 const url = new URL ( route . request ( ) . url ( ) )
114115 const target = url . searchParams . get ( "location[directory]" ) ?? directory
115116 requests . push ( { path : url . pathname , directory : target } )
117+ if ( url . pathname === "/api/mcp/figma-desktop/disconnect" ) {
118+ state . status = "disabled"
119+ return route . fulfill ( { status : 204 } )
120+ }
116121 if ( url . pathname === "/api/mcp/figma-desktop/connect" ) {
117122 state . status = state . fail ? "failed" : "connected"
118123 // Connection failures are reported by the refreshed status, not the HTTP response.
@@ -137,12 +142,19 @@ for (const surface of ["popover", "dialog"] as const) {
137142 await page . goto ( `/server/${ base64Encode ( server ) } /session/${ sessionID } ` )
138143 await expectSessionTitle ( page , title )
139144 await expect ( page . getByRole ( "textbox" , { name : "Prompt" , exact : true } ) ) . toBeEditable ( )
140- if ( surface === "popover" ) await page . getByRole ( "button" , { name : "Status" , exact : true } ) . click ( )
141- if ( surface === "dialog" ) await page . keyboard . press ( "ControlOrMeta+;" )
142- const panel =
143- surface === "popover" ? page . getByRole ( "tabpanel" ) : page . getByRole ( "dialog" , { name : "MCPs" , exact : true } )
145+ if ( surface === "popover" ) {
146+ await page . getByRole ( "button" , { name : "Session details" , exact : true } ) . click ( )
147+ await page . getByRole ( "button" , { name : "MCP" , exact : true } ) . click ( )
148+ }
149+ if ( surface === "dialog" ) await page . keyboard . press ( "Control+;" )
150+ const panel = page . getByRole ( "dialog" , { name : surface === "popover" ? "MCP" : "MCPs" , exact : true } )
144151 const toggle = panel . getByRole ( "switch" )
145152 await expect ( panel . getByText ( "figma-desktop" , { exact : true } ) ) . toBeVisible ( )
153+ await expect ( toggle ) . toBeEnabled ( )
154+ if ( surface === "popover" ) {
155+ await expect ( toggle ) . toBeChecked ( )
156+ await panel . getByText ( "figma-desktop" , { exact : true } ) . click ( )
157+ }
146158 await expect ( toggle ) . not . toBeChecked ( )
147159 await expect ( toggle ) . toBeEnabled ( )
148160 requests . length = 0
@@ -152,7 +164,7 @@ for (const surface of ["popover", "dialog"] as const) {
152164 . getByRole ( "listitem" , { includeHidden : true } )
153165 . filter ( { has : page . getByText ( "Request failed" , { exact : true } ) } )
154166 await expect ( toast . getByText ( `figma-desktop: ${ error } ` , { exact : true } ) ) . toBeVisible ( )
155- await expect ( toggle ) . not . toBeChecked ( )
167+ await expect ( toggle ) . toBeChecked ( { checked : surface === "popover" } )
156168 await expect ( toggle ) . toBeEnabled ( )
157169 expect ( requests . filter ( ( request ) => request . path . endsWith ( "/connect" ) ) ) . toEqual ( [
158170 { path : "/api/mcp/figma-desktop/connect" , directory : workspace } ,
@@ -167,9 +179,18 @@ for (const surface of ["popover", "dialog"] as const) {
167179 await toast . getByRole ( "button" , { name : "Dismiss" , exact : true } ) . click ( )
168180 await expect ( toast ) . toBeHidden ( )
169181 state . fail = false
170- if ( surface === "popover" ) await page . getByRole ( "button" , { name : "Status" , exact : true } ) . click ( )
171- if ( surface === "dialog" ) await page . keyboard . press ( "ControlOrMeta+;" )
182+ if ( surface === "popover" ) {
183+ await expect ( page . getByRole ( "dialog" , { name : "Session details" , exact : true } ) ) . toBeHidden ( )
184+ await page . getByRole ( "button" , { name : "Session details" , exact : true } ) . click ( )
185+ await page . getByRole ( "button" , { name : "MCP" , exact : true } ) . click ( )
186+ }
187+ if ( surface === "dialog" ) await page . keyboard . press ( "Control+;" )
172188 await expect ( toggle ) . toBeEnabled ( )
189+ if ( surface === "popover" ) {
190+ await panel . getByText ( "figma-desktop" , { exact : true } ) . click ( )
191+ await expect ( toggle ) . not . toBeChecked ( )
192+ await expect ( toggle ) . toBeEnabled ( )
193+ }
173194 await panel . locator ( '[data-slot="switch-control"]' ) . click ( )
174195 await expect ( toggle ) . toBeChecked ( )
175196 await expect ( toggle ) . toBeEnabled ( )
0 commit comments