Add search/filter support to Copy Jobs list with pagination updates (#2343)

* search the copy job

* remove timeout

* Update src/Explorer/ContainerCopy/MonitorCopyJobs/Components/CopyJobsList.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix pagination race condition when filtering copy jobs (#2351)

* Initial plan

* Fix pagination race condition by resetting startIndex synchronously

Co-authored-by: BChoudhury-ms <201893606+BChoudhury-ms@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: BChoudhury-ms <201893606+BChoudhury-ms@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: BChoudhury-ms <201893606+BChoudhury-ms@users.noreply.github.com>
This commit is contained in:
BChoudhury-ms
2026-01-23 20:58:46 +05:30
committed by GitHub
parent 703218debf
commit 05407b3e0f
6 changed files with 294 additions and 40 deletions

View File

@@ -120,18 +120,22 @@ test.describe("Container Copy - Online Migration", () => {
expect(response.ok()).toBe(true);
// Verify panel closes and job appears in the list
await expect(panel).not.toBeVisible({ timeout: 5000 });
await expect(panel).not.toBeVisible();
const filterTextField = wrapper.getByTestId("CopyJobsList/FilterTextField");
await filterTextField.waitFor({ state: "visible" });
await filterTextField.fill(onlineMigrationJobName);
const jobsListContainer = wrapper.locator(".CopyJobListContainer .ms-DetailsList-contentWrapper .ms-List-page");
await jobsListContainer.waitFor({ state: "visible", timeout: 5000 });
await jobsListContainer.waitFor({ state: "visible" });
let jobRow, statusCell, actionMenuButton;
jobRow = jobsListContainer.locator(".ms-DetailsRow", { hasText: onlineMigrationJobName });
statusCell = jobRow.locator("[data-automationid='DetailsRowCell'][data-automation-key='CopyJobStatus']");
await jobRow.waitFor({ state: "visible", timeout: 5000 });
await jobRow.waitFor({ state: "visible" });
// Verify job status changes to queued state
await expect(statusCell).toContainText(/running|queued|pending/i, { timeout: 5000 });
await expect(statusCell).toContainText(/running|queued|pending/i);
// Test job lifecycle management through action menu
actionMenuButton = wrapper.getByTestId(`CopyJobActionMenu/Button:${onlineMigrationJobName}`);