// import { expect, test } from "@playwright/test"; // import { CommandBarButton, DataExplorer, ONE_MINUTE_MS, TestAccount } from "../../../fx"; // import { createTestSQLContainer, TestContainerContext } from "../../../testData"; // test.describe("Vector Policy under Scale & Settings", () => { // let context: TestContainerContext = null!; // let explorer: DataExplorer = null!; // test.beforeAll("Create Test Database", async () => { // context = await createTestSQLContainer(); // }); // test.beforeEach("Open Container Policy tab under Scale & Settings", async ({ page }) => { // explorer = await DataExplorer.open(page, TestAccount.SQL); // await explorer.waitForContainerNode(context.database.id, context.container.id); // // Click Scale & Settings and open Container Policy tab // await explorer.openScaleAndSettings(context); // const containerPolicyTab = explorer.frame.getByTestId("settings-tab-header/ContainerVectorPolicyTab"); // await containerPolicyTab.click(); // // Click on Vector Policy tab // const vectorPolicyTab = explorer.frame.getByRole("tab", { name: "Vector Policy" }); // await vectorPolicyTab.click(); // }); // test.afterEach("Clear vector policies", async () => { // const { resource: containerDef } = await context.container.read(); // if (containerDef.vectorEmbeddingPolicy?.vectorEmbeddings?.length) { // containerDef.vectorEmbeddingPolicy.vectorEmbeddings = []; // await context.container.replace(containerDef); // } // }); // test.afterAll("Delete Test Database", async () => { // await context?.dispose(); // }); // /** Count vector policy entries currently in the DOM. */ // const getPolicyCount = async (): Promise => { // for (let i = 1; i <= 20; i++) { // if ((await explorer.frame.locator(`#vector-policy-path-${i}`).count()) === 0) { // return i - 1; // } // } // return 20; // }; // /** // * Ensure at least one saved (existing) vector policy exists on the container. // * If none exist, add one and save it. Returns the total policy count afterward. // */ // const ensureExistingPolicy = async (): Promise => { // const count = await getPolicyCount(); // if (count > 0) { // return count; // } // // No saved policies — add and save one // const addButton = explorer.frame.locator("#add-vector-policy"); // await addButton.click(); // await explorer.frame.locator("#vector-policy-path-1").fill("/existingPolicy"); // await explorer.frame.locator("#vector-policy-dimension-1").fill("500"); // const saveButton = explorer.commandBarButton(CommandBarButton.Save); // await saveButton.click(); // await expect(explorer.getConsoleHeaderStatus()).toContainText( // `Successfully updated container ${context.container.id}`, // { timeout: 2 * ONE_MINUTE_MS }, // ); // return 1; // }; // test("Add new vector embedding policy", async () => { // test.skip(); // const existingCount = await getPolicyCount(); // // Click Add vector embedding button // const addButton = explorer.frame.locator("#add-vector-policy"); // await addButton.click(); // const newIndex = existingCount + 1; // // Fill in path // const pathInput = explorer.frame.locator(`#vector-policy-path-${newIndex}`); // await pathInput.fill("/embedding"); // // Fill in dimensions // const dimensionsInput = explorer.frame.locator(`#vector-policy-dimension-${newIndex}`); // await dimensionsInput.fill("1500"); // // Save changes // const saveButton = explorer.commandBarButton(CommandBarButton.Save); // await expect(saveButton).toBeEnabled(); // await saveButton.click(); // await expect(explorer.getConsoleHeaderStatus()).toContainText( // `Successfully updated container ${context.container.id}`, // { // timeout: 2 * ONE_MINUTE_MS, // }, // ); // }); // test("Existing vector embedding policy fields are disabled", async () => { // test.skip(); // // Ensure there is at least one saved policy // await ensureExistingPolicy(); // // Verify the path field is disabled for the existing policy // const existingPathInput = explorer.frame.locator("#vector-policy-path-1"); // await expect(existingPathInput).toBeDisabled(); // // Verify the dimensions field is disabled for the existing policy // const existingDimensionsInput = explorer.frame.locator("#vector-policy-dimension-1"); // await expect(existingDimensionsInput).toBeDisabled(); // }); // test("New vector embedding policy fields are enabled while existing are disabled", async () => { // test.skip(); // // Ensure there is at least one saved policy // const existingCount = await ensureExistingPolicy(); // // Now add a new policy // const addButton = explorer.frame.locator("#add-vector-policy"); // await addButton.click(); // const newIndex = existingCount + 1; // // Verify the existing policy fields are disabled // const existingPathInput = explorer.frame.locator("#vector-policy-path-1"); // const existingDimensionsInput = explorer.frame.locator("#vector-policy-dimension-1"); // await expect(existingPathInput).toBeDisabled(); // await expect(existingDimensionsInput).toBeDisabled(); // // Verify the new policy fields are enabled // const newPathInput = explorer.frame.locator(`#vector-policy-path-${newIndex}`); // const newDimensionsInput = explorer.frame.locator(`#vector-policy-dimension-${newIndex}`); // await expect(newPathInput).toBeEnabled(); // await expect(newDimensionsInput).toBeEnabled(); // }); // test("Delete existing vector embedding policy", async () => { // test.skip(); // // Ensure there is at least one saved policy to delete // const existingCount = await ensureExistingPolicy(); // // Verify the policy exists // const pathInput = explorer.frame.locator("#vector-policy-path-1"); // await expect(pathInput).toBeVisible(); // // Click the delete (trash) button for the first vector embedding // const deleteButton = explorer.frame.locator("#delete-Vector-embedding-1"); // await expect(deleteButton).toBeEnabled(); // await deleteButton.click(); // // Verify one fewer policy entry in the UI // const countAfterDelete = await getPolicyCount(); // expect(countAfterDelete).toBe(existingCount - 1); // // Save the deletion // const saveButton = explorer.commandBarButton(CommandBarButton.Save); // await expect(saveButton).toBeEnabled(); // await saveButton.click(); // await expect(explorer.getConsoleHeaderStatus()).toContainText( // `Successfully updated container ${context.container.id}`, // { // timeout: 2 * ONE_MINUTE_MS, // }, // ); // // Verify the count is still reduced after save // const countAfterSave = await getPolicyCount(); // expect(countAfterSave).toBe(existingCount - 1); // }); // test("Validation error for empty path", async () => { // test.skip(); // const existingCount = await getPolicyCount(); // const addButton = explorer.frame.locator("#add-vector-policy"); // await addButton.click(); // const newIndex = existingCount + 1; // // Leave path empty, just fill dimensions // const dimensionsInput = explorer.frame.locator(`#vector-policy-dimension-${newIndex}`); // await dimensionsInput.fill("512"); // // Check for validation error on path // const pathError = explorer.frame.locator("text=Path should not be empty"); // await expect(pathError).toBeVisible(); // // Verify save button is disabled due to validation error // const saveButton = explorer.commandBarButton(CommandBarButton.Save); // await expect(saveButton).toBeDisabled(); // }); // });