Skip to content

Commit 4ff3b5b

Browse files
committed
fix(e2e): fix SchemaTable test timeout and add proper API awaits on page navigation (#27639)
* fix(e2e): fix SchemaTable test timeout and add proper API awaits on page navigation * prettier fix
1 parent de4cd1f commit 4ff3b5b

1 file changed

Lines changed: 51 additions & 33 deletions

File tree

openmetadata-ui/src/main/resources/ui/playwright/e2e/Flow/SchemaTable.spec.ts

Lines changed: 51 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -142,46 +142,17 @@ test('schema table test', async ({ dataStewardPage, ownerPage, page }) => {
142142
await redirectToHomePage(currentPage);
143143

144144
await table.visitEntityPage(currentPage);
145-
await waitForAllLoadersToDisappear(page);
145+
await waitForAllLoadersToDisappear(currentPage);
146146
await crudColumnDisplayName(
147147
currentPage,
148-
columnFqn,
148+
columnFqn || '',
149149
columnName,
150150
'data-row-key'
151151
);
152152
}
153153
});
154154
});
155155

156-
test('Schema Table Pagination should work Properly', async ({ page }) => {
157-
const tableResponse = page.waitForResponse(`/api/v1/tables?limit=15**`);
158-
159-
await page.goto('/databaseSchema/sample_data.ecommerce_db.shopify');
160-
await tableResponse;
161-
162-
await expect(page.getByTestId('page-size-selection-dropdown')).toHaveText(
163-
'15 / Page'
164-
);
165-
166-
await expect(page.getByTestId('previous')).toBeDisabled();
167-
168-
await expect(page.getByTestId('next')).not.toBeDisabled();
169-
170-
const tableResponse2 = page.waitForResponse(`/api/v1/tables?**limit=15**`);
171-
await page.getByTestId('next').click();
172-
await tableResponse2;
173-
174-
await expect(page.getByTestId('previous')).not.toBeDisabled();
175-
176-
await expect(page.getByTestId('page-indicator')).toContainText('2');
177-
178-
const tableResponse3 = page.waitForResponse(`/api/v1/tables?**limit=15**`);
179-
await page.getByTestId('previous').click();
180-
await tableResponse3;
181-
182-
await expect(page.getByTestId('page-indicator')).toContainText('1');
183-
});
184-
185156
test('Copy column link button should copy the column URL to clipboard', async ({
186157
page,
187158
}) => {
@@ -226,7 +197,28 @@ test('Copy column link should have valid URL format', async ({ page }) => {
226197
expect(validationResult.pathname).toContain('table');
227198

228199
// Visit the copied link to verify it opens the side panel
229-
await page.goto(clipboardText);
200+
const tableFqn = table.entityResponseData?.['fullyQualifiedName'] ?? '';
201+
await Promise.all([
202+
page.waitForResponse(
203+
(response) =>
204+
response
205+
.url()
206+
.includes(`/api/v1/tables/name/${encodeURIComponent(tableFqn)}`) &&
207+
response.url().includes('fields=') &&
208+
response.request().method() === 'GET'
209+
),
210+
page.waitForResponse(
211+
(response) =>
212+
response
213+
.url()
214+
.includes(`/api/v1/tables/name/${encodeURIComponent(tableFqn)}`) &&
215+
response.url().includes('profile') &&
216+
response.request().method() === 'GET',
217+
{ timeout: 150_000 } // TODO: Reduce timeout once the latency issue is fixed
218+
),
219+
page.goto(clipboardText),
220+
]);
221+
await waitForAllLoadersToDisappear(page);
230222

231223
// Verify side panel is open
232224
const sidePanel = page.locator('.column-detail-panel');
@@ -279,7 +271,33 @@ test('Copy nested column link should include full hierarchical path', async ({
279271
);
280272

281273
// Visit the copied link to verify it opens the side panel
282-
await page.goto(clipboardText);
274+
const nestedTableFqn =
275+
table.entityResponseData?.['fullyQualifiedName'] ?? '';
276+
await Promise.all([
277+
page.waitForResponse(
278+
(response) =>
279+
response
280+
.url()
281+
.includes(
282+
`/api/v1/tables/name/${encodeURIComponent(nestedTableFqn)}`
283+
) &&
284+
response.url().includes('fields=') &&
285+
response.request().method() === 'GET'
286+
),
287+
page.waitForResponse(
288+
(response) =>
289+
response
290+
.url()
291+
.includes(
292+
`/api/v1/tables/name/${encodeURIComponent(nestedTableFqn)}`
293+
) &&
294+
response.url().includes('profile') &&
295+
response.request().method() === 'GET',
296+
{ timeout: 150_000 } // TODO: Reduce timeout once the latency issue is fixed
297+
),
298+
page.goto(clipboardText),
299+
]);
300+
await waitForAllLoadersToDisappear(page);
283301

284302
// Verify side panel is open
285303
const sidePanel = page.locator('.column-detail-panel');

0 commit comments

Comments
 (0)