Skip to content

Commit 454ffc9

Browse files
committed
chore: fix e2e tests
1 parent 0f2db38 commit 454ffc9

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

tests/spec/project.spec.ts

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,16 @@ async function getCodeMirrorValue(editor: Locator) {
3838
});
3939
}
4040

41+
async function openDropdownMenu(page: Page, trigger: Locator) {
42+
await expect(trigger).toBeVisible();
43+
await trigger.click();
44+
45+
const menu = page.locator('[data-slot="dropdown-menu-content"]:visible').last();
46+
await expect(menu).toBeVisible();
47+
48+
return menu;
49+
}
50+
4151
function getPathname(url: string): string {
4252
return url.replace(/^[a-z]+:\/\/[^/]+/i, '').split(/[?#]/)[0] || '/';
4353
}
@@ -116,8 +126,8 @@ async function destroyProjectByNameViaUI(page: Page, projectName: string) {
116126
return;
117127
}
118128

119-
await row.getByRole('button', { name: 'Open menu' }).click();
120-
await page.getByRole('menuitem', { name: 'Destroy', exact: true }).click();
129+
const menu = await openDropdownMenu(page, row.getByRole('button', { name: 'Open menu' }));
130+
await menu.getByRole('menuitem', { name: 'Destroy', exact: true }).click();
121131

122132
const dialog = page.getByRole('dialog');
123133
await expect(dialog).toBeVisible();
@@ -180,23 +190,21 @@ test.describe('Projects Page', () => {
180190

181191
await page.waitForLoadState('networkidle');
182192
const firstRow = page.locator('tbody tr').first();
183-
const menuButton = firstRow.getByRole('button', { name: 'Open menu' });
184-
await expect(menuButton).toBeVisible();
185-
await menuButton.click();
193+
const menu = await openDropdownMenu(page, firstRow.getByRole('button', { name: 'Open menu' }));
186194

187-
await expect(page.getByRole('menuitem', { name: 'Edit' })).toBeVisible();
195+
await expect(menu.getByRole('menuitem', { name: 'Edit' })).toBeVisible();
188196
// Check for at least one of the state action buttons (Up/Down/Restart)
189-
const upItem = page.getByRole('menuitem', { name: 'Up', exact: true });
190-
const downItem = page.getByRole('menuitem', { name: 'Down', exact: true });
191-
const restartItem = page.getByRole('menuitem', {
197+
const upItem = menu.getByRole('menuitem', { name: 'Up', exact: true });
198+
const downItem = menu.getByRole('menuitem', { name: 'Down', exact: true });
199+
const restartItem = menu.getByRole('menuitem', {
192200
name: 'Restart',
193201
exact: true
194202
});
195203
const hasStateAction =
196204
(await upItem.count()) > 0 || (await downItem.count()) > 0 || (await restartItem.count()) > 0;
197205
expect(hasStateAction).toBe(true);
198-
await expect(page.getByRole('menuitem', { name: 'Pull & Redeploy' })).toBeVisible();
199-
await expect(page.getByRole('menuitem', { name: 'Destroy' })).toBeVisible();
206+
await expect(menu.getByRole('menuitem', { name: 'Pull & Redeploy' })).toBeVisible();
207+
await expect(menu.getByRole('menuitem', { name: 'Destroy' })).toBeVisible();
200208
});
201209

202210
test('should navigate to project details when project name is clicked', async ({ page }) => {
@@ -580,14 +588,22 @@ test.describe('New Compose Project Page', () => {
580588

581589
const searchInput = page.getByPlaceholder('Search…');
582590
await expect(searchInput).toBeVisible();
591+
const filteredProjectsResponse = page.waitForResponse((response) => {
592+
if (response.request().method() !== 'GET') return false;
593+
return (
594+
/\/api\/environments\/[^/]+\/projects(?:\?|$)/.test(response.url()) &&
595+
response.url().includes(`search=${projectName}`)
596+
);
597+
});
583598
await searchInput.fill(projectName);
599+
await filteredProjectsResponse;
584600

585601
const row = page.locator('tbody tr').filter({ hasText: projectName }).first();
586602
await expect(row).toBeVisible();
587-
await row.getByRole('button', { name: 'Open menu' }).click();
588-
const redeployMenuItem = page.getByRole('menuitem', { name: 'Pull & Redeploy' }).first();
603+
const menu = await openDropdownMenu(page, row.getByRole('button', { name: 'Open menu' }));
604+
const redeployMenuItem = menu.getByRole('menuitem', { name: 'Pull & Redeploy' });
589605
await expect(redeployMenuItem).toBeVisible();
590-
await redeployMenuItem.click({ force: true });
606+
await redeployMenuItem.click();
591607

592608
await expect
593609
.poll(() => redeployRequestStartedAt, {

0 commit comments

Comments
 (0)