diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DataAssetRulesDisabled.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DataAssetRulesDisabled.spec.ts index 60a0a7a305ea..56aae43746e5 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DataAssetRulesDisabled.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DataAssetRulesDisabled.spec.ts @@ -210,10 +210,13 @@ test.describe( { state: 'detached' } ); + const teamsSearchBar = page.getByTestId('owner-select-teams-search-bar'); + await teamsSearchBar.waitFor({ state: 'visible' }); + const searchUser = page.waitForResponse( `/api/v1/search/query?q=*${encodeURIComponent(teamName)}*` ); - await page.getByTestId(`owner-select-teams-search-bar`).fill(teamName); + await teamsSearchBar.fill(teamName); await searchUser; const ownerItem = page.getByRole('listitem', { @@ -266,8 +269,18 @@ test.describe( } // Add Multiple GlossaryTerm to Table - await assignGlossaryTerm(page, glossaryTerm.responseData); - await assignGlossaryTerm(page, glossaryTerm2.responseData, 'Edit'); + await assignGlossaryTerm( + page, + glossaryTerm.responseData, + 'Add', + entity.endpoint + ); + await assignGlossaryTerm( + page, + glossaryTerm2.responseData, + 'Edit', + entity.endpoint + ); }); } } diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DataAssetRulesEnabled.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DataAssetRulesEnabled.spec.ts index 80807462d343..d396bae6034e 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DataAssetRulesEnabled.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DataAssetRulesEnabled.spec.ts @@ -201,8 +201,18 @@ test.describe( if (entityName === 'Table') { // Only glossaryTerm2.responseData data will be available due to single select type is enabled - await assignGlossaryTerm(page, glossaryTerm.responseData); - await assignGlossaryTerm(page, glossaryTerm2.responseData, 'Edit'); + await assignGlossaryTerm( + page, + glossaryTerm.responseData, + 'Add', + entity.endpoint + ); + await assignGlossaryTerm( + page, + glossaryTerm2.responseData, + 'Edit', + entity.endpoint + ); await expect( page diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DataContracts.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DataContracts.spec.ts index b4228dbbf660..5647985e49f9 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DataContracts.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DataContracts.spec.ts @@ -1115,7 +1115,12 @@ test.describe('Data Contracts', () => { 'KnowledgePanel.Tags', testTag.responseData.fullyQualifiedName ); - await assignGlossaryTerm(page, testGlossaryTerm.responseData); + await assignGlossaryTerm( + page, + testGlossaryTerm.responseData, + 'Add', + EntityTypeEndpoint.Table + ); await navigateToContractTab(page); @@ -1125,7 +1130,7 @@ test.describe('Data Contracts', () => { await page.reload(); - + await page.waitForSelector('[data-testid="loader"]', { state: 'detached', }); @@ -1288,7 +1293,12 @@ test.describe('Data Contracts', () => { 'KnowledgePanel.Tags', testTag.responseData.fullyQualifiedName ); - await assignGlossaryTerm(page, testGlossaryTerm.responseData); + await assignGlossaryTerm( + page, + testGlossaryTerm.responseData, + 'Add', + EntityTypeEndpoint.Table + ); await navigateToContractTab(page); @@ -1298,7 +1308,7 @@ test.describe('Data Contracts', () => { await page.reload(); - + await page.waitForSelector('[data-testid="loader"]', { state: 'detached', }); diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Domains.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Domains.spec.ts index a864203cd4fc..3b2652ecd737 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Domains.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Domains.spec.ts @@ -3310,11 +3310,16 @@ test.describe('Domain Tree View Functionality', () => { }); // Add only glossary term to domain (no tags) - await assignGlossaryTerm(page, { - displayName: testGlossaryTerm.data.displayName, - name: testGlossaryTerm.data.name, - fullyQualifiedName: testGlossaryTerm.responseData.fullyQualifiedName, - }); + await assignGlossaryTerm( + page, + { + displayName: testGlossaryTerm.data.displayName, + name: testGlossaryTerm.data.name, + fullyQualifiedName: testGlossaryTerm.responseData.fullyQualifiedName, + }, + 'Add', + EntityTypeEndpoint.Domain + ); await visitGlossaryPage(page, testGlossary.data.displayName); await selectActiveGlossaryTerm(page, testGlossaryTerm.data.displayName); diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Glossary.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Glossary.spec.ts index 0b7929758f6f..e160909b58b3 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Glossary.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Glossary.spec.ts @@ -1185,7 +1185,12 @@ test.describe('Glossary tests', () => { await glossary1.create(apiContext); await glossaryTerm1.create(apiContext); await table.visitEntityPage(page); - await assignGlossaryTerm(page, glossaryTerm1.responseData); + await assignGlossaryTerm( + page, + glossaryTerm1.responseData, + 'Add', + EntityTypeEndpoint.Table + ); await sidebarClick(page, SidebarItem.GLOSSARY); await selectActiveGlossary(page, glossary1.data.displayName); await goToAssetsTab(page, glossaryTerm1.data.displayName, 1); diff --git a/openmetadata-ui/src/main/resources/ui/playwright/support/entity/EntityClass.ts b/openmetadata-ui/src/main/resources/ui/playwright/support/entity/EntityClass.ts index 3d767c8de51a..17e3717ce63d 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/support/entity/EntityClass.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/support/entity/EntityClass.ts @@ -416,7 +416,7 @@ export class EntityClass { glossaryTerm2: GlossaryTerm['responseData'], entity?: EntityClass ) { - await assignGlossaryTerm(page, glossaryTerm1); + await assignGlossaryTerm(page, glossaryTerm1, 'Add', this.endpoint); if (entity) { await checkExploreSearchFilter( page, @@ -426,7 +426,7 @@ export class EntityClass { entity ); } - await assignGlossaryTerm(page, glossaryTerm2, 'Edit'); + await assignGlossaryTerm(page, glossaryTerm2, 'Edit', this.endpoint); await removeGlossaryTerm(page, [glossaryTerm1, glossaryTerm2]); await page diff --git a/openmetadata-ui/src/main/resources/ui/playwright/support/user/UserClass.ts b/openmetadata-ui/src/main/resources/ui/playwright/support/user/UserClass.ts index 5f4451428ced..49263b1a90e2 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/support/user/UserClass.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/support/user/UserClass.ts @@ -198,7 +198,10 @@ export class UserClass { } getUserDisplayName() { - return this.responseData.displayName; + return ( + this.responseData.displayName ?? + this.responseData.name + ); } async login( diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/entity.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/entity.ts index b4a0e3cc7e7f..dc5ffd00a622 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/entity.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/entity.ts @@ -352,7 +352,7 @@ export const addMultiOwner = async (data: { clearAll = true, } = data; const isMultipleOwners = Array.isArray(ownerNames); - const owners = isMultipleOwners ? ownerNames : [ownerNames]; + const owners = (isMultipleOwners ? ownerNames : [ownerNames]) await page.click(`[data-testid="${activatorBtnDataTestId}"]`); @@ -950,7 +950,8 @@ type GlossaryTermOption = { export const assignGlossaryTerm = async ( page: Page, glossaryTerm: GlossaryTermOption, - action: 'Add' | 'Edit' = 'Add' + action: 'Add' | 'Edit' = 'Add', + entityEndpoint?: string ) => { await page .getByTestId('KnowledgePanel.GlossaryTerms') @@ -978,11 +979,19 @@ export const assignGlossaryTerm = async ( page.getByTestId('custom-drop-down-menu').getByTestId('saveAssociatedTag') ).toBeEnabled(); + const patchRequest = entityEndpoint + ? page.waitForResponse(`/api/v1/${entityEndpoint}/*`) + : undefined; + await page .getByTestId('custom-drop-down-menu') .getByTestId('saveAssociatedTag') .click(); + if (patchRequest) { + await patchRequest; + } + await expect( page.getByTestId('custom-drop-down-menu').getByTestId('saveAssociatedTag') ).not.toBeVisible(); diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/importUtils.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/importUtils.ts index a74dae16ead0..007cd1189677 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/importUtils.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/importUtils.ts @@ -50,21 +50,16 @@ export const createGlossaryTermRowDetails = () => { }; export const fillTextInputDetails = async (page: Page, text: string) => { - await page.keyboard.press('Enter', { delay: 100 }); - - const isVisible = await page - .locator('.ant-layout-content') - .getByRole('textbox') - .isVisible(); - - if (!isVisible) { - await page.keyboard.press('Enter', { delay: 100 }); - } + const activeCell = page.locator(RDG_ACTIVE_CELL_SELECTOR); + await activeCell.click(); + await activeCell.press('Enter', { delay: 100 }); const textboxLocator = page .locator('.ant-layout-content') .getByRole('textbox'); + await expect(textboxLocator).toBeVisible(); + await textboxLocator.fill(text); await textboxLocator.press('Enter', { delay: 100 }); };