diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DescriptionSuggestion.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DescriptionSuggestion.spec.ts index c714dbcc902..115ff19231b 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DescriptionSuggestion.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DescriptionSuggestion.spec.ts @@ -88,7 +88,7 @@ test.describe('Description Suggestions Table Entity', () => { // All Column Suggestions Card should be visible await expect( page.getByTestId('suggested-SuggestDescription-card') - ).toHaveCount(6); + ).toHaveCount(8); // Close the suggestions await page.getByTestId('close-suggestion').click(); @@ -116,7 +116,13 @@ test.describe('Description Suggestions Table Entity', () => { await singleResolveResponse; - await expect(page.locator('.ant-badge [title="5"]')).toBeVisible(); + await page.reload(); + await page.waitForLoadState('networkidle'); + await page.waitForSelector('[data-testid="loader"]', { + state: 'detached', + }); + + await expect(page.locator('.ant-badge [title="7"]')).toBeVisible(); await expect( page.locator( @@ -125,6 +131,43 @@ test.describe('Description Suggestions Table Entity', () => { ).toContainText('this is suggested data description'); }); + await test.step('Accept Nested Suggestion', async () => { + const allAvatarSuggestion = page + .getByTestId('asset-description-container') + .getByTestId('profile-avatar'); + + // Click the first avatar + await allAvatarSuggestion.nth(0).click(); + + const singleResolveResponse = page.waitForResponse( + '/api/v1/suggestions/*/accept' + ); + + await page + .locator( + `[data-row-key*=${table.columnsName[5]}] [data-testid="accept-suggestion"]` + ) + .click(); + + await singleResolveResponse; + + await page.reload(); + await page.waitForLoadState('networkidle'); + await page.waitForSelector('[data-testid="loader"]', { + state: 'detached', + }); + + await expect(page.locator('.ant-badge .ant-badge-count')).toContainText( + '6' + ); + + await expect( + page.locator( + `[data-row-key*=${table.columnsName[5]}] [data-testid="description"]` + ) + ).toContainText('this is suggested data description'); + }); + await test.step('Reject Single Suggestion', async () => { const allAvatarSuggestion = page .getByTestId('asset-description-container') @@ -145,7 +188,7 @@ test.describe('Description Suggestions Table Entity', () => { await singleResolveResponse; - await expect(page.locator('.ant-badge [title="4"]')).toBeVisible(); + await expect(page.locator('.ant-badge [title="5"]')).toBeVisible(); await expect( page.locator( diff --git a/openmetadata-ui/src/main/resources/ui/playwright/support/entity/TableClass.ts b/openmetadata-ui/src/main/resources/ui/playwright/support/entity/TableClass.ts index db518d37927..8a2bbf07957 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/support/entity/TableClass.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/support/entity/TableClass.ts @@ -60,6 +60,8 @@ export class TableClass extends EntityClass { `name${uuid()}`, `first_name${uuid()}`, `last_name${uuid()}`, + `address${uuid()}`, + `mail${uuid()}`, `email${uuid()}`, ]; entityLinkColumnsName = [ @@ -68,7 +70,9 @@ export class TableClass extends EntityClass { this.columnsName[2], `${this.columnsName[2]}.${this.columnsName[3]}`, `${this.columnsName[2]}.${this.columnsName[4]}`, - this.columnsName[5], + `${this.columnsName[2]}.${this.columnsName[4]}.${this.columnsName[5]}`, + `${this.columnsName[2]}.${this.columnsName[4]}.${this.columnsName[6]}`, + this.columnsName[7], ]; children = [ @@ -106,11 +110,27 @@ export class TableClass extends EntityClass { dataType: 'ARRAY', dataLength: 100, dataTypeDisplay: 'array>>', + children: [ + { + name: this.columnsName[5], + dataType: 'STRUCT', + dataLength: 100, + dataTypeDisplay: + 'struct', + description: 'First name of the staff member.', + }, + { + name: this.columnsName[6], + dataType: 'ARRAY', + dataLength: 100, + dataTypeDisplay: 'array>>', + }, + ], }, ], }, { - name: this.columnsName[5], + name: this.columnsName[7], dataType: 'VARCHAR', dataLength: 100, dataTypeDisplay: 'varchar',