From 3acaf560fdc3be0c9289856cde0795aef9c774b1 Mon Sep 17 00:00:00 2001 From: Asier Isayas Date: Fri, 23 Jan 2026 13:53:12 -0800 Subject: [PATCH] uncomment container copy tests --- .../containercopy/offlineMigration.spec.ts | 424 +++++++++--------- .../sql/containercopy/onlineMigration.spec.ts | 304 ++++++------- 2 files changed, 364 insertions(+), 364 deletions(-) diff --git a/test/sql/containercopy/offlineMigration.spec.ts b/test/sql/containercopy/offlineMigration.spec.ts index 6d11a69f5..e99610cb4 100644 --- a/test/sql/containercopy/offlineMigration.spec.ts +++ b/test/sql/containercopy/offlineMigration.spec.ts @@ -1,262 +1,262 @@ -// /* eslint-disable @typescript-eslint/no-explicit-any */ -// import { expect, Frame, Locator, Page, test } from "@playwright/test"; -// import { truncateName } from "../../../src/Explorer/ContainerCopy/CopyJobUtils"; -// import { -// ContainerCopy, -// getAccountName, -// getDropdownItemByNameOrPosition, -// interceptAndInspectApiRequest, -// TestAccount, -// waitForApiResponse, -// } from "../../fx"; -// import { createMultipleTestContainers } from "../../testData"; +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { expect, Frame, Locator, Page, test } from "@playwright/test"; +import { truncateName } from "../../../src/Explorer/ContainerCopy/CopyJobUtils"; +import { + ContainerCopy, + getAccountName, + getDropdownItemByNameOrPosition, + interceptAndInspectApiRequest, + TestAccount, + waitForApiResponse, +} from "../../fx"; +import { createMultipleTestContainers } from "../../testData"; -// test.describe("Container Copy - Offline Migration", () => { -// let page: Page; -// let wrapper: Locator; -// let panel: Locator; -// let frame: Frame; -// let expectedJobName: string; -// let targetAccountName: string; -// let expectedSubscriptionName: string; -// let expectedCopyJobNameInitial: string; +test.describe("Container Copy - Offline Migration", () => { + let page: Page; + let wrapper: Locator; + let panel: Locator; + let frame: Frame; + let expectedJobName: string; + let targetAccountName: string; + let expectedSubscriptionName: string; + let expectedCopyJobNameInitial: string; -// test.beforeEach("Setup for offline migration test", async ({ browser }) => { -// await createMultipleTestContainers({ accountType: TestAccount.SQLContainerCopyOnly, containerCount: 2 }); + test.beforeEach("Setup for offline migration test", async ({ browser }) => { + await createMultipleTestContainers({ accountType: TestAccount.SQLContainerCopyOnly, containerCount: 2 }); -// page = await browser.newPage(); -// ({ wrapper, frame } = await ContainerCopy.open(page, TestAccount.SQLContainerCopyOnly)); -// expectedJobName = `offline_test_job_${Date.now()}`; -// targetAccountName = getAccountName(TestAccount.SQLContainerCopyOnly); -// }); + page = await browser.newPage(); + ({ wrapper, frame } = await ContainerCopy.open(page, TestAccount.SQLContainerCopyOnly)); + expectedJobName = `offline_test_job_${Date.now()}`; + targetAccountName = getAccountName(TestAccount.SQLContainerCopyOnly); + }); -// test.afterEach("Cleanup after offline migration test", async () => { -// await page.unroute(/.*/, (route) => route.continue()); -// await page.close(); -// }); + test.afterEach("Cleanup after offline migration test", async () => { + await page.unroute(/.*/, (route) => route.continue()); + await page.close(); + }); -// test("Successfully create and manage offline migration copy job", async () => { -// expect(wrapper).not.toBeNull(); -// await wrapper.locator(".commandBarContainer").waitFor({ state: "visible" }); + test("Successfully create and manage offline migration copy job", async () => { + expect(wrapper).not.toBeNull(); + await wrapper.locator(".commandBarContainer").waitFor({ state: "visible" }); -// // Open Create Copy Job panel -// const createCopyJobButton = wrapper.getByTestId("CommandBar/Button:Create Copy Job"); -// await expect(createCopyJobButton).toBeVisible(); -// await createCopyJobButton.click(); -// panel = frame.getByTestId("Panel:Create copy job"); -// await expect(panel).toBeVisible(); + // Open Create Copy Job panel + const createCopyJobButton = wrapper.getByTestId("CommandBar/Button:Create Copy Job"); + await expect(createCopyJobButton).toBeVisible(); + await createCopyJobButton.click(); + panel = frame.getByTestId("Panel:Create copy job"); + await expect(panel).toBeVisible(); -// // Reduced wait time for better performance -// await page.waitForTimeout(2000); + // Reduced wait time for better performance + await page.waitForTimeout(2000); -// // Setup subscription and account -// const subscriptionDropdown = panel.getByTestId("subscription-dropdown"); -// const expectedAccountName = targetAccountName; -// expectedSubscriptionName = await subscriptionDropdown.locator("span.ms-Dropdown-title").innerText(); + // Setup subscription and account + const subscriptionDropdown = panel.getByTestId("subscription-dropdown"); + const expectedAccountName = targetAccountName; + expectedSubscriptionName = await subscriptionDropdown.locator("span.ms-Dropdown-title").innerText(); -// await subscriptionDropdown.click(); -// const subscriptionItem = await getDropdownItemByNameOrPosition( -// frame, -// { name: expectedSubscriptionName }, -// { ariaLabel: "Subscription" }, -// ); -// await subscriptionItem.click(); + await subscriptionDropdown.click(); + const subscriptionItem = await getDropdownItemByNameOrPosition( + frame, + { name: expectedSubscriptionName }, + { ariaLabel: "Subscription" }, + ); + await subscriptionItem.click(); -// // Select account -// const accountDropdown = panel.getByTestId("account-dropdown"); -// await expect(accountDropdown).toHaveText(new RegExp(expectedAccountName)); -// await accountDropdown.click(); + // Select account + const accountDropdown = panel.getByTestId("account-dropdown"); + await expect(accountDropdown).toHaveText(new RegExp(expectedAccountName)); + await accountDropdown.click(); -// const accountItem = await getDropdownItemByNameOrPosition( -// frame, -// { name: expectedAccountName }, -// { ariaLabel: "Account" }, -// ); -// await accountItem.click(); + const accountItem = await getDropdownItemByNameOrPosition( + frame, + { name: expectedAccountName }, + { ariaLabel: "Account" }, + ); + await accountItem.click(); -// // Test offline migration mode toggle functionality -// const migrationTypeContainer = panel.getByTestId("migration-type"); + // Test offline migration mode toggle functionality + const migrationTypeContainer = panel.getByTestId("migration-type"); -// // First test online mode (should show permissions screen) -// const onlineCopyRadioButton = migrationTypeContainer.getByRole("radio", { name: /Online mode/i }); -// await onlineCopyRadioButton.click({ force: true }); -// await expect(migrationTypeContainer.getByTestId("migration-type-description-online")).toBeVisible(); + // First test online mode (should show permissions screen) + const onlineCopyRadioButton = migrationTypeContainer.getByRole("radio", { name: /Online mode/i }); + await onlineCopyRadioButton.click({ force: true }); + await expect(migrationTypeContainer.getByTestId("migration-type-description-online")).toBeVisible(); -// await panel.getByRole("button", { name: "Next" }).click(); -// await expect(panel.getByTestId("Panel:AssignPermissionsContainer")).toBeVisible(); -// await expect(panel.getByText("Online container copy", { exact: true })).toBeVisible(); + await panel.getByRole("button", { name: "Next" }).click(); + await expect(panel.getByTestId("Panel:AssignPermissionsContainer")).toBeVisible(); + await expect(panel.getByText("Online container copy", { exact: true })).toBeVisible(); -// // Go back and switch to offline mode -// await panel.getByRole("button", { name: "Previous" }).click(); + // Go back and switch to offline mode + await panel.getByRole("button", { name: "Previous" }).click(); -// const offlineCopyRadioButton = migrationTypeContainer.getByRole("radio", { name: /Offline mode/i }); -// await offlineCopyRadioButton.click({ force: true }); -// await expect(migrationTypeContainer.getByTestId("migration-type-description-offline")).toBeVisible(); + const offlineCopyRadioButton = migrationTypeContainer.getByRole("radio", { name: /Offline mode/i }); + await offlineCopyRadioButton.click({ force: true }); + await expect(migrationTypeContainer.getByTestId("migration-type-description-offline")).toBeVisible(); -// await panel.getByRole("button", { name: "Next" }).click(); + await panel.getByRole("button", { name: "Next" }).click(); -// // Verify we skip permissions screen in offline mode -// await expect(panel.getByTestId("Panel:SelectSourceAndTargetContainers")).toBeVisible(); -// await expect(panel.getByTestId("Panel:AssignPermissionsContainer")).not.toBeVisible(); + // Verify we skip permissions screen in offline mode + await expect(panel.getByTestId("Panel:SelectSourceAndTargetContainers")).toBeVisible(); + await expect(panel.getByTestId("Panel:AssignPermissionsContainer")).not.toBeVisible(); -// // Test source and target container selection with validation -// const sourceContainerDropdown = panel.getByTestId("source-containerDropdown"); -// expect(sourceContainerDropdown).toBeVisible(); -// await expect(sourceContainerDropdown).toHaveClass(/(^|\s)is-disabled(\s|$)/); + // Test source and target container selection with validation + const sourceContainerDropdown = panel.getByTestId("source-containerDropdown"); + expect(sourceContainerDropdown).toBeVisible(); + await expect(sourceContainerDropdown).toHaveClass(/(^|\s)is-disabled(\s|$)/); -// // Select source database first (containers are disabled until database is selected) -// const sourceDatabaseDropdown = panel.getByTestId("source-databaseDropdown"); -// await sourceDatabaseDropdown.click(); -// const sourceDbDropdownItem = await getDropdownItemByNameOrPosition( -// frame, -// { position: 0 }, -// { ariaLabel: "Database" }, -// ); -// await sourceDbDropdownItem.click(); + // Select source database first (containers are disabled until database is selected) + const sourceDatabaseDropdown = panel.getByTestId("source-databaseDropdown"); + await sourceDatabaseDropdown.click(); + const sourceDbDropdownItem = await getDropdownItemByNameOrPosition( + frame, + { position: 0 }, + { ariaLabel: "Database" }, + ); + await sourceDbDropdownItem.click(); -// // Now container dropdown should be enabled -// await expect(sourceContainerDropdown).not.toHaveClass(/(^|\s)is-disabled(\s|$)/); -// await sourceContainerDropdown.click(); -// const sourceContainerDropdownItem = await getDropdownItemByNameOrPosition( -// frame, -// { position: 0 }, -// { ariaLabel: "Container" }, -// ); -// await sourceContainerDropdownItem.click(); + // Now container dropdown should be enabled + await expect(sourceContainerDropdown).not.toHaveClass(/(^|\s)is-disabled(\s|$)/); + await sourceContainerDropdown.click(); + const sourceContainerDropdownItem = await getDropdownItemByNameOrPosition( + frame, + { position: 0 }, + { ariaLabel: "Container" }, + ); + await sourceContainerDropdownItem.click(); -// // Test target container selection -// const targetContainerDropdown = panel.getByTestId("target-containerDropdown"); -// expect(targetContainerDropdown).toBeVisible(); -// await expect(targetContainerDropdown).toHaveClass(/(^|\s)is-disabled(\s|$)/); + // Test target container selection + const targetContainerDropdown = panel.getByTestId("target-containerDropdown"); + expect(targetContainerDropdown).toBeVisible(); + await expect(targetContainerDropdown).toHaveClass(/(^|\s)is-disabled(\s|$)/); -// const targetDatabaseDropdown = panel.getByTestId("target-databaseDropdown"); -// await targetDatabaseDropdown.click(); -// const targetDbDropdownItem = await getDropdownItemByNameOrPosition( -// frame, -// { position: 0 }, -// { ariaLabel: "Database" }, -// ); -// await targetDbDropdownItem.click(); + const targetDatabaseDropdown = panel.getByTestId("target-databaseDropdown"); + await targetDatabaseDropdown.click(); + const targetDbDropdownItem = await getDropdownItemByNameOrPosition( + frame, + { position: 0 }, + { ariaLabel: "Database" }, + ); + await targetDbDropdownItem.click(); -// await expect(targetContainerDropdown).not.toHaveClass(/(^|\s)is-disabled(\s|$)/); -// await targetContainerDropdown.click(); + await expect(targetContainerDropdown).not.toHaveClass(/(^|\s)is-disabled(\s|$)/); + await targetContainerDropdown.click(); -// // First try selecting the same container (should show error) -// const targetContainerDropdownItem1 = await getDropdownItemByNameOrPosition( -// frame, -// { position: 0 }, -// { ariaLabel: "Container" }, -// ); -// await targetContainerDropdownItem1.click(); + // First try selecting the same container (should show error) + const targetContainerDropdownItem1 = await getDropdownItemByNameOrPosition( + frame, + { position: 0 }, + { ariaLabel: "Container" }, + ); + await targetContainerDropdownItem1.click(); -// await panel.getByRole("button", { name: "Next" }).click(); + await panel.getByRole("button", { name: "Next" }).click(); -// // Verify validation error for same source and target containers -// const errorContainer = panel.getByTestId("Panel:ErrorContainer"); -// await expect(errorContainer).toBeVisible(); -// await expect(errorContainer).toHaveText(/Source and destination containers cannot be the same/i); + // Verify validation error for same source and target containers + const errorContainer = panel.getByTestId("Panel:ErrorContainer"); + await expect(errorContainer).toBeVisible(); + await expect(errorContainer).toHaveText(/Source and destination containers cannot be the same/i); -// // Select different target container -// await targetContainerDropdown.click(); -// const targetContainerDropdownItem2 = await getDropdownItemByNameOrPosition( -// frame, -// { position: 1 }, -// { ariaLabel: "Container" }, -// ); -// await targetContainerDropdownItem2.click(); + // Select different target container + await targetContainerDropdown.click(); + const targetContainerDropdownItem2 = await getDropdownItemByNameOrPosition( + frame, + { position: 1 }, + { ariaLabel: "Container" }, + ); + await targetContainerDropdownItem2.click(); -// // Generate expected job name based on selections -// const selectedSourceDatabase = await sourceDatabaseDropdown.innerText(); -// const selectedSourceContainer = await sourceContainerDropdown.innerText(); -// const selectedTargetDatabase = await targetDatabaseDropdown.innerText(); -// const selectedTargetContainer = await targetContainerDropdown.innerText(); -// expectedCopyJobNameInitial = `${truncateName(selectedSourceDatabase)}.${truncateName( -// selectedSourceContainer, -// )}_${truncateName(selectedTargetDatabase)}.${truncateName(selectedTargetContainer)}`; + // Generate expected job name based on selections + const selectedSourceDatabase = await sourceDatabaseDropdown.innerText(); + const selectedSourceContainer = await sourceContainerDropdown.innerText(); + const selectedTargetDatabase = await targetDatabaseDropdown.innerText(); + const selectedTargetContainer = await targetContainerDropdown.innerText(); + expectedCopyJobNameInitial = `${truncateName(selectedSourceDatabase)}.${truncateName( + selectedSourceContainer, + )}_${truncateName(selectedTargetDatabase)}.${truncateName(selectedTargetContainer)}`; -// await panel.getByRole("button", { name: "Next" }).click(); + await panel.getByRole("button", { name: "Next" }).click(); -// // Error should disappear and preview should be visible -// await expect(errorContainer).not.toBeVisible(); -// await expect(panel.getByTestId("Panel:PreviewCopyJob")).toBeVisible(); + // Error should disappear and preview should be visible + await expect(errorContainer).not.toBeVisible(); + await expect(panel.getByTestId("Panel:PreviewCopyJob")).toBeVisible(); -// // Verify job preview details -// const previewContainer = panel.getByTestId("Panel:PreviewCopyJob"); -// await expect(previewContainer).toBeVisible(); -// await expect(previewContainer.getByTestId("source-subscription-name")).toHaveText(expectedSubscriptionName); -// await expect(previewContainer.getByTestId("source-account-name")).toHaveText(expectedAccountName); + // Verify job preview details + const previewContainer = panel.getByTestId("Panel:PreviewCopyJob"); + await expect(previewContainer).toBeVisible(); + await expect(previewContainer.getByTestId("source-subscription-name")).toHaveText(expectedSubscriptionName); + await expect(previewContainer.getByTestId("source-account-name")).toHaveText(expectedAccountName); -// const jobNameInput = previewContainer.getByTestId("job-name-textfield"); -// await expect(jobNameInput).toHaveValue(new RegExp(expectedCopyJobNameInitial)); + const jobNameInput = previewContainer.getByTestId("job-name-textfield"); + await expect(jobNameInput).toHaveValue(new RegExp(expectedCopyJobNameInitial)); -// const primaryBtn = panel.getByRole("button", { name: "Copy", exact: true }); -// await expect(primaryBtn).not.toHaveClass(/(^|\s)is-disabled(\s|$)/); + const primaryBtn = panel.getByRole("button", { name: "Copy", exact: true }); + await expect(primaryBtn).not.toHaveClass(/(^|\s)is-disabled(\s|$)/); -// // Test invalid job name validation (spaces not allowed) -// await jobNameInput.fill("test job name"); -// await expect(primaryBtn).toHaveClass(/(^|\s)is-disabled(\s|$)/); + // Test invalid job name validation (spaces not allowed) + await jobNameInput.fill("test job name"); + await expect(primaryBtn).toHaveClass(/(^|\s)is-disabled(\s|$)/); -// // Test duplicate job name error handling -// const duplicateJobName = "test-job-name-1"; -// await jobNameInput.fill(duplicateJobName); + // Test duplicate job name error handling + const duplicateJobName = "test-job-name-1"; + await jobNameInput.fill(duplicateJobName); -// const copyButton = panel.getByRole("button", { name: "Copy", exact: true }); -// const expectedErrorMessage = `Duplicate job name '${duplicateJobName}'`; + const copyButton = panel.getByRole("button", { name: "Copy", exact: true }); + const expectedErrorMessage = `Duplicate job name '${duplicateJobName}'`; -// await interceptAndInspectApiRequest( -// page, -// `${expectedAccountName}/dataTransferJobs/${duplicateJobName}`, -// "PUT", -// new Error(expectedErrorMessage), -// (url?: string) => url?.includes(duplicateJobName) ?? false, -// ); + await interceptAndInspectApiRequest( + page, + `${expectedAccountName}/dataTransferJobs/${duplicateJobName}`, + "PUT", + new Error(expectedErrorMessage), + (url?: string) => url?.includes(duplicateJobName) ?? false, + ); -// let errorThrown = false; -// try { -// await copyButton.click(); -// await page.waitForTimeout(2000); -// } catch (error: any) { -// errorThrown = true; -// expect(error.message).toContain("not allowed"); -// } + let errorThrown = false; + try { + await copyButton.click(); + await page.waitForTimeout(2000); + } catch (error: any) { + errorThrown = true; + expect(error.message).toContain("not allowed"); + } -// if (!errorThrown) { -// const errorContainer = panel.getByTestId("Panel:ErrorContainer"); -// await expect(errorContainer).toBeVisible(); -// await expect(errorContainer).toHaveText(new RegExp(expectedErrorMessage, "i")); -// } + if (!errorThrown) { + const errorContainer = panel.getByTestId("Panel:ErrorContainer"); + await expect(errorContainer).toBeVisible(); + await expect(errorContainer).toHaveText(new RegExp(expectedErrorMessage, "i")); + } -// await expect(panel).toBeVisible(); + await expect(panel).toBeVisible(); -// // Test successful job creation with valid job name -// const validJobName = expectedJobName; + // Test successful job creation with valid job name + const validJobName = expectedJobName; -// const copyJobCreationPromise = waitForApiResponse( -// page, -// `${expectedAccountName}/dataTransferJobs/${validJobName}`, -// "PUT", -// ); + const copyJobCreationPromise = waitForApiResponse( + page, + `${expectedAccountName}/dataTransferJobs/${validJobName}`, + "PUT", + ); -// await jobNameInput.fill(validJobName); -// await expect(copyButton).not.toHaveClass(/(^|\s)is-disabled(\s|$)/); + await jobNameInput.fill(validJobName); + await expect(copyButton).not.toHaveClass(/(^|\s)is-disabled(\s|$)/); -// await copyButton.click(); + await copyButton.click(); -// const response = await copyJobCreationPromise; -// expect(response.ok()).toBe(true); + const response = await copyJobCreationPromise; + expect(response.ok()).toBe(true); -// // Verify panel closes and job appears in the list -// await expect(panel).not.toBeVisible(); + // Verify panel closes and job appears in the list + await expect(panel).not.toBeVisible(); -// const filterTextField = wrapper.getByTestId("CopyJobsList/FilterTextField"); -// await filterTextField.waitFor({ state: "visible" }); -// await filterTextField.fill(validJobName); + const filterTextField = wrapper.getByTestId("CopyJobsList/FilterTextField"); + await filterTextField.waitFor({ state: "visible" }); + await filterTextField.fill(validJobName); -// const jobsListContainer = wrapper.locator(".CopyJobListContainer .ms-DetailsList-contentWrapper .ms-List-page"); -// await jobsListContainer.waitFor({ state: "visible" }); + const jobsListContainer = wrapper.locator(".CopyJobListContainer .ms-DetailsList-contentWrapper .ms-List-page"); + await jobsListContainer.waitFor({ state: "visible" }); -// const jobItem = jobsListContainer.getByText(validJobName); -// await jobItem.waitFor({ state: "visible" }); -// await expect(jobItem).toBeVisible(); -// }); -// }); + const jobItem = jobsListContainer.getByText(validJobName); + await jobItem.waitFor({ state: "visible" }); + await expect(jobItem).toBeVisible(); + }); +}); diff --git a/test/sql/containercopy/onlineMigration.spec.ts b/test/sql/containercopy/onlineMigration.spec.ts index 6570799b9..e11b3decd 100644 --- a/test/sql/containercopy/onlineMigration.spec.ts +++ b/test/sql/containercopy/onlineMigration.spec.ts @@ -1,189 +1,189 @@ -// /* eslint-disable @typescript-eslint/no-explicit-any */ -// import { expect, Frame, Locator, Page, test } from "@playwright/test"; -// import { -// ContainerCopy, -// getAccountName, -// getDropdownItemByNameOrPosition, -// TestAccount, -// waitForApiResponse, -// } from "../../fx"; -// import { createMultipleTestContainers } from "../../testData"; +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { expect, Frame, Locator, Page, test } from "@playwright/test"; +import { + ContainerCopy, + getAccountName, + getDropdownItemByNameOrPosition, + TestAccount, + waitForApiResponse, +} from "../../fx"; +import { createMultipleTestContainers } from "../../testData"; -// test.describe("Container Copy - Online Migration", () => { -// let page: Page; -// let wrapper: Locator; -// let panel: Locator; -// let frame: Frame; -// let targetAccountName: string; +test.describe("Container Copy - Online Migration", () => { + let page: Page; + let wrapper: Locator; + let panel: Locator; + let frame: Frame; + let targetAccountName: string; -// test.beforeEach("Setup for online migration test", async ({ browser }) => { -// await createMultipleTestContainers({ accountType: TestAccount.SQLContainerCopyOnly, containerCount: 2 }); + test.beforeEach("Setup for online migration test", async ({ browser }) => { + await createMultipleTestContainers({ accountType: TestAccount.SQLContainerCopyOnly, containerCount: 2 }); -// page = await browser.newPage(); -// ({ wrapper, frame } = await ContainerCopy.open(page, TestAccount.SQLContainerCopyOnly)); -// targetAccountName = getAccountName(TestAccount.SQLContainerCopyOnly); -// }); + page = await browser.newPage(); + ({ wrapper, frame } = await ContainerCopy.open(page, TestAccount.SQLContainerCopyOnly)); + targetAccountName = getAccountName(TestAccount.SQLContainerCopyOnly); + }); -// test.afterEach("Cleanup after online migration test", async () => { -// await page.unroute(/.*/, (route) => route.continue()); -// await page.close(); -// }); + test.afterEach("Cleanup after online migration test", async () => { + await page.unroute(/.*/, (route) => route.continue()); + await page.close(); + }); -// test("Successfully create and manage online migration copy job", async () => { -// expect(wrapper).not.toBeNull(); -// await wrapper.locator(".commandBarContainer").waitFor({ state: "visible" }); + test("Successfully create and manage online migration copy job", async () => { + expect(wrapper).not.toBeNull(); + await wrapper.locator(".commandBarContainer").waitFor({ state: "visible" }); -// // Open Create Copy Job panel -// const createCopyJobButton = wrapper.getByTestId("CommandBar/Button:Create Copy Job"); -// await expect(createCopyJobButton).toBeVisible(); -// await createCopyJobButton.click(); -// panel = frame.getByTestId("Panel:Create copy job"); -// await expect(panel).toBeVisible(); + // Open Create Copy Job panel + const createCopyJobButton = wrapper.getByTestId("CommandBar/Button:Create Copy Job"); + await expect(createCopyJobButton).toBeVisible(); + await createCopyJobButton.click(); + panel = frame.getByTestId("Panel:Create copy job"); + await expect(panel).toBeVisible(); -// // Reduced wait time for better performance -// await page.waitForTimeout(1000); + // Reduced wait time for better performance + await page.waitForTimeout(1000); -// // Enable online migration mode -// const migrationTypeContainer = panel.getByTestId("migration-type"); -// const onlineCopyRadioButton = migrationTypeContainer.getByRole("radio", { name: /Online mode/i }); -// await onlineCopyRadioButton.click({ force: true }); + // Enable online migration mode + const migrationTypeContainer = panel.getByTestId("migration-type"); + const onlineCopyRadioButton = migrationTypeContainer.getByRole("radio", { name: /Online mode/i }); + await onlineCopyRadioButton.click({ force: true }); -// await expect(migrationTypeContainer.getByTestId("migration-type-description-online")).toBeVisible(); + await expect(migrationTypeContainer.getByTestId("migration-type-description-online")).toBeVisible(); -// await panel.getByRole("button", { name: "Next" }).click(); + await panel.getByRole("button", { name: "Next" }).click(); -// // Verify permissions screen is shown for online migration -// const permissionScreen = panel.getByTestId("Panel:AssignPermissionsContainer"); -// await expect(permissionScreen).toBeVisible(); -// await expect(permissionScreen.getByText("Online container copy", { exact: true })).toBeVisible(); + // Verify permissions screen is shown for online migration + const permissionScreen = panel.getByTestId("Panel:AssignPermissionsContainer"); + await expect(permissionScreen).toBeVisible(); + await expect(permissionScreen.getByText("Online container copy", { exact: true })).toBeVisible(); -// // Skip permissions setup and proceed to container selection -// await panel.getByRole("button", { name: "Next" }).click(); + // Skip permissions setup and proceed to container selection + await panel.getByRole("button", { name: "Next" }).click(); -// // Configure source and target containers for online migration -// const sourceDatabaseDropdown = panel.getByTestId("source-databaseDropdown"); -// await sourceDatabaseDropdown.click(); -// const sourceDbDropdownItem = await getDropdownItemByNameOrPosition( -// frame, -// { position: 0 }, -// { ariaLabel: "Database" }, -// ); -// await sourceDbDropdownItem.click(); + // Configure source and target containers for online migration + const sourceDatabaseDropdown = panel.getByTestId("source-databaseDropdown"); + await sourceDatabaseDropdown.click(); + const sourceDbDropdownItem = await getDropdownItemByNameOrPosition( + frame, + { position: 0 }, + { ariaLabel: "Database" }, + ); + await sourceDbDropdownItem.click(); -// const sourceContainerDropdown = panel.getByTestId("source-containerDropdown"); -// await sourceContainerDropdown.click(); -// const sourceContainerDropdownItem = await getDropdownItemByNameOrPosition( -// frame, -// { position: 0 }, -// { ariaLabel: "Container" }, -// ); -// await sourceContainerDropdownItem.click(); + const sourceContainerDropdown = panel.getByTestId("source-containerDropdown"); + await sourceContainerDropdown.click(); + const sourceContainerDropdownItem = await getDropdownItemByNameOrPosition( + frame, + { position: 0 }, + { ariaLabel: "Container" }, + ); + await sourceContainerDropdownItem.click(); -// const targetDatabaseDropdown = panel.getByTestId("target-databaseDropdown"); -// await targetDatabaseDropdown.click(); -// const targetDbDropdownItem = await getDropdownItemByNameOrPosition( -// frame, -// { position: 0 }, -// { ariaLabel: "Database" }, -// ); -// await targetDbDropdownItem.click(); + const targetDatabaseDropdown = panel.getByTestId("target-databaseDropdown"); + await targetDatabaseDropdown.click(); + const targetDbDropdownItem = await getDropdownItemByNameOrPosition( + frame, + { position: 0 }, + { ariaLabel: "Database" }, + ); + await targetDbDropdownItem.click(); -// const targetContainerDropdown = panel.getByTestId("target-containerDropdown"); -// await targetContainerDropdown.click(); -// const targetContainerDropdownItem = await getDropdownItemByNameOrPosition( -// frame, -// { position: 1 }, -// { ariaLabel: "Container" }, -// ); -// await targetContainerDropdownItem.click(); + const targetContainerDropdown = panel.getByTestId("target-containerDropdown"); + await targetContainerDropdown.click(); + const targetContainerDropdownItem = await getDropdownItemByNameOrPosition( + frame, + { position: 1 }, + { ariaLabel: "Container" }, + ); + await targetContainerDropdownItem.click(); -// await panel.getByRole("button", { name: "Next" }).click(); + await panel.getByRole("button", { name: "Next" }).click(); -// // Verify job preview and create the online migration job -// const previewContainer = panel.getByTestId("Panel:PreviewCopyJob"); -// await expect(previewContainer.getByTestId("source-account-name")).toHaveText(targetAccountName); + // Verify job preview and create the online migration job + const previewContainer = panel.getByTestId("Panel:PreviewCopyJob"); + await expect(previewContainer.getByTestId("source-account-name")).toHaveText(targetAccountName); -// const jobNameInput = previewContainer.getByTestId("job-name-textfield"); -// const onlineMigrationJobName = await jobNameInput.inputValue(); + const jobNameInput = previewContainer.getByTestId("job-name-textfield"); + const onlineMigrationJobName = await jobNameInput.inputValue(); -// const copyButton = panel.getByRole("button", { name: "Copy", exact: true }); + const copyButton = panel.getByRole("button", { name: "Copy", exact: true }); -// const copyJobCreationPromise = waitForApiResponse( -// page, -// `${targetAccountName}/dataTransferJobs/${onlineMigrationJobName}`, -// "PUT", -// ); -// await copyButton.click(); -// await page.waitForTimeout(1000); // Reduced wait time + const copyJobCreationPromise = waitForApiResponse( + page, + `${targetAccountName}/dataTransferJobs/${onlineMigrationJobName}`, + "PUT", + ); + await copyButton.click(); + await page.waitForTimeout(1000); // Reduced wait time -// const response = await copyJobCreationPromise; -// expect(response.ok()).toBe(true); + const response = await copyJobCreationPromise; + expect(response.ok()).toBe(true); -// // Verify panel closes and job appears in the list -// await expect(panel).not.toBeVisible(); + // Verify panel closes and job appears in the list + await expect(panel).not.toBeVisible(); -// const filterTextField = wrapper.getByTestId("CopyJobsList/FilterTextField"); -// await filterTextField.waitFor({ state: "visible" }); -// await filterTextField.fill(onlineMigrationJobName); + 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" }); + const jobsListContainer = wrapper.locator(".CopyJobListContainer .ms-DetailsList-contentWrapper .ms-List-page"); + 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" }); + 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" }); -// // Verify job status changes to queued state -// await expect(statusCell).toContainText(/running|queued|pending/i); + // Verify job status changes to queued state + await expect(statusCell).toContainText(/running|queued|pending/i); -// // Test job lifecycle management through action menu -// actionMenuButton = wrapper.getByTestId(`CopyJobActionMenu/Button:${onlineMigrationJobName}`); -// await actionMenuButton.click(); + // Test job lifecycle management through action menu + actionMenuButton = wrapper.getByTestId(`CopyJobActionMenu/Button:${onlineMigrationJobName}`); + await actionMenuButton.click(); -// // Test pause functionality -// const pauseAction = frame.locator(".ms-ContextualMenu-list button:has-text('Pause')"); -// await pauseAction.click(); + // Test pause functionality + const pauseAction = frame.locator(".ms-ContextualMenu-list button:has-text('Pause')"); + await pauseAction.click(); -// const pauseResponse = await waitForApiResponse( -// page, -// `${targetAccountName}/dataTransferJobs/${onlineMigrationJobName}/pause`, -// "POST", -// ); -// expect(pauseResponse.ok()).toBe(true); + const pauseResponse = await waitForApiResponse( + page, + `${targetAccountName}/dataTransferJobs/${onlineMigrationJobName}/pause`, + "POST", + ); + expect(pauseResponse.ok()).toBe(true); -// // Verify job status changes to paused -// jobRow = jobsListContainer.locator(".ms-DetailsRow", { hasText: onlineMigrationJobName }); -// await jobRow.waitFor({ state: "visible", timeout: 5000 }); -// statusCell = jobRow.locator("[data-automationid='DetailsRowCell'][data-automation-key='CopyJobStatus']"); -// await expect(statusCell).toContainText(/paused/i, { timeout: 5000 }); -// await page.waitForTimeout(1000); + // Verify job status changes to paused + jobRow = jobsListContainer.locator(".ms-DetailsRow", { hasText: onlineMigrationJobName }); + await jobRow.waitFor({ state: "visible", timeout: 5000 }); + statusCell = jobRow.locator("[data-automationid='DetailsRowCell'][data-automation-key='CopyJobStatus']"); + await expect(statusCell).toContainText(/paused/i, { timeout: 5000 }); + await page.waitForTimeout(1000); -// // Test cancel job functionality -// actionMenuButton = wrapper.getByTestId(`CopyJobActionMenu/Button:${onlineMigrationJobName}`); -// await actionMenuButton.click(); -// await frame.locator(".ms-ContextualMenu-list button:has-text('Cancel')").click(); + // Test cancel job functionality + actionMenuButton = wrapper.getByTestId(`CopyJobActionMenu/Button:${onlineMigrationJobName}`); + await actionMenuButton.click(); + await frame.locator(".ms-ContextualMenu-list button:has-text('Cancel')").click(); -// // Verify cancellation confirmation dialog -// await expect(frame.locator(".ms-Dialog-main")).toBeVisible({ timeout: 2000 }); -// await expect(frame.locator(".ms-Dialog-main")).toContainText(onlineMigrationJobName); + // Verify cancellation confirmation dialog + await expect(frame.locator(".ms-Dialog-main")).toBeVisible({ timeout: 2000 }); + await expect(frame.locator(".ms-Dialog-main")).toContainText(onlineMigrationJobName); -// const cancelDialogButton = frame.locator(".ms-Dialog-main").getByTestId("DialogButton:Cancel"); -// await expect(cancelDialogButton).toBeVisible(); -// await cancelDialogButton.click(); -// await expect(frame.locator(".ms-Dialog-main")).not.toBeVisible(); + const cancelDialogButton = frame.locator(".ms-Dialog-main").getByTestId("DialogButton:Cancel"); + await expect(cancelDialogButton).toBeVisible(); + await cancelDialogButton.click(); + await expect(frame.locator(".ms-Dialog-main")).not.toBeVisible(); -// actionMenuButton = wrapper.getByTestId(`CopyJobActionMenu/Button:${onlineMigrationJobName}`); -// await actionMenuButton.click(); -// await frame.locator(".ms-ContextualMenu-list button:has-text('Cancel')").click(); + actionMenuButton = wrapper.getByTestId(`CopyJobActionMenu/Button:${onlineMigrationJobName}`); + await actionMenuButton.click(); + await frame.locator(".ms-ContextualMenu-list button:has-text('Cancel')").click(); -// const confirmDialogButton = frame.locator(".ms-Dialog-main").getByTestId("DialogButton:Confirm"); -// await expect(confirmDialogButton).toBeVisible(); -// await confirmDialogButton.click(); + const confirmDialogButton = frame.locator(".ms-Dialog-main").getByTestId("DialogButton:Confirm"); + await expect(confirmDialogButton).toBeVisible(); + await confirmDialogButton.click(); -// // Verify final job status is cancelled -// jobRow = jobsListContainer.locator(".ms-DetailsRow", { hasText: onlineMigrationJobName }); -// statusCell = jobRow.locator("[data-automationid='DetailsRowCell'][data-automation-key='CopyJobStatus']"); -// await expect(statusCell).toContainText(/cancelled/i, { timeout: 5000 }); -// }); -// }); + // Verify final job status is cancelled + jobRow = jobsListContainer.locator(".ms-DetailsRow", { hasText: onlineMigrationJobName }); + statusCell = jobRow.locator("[data-automationid='DetailsRowCell'][data-automation-key='CopyJobStatus']"); + await expect(statusCell).toContainText(/cancelled/i, { timeout: 5000 }); + }); +});