diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Policies.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Policies.spec.ts index 96562db2a89..ce353fb9c09 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Policies.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Policies.spec.ts @@ -372,6 +372,10 @@ test.describe('Policy page should work properly', () => { await page.reload(); + await page.waitForSelector('[data-testid="loader"]', { state: 'detached' }); + + await page.waitForLoadState('networkidle'); + await getElementWithPagination(page, policyLocator); await page.getByTestId('manage-button').click(); diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Roles.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Roles.spec.ts index 5fe4892e568..709dbf57c20 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Roles.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Roles.spec.ts @@ -301,6 +301,8 @@ test('Delete role action from manage button options', async ({ page }) => { await settingClick(page, GlobalSettingOptions.ROLES); + await page.waitForLoadState('networkidle'); + await getElementWithPagination(page, roleLocator); await page.getByTestId('manage-button').click(); diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/roles.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/roles.ts index d1aa3d716b4..e8a0e054e41 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/roles.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/roles.ts @@ -33,29 +33,23 @@ export const removePolicyFromRole = async ( export const getElementWithPagination = async ( page: Page, locator: Locator, - click = true + click = true, + maxPages = 15 ) => { - let hasNext = true; - - while (hasNext) { + for (let currentPage = 0; currentPage < maxPages; currentPage++) { + // Check if element is visible on current page if (await locator.isVisible()) { - click && (await locator.click()); + if (click) { + await locator.click(); + } - break; + return; } - const nextBtn = page.locator('[data-testid="next"]'); - await nextBtn.scrollIntoViewIfNeeded(); + const nextBtn = page.locator('[data-testid="next"]'); await nextBtn.waitFor({ state: 'visible' }); - hasNext = !(await nextBtn.getAttribute('disabled')); - - if (!hasNext) { - throw new Error('Element not found and no more pages to paginate.'); - } - await nextBtn.click(); - await page.waitForSelector('[data-testid="loader"]', { state: 'detached' }); } };