@@ -103,10 +103,45 @@ const removeSavedGitHubToken = async (page: Page) => {
103103 await expect ( dialog ) . not . toHaveAttribute ( 'open' , '' )
104104}
105105
106+ const openStoredWorkspaceContextById = async ( page : Page , workspaceId : string ) => {
107+ const select = page . getByLabel ( 'Stored local editor contexts' )
108+ const openButton = page . locator ( '#workspaces-open' )
109+
110+ if ( ! ( await select . isVisible ( ) ) ) {
111+ await page . getByRole ( 'button' , { name : 'Workspaces' } ) . click ( )
112+ }
113+
114+ await expect ( select ) . toBeVisible ( )
115+
116+ await expect
117+ . poll ( async ( ) => {
118+ return select . evaluate (
119+ ( element , id ) =>
120+ element instanceof HTMLSelectElement &&
121+ Array . from ( element . options ) . some ( option => option . value === id ) ,
122+ workspaceId ,
123+ )
124+ } )
125+ . toBe ( true )
126+
127+ await expect
128+ . poll ( async ( ) => {
129+ await select . selectOption ( workspaceId )
130+ const selectedValue = await select . inputValue ( )
131+ return selectedValue === workspaceId && ( await openButton . isEnabled ( ) )
132+ } )
133+ . toBe ( true )
134+
135+ await openButton . click ( )
136+ }
137+
106138const openMostRecentStoredWorkspaceContext = async ( page : Page ) => {
107- await page . getByRole ( 'button' , { name : 'Workspaces' } ) . click ( )
139+ const select = page . getByLabel ( 'Stored local editor contexts' )
140+
141+ if ( ! ( await select . isVisible ( ) ) ) {
142+ await page . getByRole ( 'button' , { name : 'Workspaces' } ) . click ( )
143+ }
108144
109- const select = page . locator ( '#workspaces-select' )
110145 await expect ( select ) . toBeVisible ( )
111146
112147 const firstContextId = await select . evaluate ( element => {
@@ -119,20 +154,7 @@ const openMostRecentStoredWorkspaceContext = async (page: Page) => {
119154 } )
120155
121156 expect ( firstContextId ) . not . toBe ( '' )
122- await select . selectOption ( firstContextId )
123- await page . locator ( '#workspaces-open' ) . click ( )
124- }
125-
126- const openStoredWorkspaceContextById = async ( page : Page , workspaceId : string ) => {
127- const select = page . locator ( '#workspaces-select' )
128-
129- if ( ! ( await select . isVisible ( ) ) ) {
130- await page . locator ( '#workspaces-toggle' ) . click ( )
131- }
132-
133- await expect ( select ) . toBeVisible ( )
134- await select . selectOption ( workspaceId )
135- await page . locator ( '#workspaces-open' ) . click ( )
157+ await openStoredWorkspaceContextById ( page , firstContextId )
136158}
137159
138160const seedLocalWorkspaceContexts = async (
@@ -1035,9 +1057,7 @@ for (const prContextState of ['inactive', 'disconnected', 'closed'] as const) {
10351057 . fill ( 'github_pat_fake_chat_1234567890' )
10361058 await page . getByRole ( 'button' , { name : 'Add GitHub token' } ) . click ( )
10371059
1038- await page . getByRole ( 'button' , { name : 'Workspaces' } ) . click ( )
1039- await page . locator ( '#workspaces-select' ) . selectOption ( workspaceId )
1040- await page . locator ( '#workspaces-open' ) . click ( )
1060+ await openStoredWorkspaceContextById ( page , workspaceId )
10411061
10421062 await ensureOpenPrDrawerOpen ( page )
10431063 await expect ( page . getByLabel ( 'Pull request repository' ) ) . toHaveValue ( sourceRepository )
@@ -1228,9 +1248,7 @@ test('Open PR keeps inactive workspace record when repository changes', async ({
12281248 const repoSelect = page . getByLabel ( 'Pull request repository' )
12291249 await expect ( repoSelect ) . toHaveValue ( oldRepository )
12301250
1231- await page . getByRole ( 'button' , { name : 'Workspaces' } ) . click ( )
1232- await page . locator ( '#workspaces-select' ) . selectOption ( oldWorkspaceId )
1233- await page . locator ( '#workspaces-open' ) . click ( )
1251+ await openStoredWorkspaceContextById ( page , oldWorkspaceId )
12341252
12351253 await ensureOpenPrDrawerOpen ( page )
12361254 await repoSelect . selectOption ( newRepository )
0 commit comments