Skip to content

Commit 44a8c35

Browse files
test: fix webkit failures.
1 parent cc9e172 commit 44a8c35

1 file changed

Lines changed: 40 additions & 22 deletions

File tree

playwright/github-pr-drawer.spec.ts

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
106138
const 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

138160
const 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

Comments
 (0)