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 a68e25aa363f..fbadd237db9f 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 @@ -81,20 +81,12 @@ import { selectActiveGlossaryTerm } from '../../utils/glossary'; import { sidebarClick } from '../../utils/sidebar'; import { selectTagInTagSuggestion } from '../../utils/tag'; import { performUserLogin, visitUserProfilePage } from '../../utils/user'; -const user = new UserClass(); - -const domain = new Domain(); - -const classification = new ClassificationClass({ - provider: 'system', - mutuallyExclusive: true, -}); -const tag = new TagClass({ - classification: classification.data.name, -}); - -const glossary = new Glossary(); -const glossaryTerm = new GlossaryTerm(glossary); +let user: UserClass; +let domain: Domain; +let classification: ClassificationClass; +let tag: TagClass; +let glossary: Glossary; +let glossaryTerm: GlossaryTerm; const test = base.extend<{ page: Page; @@ -119,6 +111,16 @@ test.describe('Domains', () => { test.beforeAll('Setup pre-requests', async ({ browser }) => { test.slow(true); + user = new UserClass(); + domain = new Domain(); + classification = new ClassificationClass({ + provider: 'system', + mutuallyExclusive: true, + }); + tag = new TagClass({ classification: classification.data.name }); + glossary = new Glossary(); + glossaryTerm = new GlossaryTerm(glossary); + const { apiContext, afterAction } = await performAdminLogin(browser); await user.create(apiContext); await classification.create(apiContext); @@ -2669,12 +2671,16 @@ test.describe('Domain Rename Comprehensive Tests', () => { test.describe('Domains Rbac', () => { test.slow(true); - const domain1 = new Domain(); - const domain2 = new Domain(); - const domain3 = new Domain(); - const user1 = new UserClass(); + let domain1: Domain; + let domain2: Domain; + let domain3: Domain; + let user1: UserClass; test.beforeAll('Setup pre-requests', async ({ browser }) => { + domain1 = new Domain(); + domain2 = new Domain(); + domain3 = new Domain(); + user1 = new UserClass(); test.slow(); const { apiContext, afterAction, page } = await performAdminLogin(browser); @@ -2815,15 +2821,10 @@ test.describe('Domains Rbac', () => { test.describe('Data Consumer Domain Ownership', () => { test.slow(true); - const classification = new ClassificationClass({ - provider: 'system', - mutuallyExclusive: true, - }); - const tag = new TagClass({ - classification: classification.data.name, - }); - const glossary = new Glossary(); - const glossaryTerm = new GlossaryTerm(glossary); + let classification: ClassificationClass; + let tag: TagClass; + let glossary: Glossary; + let glossaryTerm: GlossaryTerm; let testResources: { dataConsumerUser: UserClass; @@ -2833,6 +2834,14 @@ test.describe('Data Consumer Domain Ownership', () => { }; test.beforeAll('Setup pre-requests', async ({ browser }) => { + classification = new ClassificationClass({ + provider: 'system', + mutuallyExclusive: true, + }); + tag = new TagClass({ classification: classification.data.name }); + glossary = new Glossary(); + glossaryTerm = new GlossaryTerm(glossary); + const { apiContext, afterAction } = await performAdminLogin(browser); await classification.create(apiContext); await tag.create(apiContext); 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 8bc26779008b..6580d858f6d8 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 @@ -532,9 +532,9 @@ test.describe('Glossary tests', () => { const glossaryRequest = page.waitForResponse( `/api/v1/search/query?q=*&index=glossaryTerm&from=0&size=25&deleted=false&track_total_hits=true&getHierarchy=true` ); - await page.type( + await page.fill( '[data-testid="tag-selector"] #tagsForm_tags', - glossaryTerm1.data.name + glossary1.data.name ); await glossaryRequest; @@ -551,9 +551,9 @@ test.describe('Glossary tests', () => { const glossaryRequest2 = page.waitForResponse( `/api/v1/search/query?q=*&index=glossaryTerm&from=0&size=25&deleted=false&track_total_hits=true&getHierarchy=true` ); - await page.type( + await page.fill( '[data-testid="tag-selector"] #tagsForm_tags', - glossaryTerm2.data.name + glossary1.data.name ); await glossaryRequest2; @@ -578,7 +578,7 @@ test.describe('Glossary tests', () => { // Add non mutually exclusive tags await page.click( - '[data-testid="KnowledgePanel.GlossaryTerms"] [data-testid="glossary-container"] [data-testid="add-tag"]' + '[data-testid="KnowledgePanel.GlossaryTerms"] [data-testid="glossary-container"] [data-testid="edit-button"]' ); // Select 1st term @@ -587,9 +587,9 @@ test.describe('Glossary tests', () => { const glossaryRequest3 = page.waitForResponse( `/api/v1/search/query?q=*&index=glossaryTerm&from=0&size=25&deleted=false&track_total_hits=true&getHierarchy=true` ); - await page.type( + await page.fill( '[data-testid="tag-selector"] #tagsForm_tags', - glossaryTerm3.data.name + glossary2.data.name ); await glossaryRequest3; @@ -606,9 +606,9 @@ test.describe('Glossary tests', () => { const glossaryRequest4 = page.waitForResponse( `/api/v1/search/query?q=*&index=glossaryTerm&from=0&size=25&deleted=false&track_total_hits=true&getHierarchy=true` ); - await page.type( + await page.fill( '[data-testid="tag-selector"] #tagsForm_tags', - glossaryTerm4.data.name + glossary2.data.name ); await glossaryRequest4; @@ -648,7 +648,7 @@ test.describe('Glossary tests', () => { '[data-testid="KnowledgePanel.GlossaryTerms"] [data-testid="glossary-container"] [data-testid="glossary-icon"]' ); - expect(await icons.count()).toBe(2); + expect(await icons.count()).toBe(3); // Add Glossary to Dashboard Charts await page.click( @@ -660,7 +660,7 @@ test.describe('Glossary tests', () => { const glossaryRequest5 = page.waitForResponse( `/api/v1/search/query?q=*&index=glossaryTerm&from=0&size=25&deleted=false&track_total_hits=true&getHierarchy=true` ); - await page.type( + await page.fill( '[data-testid="tag-selector"] #tagsForm_tags', glossaryTerm3.data.name ); diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Users.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Users.spec.ts index a1becb2c0e08..14aa7d554f6d 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Users.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Users.spec.ts @@ -33,6 +33,7 @@ import { TeamClass } from '../../support/team/TeamClass'; import { UserClass } from '../../support/user/UserClass'; import { createAdminApiContext, performAdminLogin } from '../../utils/admin'; import { + getApiContext, redirectToHomePage, toastNotification, uuid, diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/domain.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/domain.ts index b18b64ef0b1d..d967e1269b40 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/domain.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/domain.ts @@ -1644,34 +1644,43 @@ export const selectDomainFromNavbar = async ( page: Page, domain: Domain['responseData'] ) => { - await page.getByTestId('domain-dropdown').click(); + const domainDropdown = page.getByTestId('domain-dropdown'); const domainTree = page.getByTestId('domain-selectable-tree'); - await domainTree.waitFor({ - state: 'visible', - }); - const searchBar = domainTree.getByTestId('searchbar'); const searchTerm = domain.displayName ?? domain.name; const domainOption = page.getByTestId(`tag-${domain.fullyQualifiedName}`); + const openDropdown = async () => { + await domainDropdown.click(); + await domainTree.waitFor({ state: 'visible' }); + }; + + await openDropdown(); + + const searchBar = domainTree.locator('input[placeholder]').first(); + await expect .poll( async () => { if (!(await domainTree.isVisible().catch(() => false))) { - await page.getByTestId('domain-dropdown').click(); - await domainTree.waitFor({ state: 'visible' }); + await openDropdown(); } - await searchBar.fill(''); - await searchBar.fill(searchTerm); + const isSearchBarVisible = await searchBar + .isVisible() + .catch(() => false); + + if (isSearchBarVisible) { + await searchBar.focus(); + await searchBar.press('Control+a'); + await searchBar.pressSequentially(searchTerm); + } return await domainOption.isVisible().catch(() => false); }, { timeout: 60000, intervals: [1000, 2000, 5000], - message: `Timed out waiting for domain ${ - domain.displayName ?? domain.name - } to appear in navbar selector`, + message: `Timed out waiting for domain ${searchTerm} to appear in navbar selector`, } ) .toBe(true); diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/searchSettingUtils.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/searchSettingUtils.ts index 055903820850..db4460ddc6c5 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/searchSettingUtils.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/searchSettingUtils.ts @@ -29,6 +29,7 @@ export const mockEntitySearchConfig = { assetType: 'table', searchFields: [ { field: 'displayName.keyword', boost: 20, matchType: 'exact' }, + { field: 'name.keyword', boost: 20, matchType: 'exact' }, { field: 'name', boost: 10, matchType: 'phrase' }, { field: 'name.ngram', boost: 1, matchType: 'fuzzy' }, { field: 'name.compound', boost: 8, matchType: 'standard' },