From 5eac75ebd10bb1fd94f94dd49c623365bd920e4b Mon Sep 17 00:00:00 2001 From: Harsh Vador Date: Tue, 14 Apr 2026 13:05:43 +0530 Subject: [PATCH 1/3] fix(playwright): replace flaky toast assertion with search-based deletion verification in teams & teams drag drop spec --- .../ui/playwright/e2e/Features/TeamsDragAndDrop.spec.ts | 2 +- .../main/resources/ui/playwright/e2e/Pages/Teams.spec.ts | 8 ++++---- .../src/main/resources/ui/playwright/utils/team.ts | 9 ++++----- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/TeamsDragAndDrop.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/TeamsDragAndDrop.spec.ts index 65c3c0406cbd..2dfc2602c001 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/TeamsDragAndDrop.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/TeamsDragAndDrop.spec.ts @@ -216,7 +216,7 @@ test.describe( await waitForAllLoadersToDisappear(page); - await hardDeleteTeam(page); + await hardDeleteTeam(page, teamName); // Validate the deleted team await expect( diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Teams.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Teams.spec.ts index cdfdcfaf3252..a99aea61b4c3 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Teams.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Teams.spec.ts @@ -355,7 +355,7 @@ test.describe('Teams Page', () => { }); await test.step('Soft Delete Team', async () => { - await softDeleteTeam(page); + await softDeleteTeam(page, teamDetails?.name ?? ''); await page.goto('/settings/members/teams', { waitUntil: 'domcontentloaded', @@ -387,7 +387,7 @@ test.describe('Teams Page', () => { teamDetails?.updatedName ?? '' ); - await hardDeleteTeam(page); + await hardDeleteTeam(page, teamDetails?.name ?? ''); }); }); @@ -501,7 +501,7 @@ test.describe('Teams Page', () => { team.responseData?.['displayName'] ); - await hardDeleteTeam(page); + await hardDeleteTeam(page, team.responseData?.['displayName'] ?? ''); await afterAction(); }); @@ -765,7 +765,7 @@ test.describe('Teams Page', () => { page.getByTestId('team-hierarchy-table').getByRole('link') ).toContainText(team2Details.displayName); - await hardDeleteTeam(page); + await hardDeleteTeam(page, team1Details.displayName); }); test('Total User Count should be rendered', async ({ page }) => { diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/team.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/team.ts index 40b0701d268e..ca966a8fab0d 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/team.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/team.ts @@ -21,7 +21,6 @@ import { assignDomain, descriptionBox, redirectToHomePage, - toastNotification, uuid, } from './common'; import { @@ -113,7 +112,7 @@ export const createTeam = async ( }; }; -export const softDeleteTeam = async (page: Page) => { +export const softDeleteTeam = async (page: Page, teamName: string) => { await page .getByTestId('team-details-collapse') .getByTestId('manage-button') @@ -135,10 +134,10 @@ export const softDeleteTeam = async (page: Page) => { await deleteResponse; - await toastNotification(page, /deleted successfully!/); + await searchTeam(page, teamName, { expectEmptyResults: true }); }; -export const hardDeleteTeam = async (page: Page) => { +export const hardDeleteTeam = async (page: Page, teamName: string) => { await page .getByTestId('team-details-collapse') .getByTestId('manage-button') @@ -161,7 +160,7 @@ export const hardDeleteTeam = async (page: Page) => { await deleteResponse; - await toastNotification(page, /deleted successfully!/); + await searchTeam(page, teamName, { expectEmptyResults: true }); }; export const getNewTeamDetails = (teamName: string) => { From 54de5604df3d54d49eea45fa3778a3232c816aa4 Mon Sep 17 00:00:00 2001 From: Harsh Vador Date: Tue, 14 Apr 2026 13:11:24 +0530 Subject: [PATCH 2/3] address gitar --- .../src/main/resources/ui/playwright/e2e/Pages/Teams.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Teams.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Teams.spec.ts index a99aea61b4c3..1240595d4793 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Teams.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Teams.spec.ts @@ -355,7 +355,7 @@ test.describe('Teams Page', () => { }); await test.step('Soft Delete Team', async () => { - await softDeleteTeam(page, teamDetails?.name ?? ''); + await softDeleteTeam(page, teamDetails?.displayName ?? ''); await page.goto('/settings/members/teams', { waitUntil: 'domcontentloaded', @@ -387,7 +387,7 @@ test.describe('Teams Page', () => { teamDetails?.updatedName ?? '' ); - await hardDeleteTeam(page, teamDetails?.name ?? ''); + await hardDeleteTeam(page, teamDetails?.updatedName ?? ''); }); }); From 3725b495b3887350331ec90e346b0c37d1e26d8d Mon Sep 17 00:00:00 2001 From: Harsh Vador Date: Tue, 14 Apr 2026 15:53:12 +0530 Subject: [PATCH 3/3] address comments --- .../resources/ui/playwright/e2e/Pages/Teams.spec.ts | 11 +++++++---- .../src/main/resources/ui/playwright/utils/team.ts | 10 +++++----- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Teams.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Teams.spec.ts index 1240595d4793..42373156ced0 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Teams.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Teams.spec.ts @@ -355,7 +355,7 @@ test.describe('Teams Page', () => { }); await test.step('Soft Delete Team', async () => { - await softDeleteTeam(page, teamDetails?.displayName ?? ''); + await softDeleteTeam(page); await page.goto('/settings/members/teams', { waitUntil: 'domcontentloaded', @@ -387,7 +387,7 @@ test.describe('Teams Page', () => { teamDetails?.updatedName ?? '' ); - await hardDeleteTeam(page, teamDetails?.updatedName ?? ''); + await hardDeleteTeam(page, teamDetails?.updatedName ?? teamDetails.name); }); }); @@ -501,7 +501,10 @@ test.describe('Teams Page', () => { team.responseData?.['displayName'] ); - await hardDeleteTeam(page, team.responseData?.['displayName'] ?? ''); + await hardDeleteTeam( + page, + team.responseData?.['displayName'] ?? team.data.name + ); await afterAction(); }); @@ -765,7 +768,7 @@ test.describe('Teams Page', () => { page.getByTestId('team-hierarchy-table').getByRole('link') ).toContainText(team2Details.displayName); - await hardDeleteTeam(page, team1Details.displayName); + await hardDeleteTeam(page, team1Details.name); }); test('Total User Count should be rendered', async ({ page }) => { diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/team.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/team.ts index ca966a8fab0d..ff5069814fe5 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/team.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/team.ts @@ -112,7 +112,7 @@ export const createTeam = async ( }; }; -export const softDeleteTeam = async (page: Page, teamName: string) => { +export const softDeleteTeam = async (page: Page) => { await page .getByTestId('team-details-collapse') .getByTestId('manage-button') @@ -132,9 +132,8 @@ export const softDeleteTeam = async (page: Page, teamName: string) => { await page.click('[data-testid="confirm-button"]'); - await deleteResponse; - - await searchTeam(page, teamName, { expectEmptyResults: true }); + const response = await deleteResponse; + expect(response.status()).toBe(200); }; export const hardDeleteTeam = async (page: Page, teamName: string) => { @@ -158,7 +157,8 @@ export const hardDeleteTeam = async (page: Page, teamName: string) => { await page.click('[data-testid="confirm-button"]'); - await deleteResponse; + const response = await deleteResponse; + expect(response.status()).toBe(200); await searchTeam(page, teamName, { expectEmptyResults: true }); };