diff --git a/test/sql/scaleAndSettings/scale.spec.ts b/test/sql/scaleAndSettings/scale.spec.ts index 01809d107..3cea81646 100644 --- a/test/sql/scaleAndSettings/scale.spec.ts +++ b/test/sql/scaleAndSettings/scale.spec.ts @@ -9,34 +9,32 @@ import { } from "../../fx"; import { createTestSQLContainer, TestContainerContext } from "../../testData"; -test.describe("Autoscale and Manual throughput", () => { +test.describe("Autoscale throughput", () => { let context: TestContainerContext = null!; let explorer: DataExplorer = null!; - test.beforeAll("Create Test Database", async () => {}); - - test.beforeEach("Open container settings", async ({ page }) => { + test.beforeAll("Create Test Database", async ({ browser }) => { context = await createTestSQLContainer(); + const page = await browser.newPage(); explorer = await DataExplorer.open(page, TestAccount.SQL); // Click Scale & Settings and open Scale tab await explorer.openScaleAndSettings(context); const scaleTab = explorer.frame.getByTestId("settings-tab-header/ScaleTab"); await scaleTab.click(); + + await switchManualToAutoscaleThroughput(); }); if (!process.env.CI) { - test.afterEach("Delete Test Database", async () => { + test.afterAll("Delete Test Database", async () => { await context?.dispose(); }); } test("Update autoscale max throughput", async () => { - // By default the created container has manual throughput (Containers created via JS SDK v4.7.0 cannot be created with autoscale throughput) - await switchManualToAutoscaleThroughput(); - // Update autoscale max throughput - await getThroughputInput("autopilot").fill(TEST_AUTOSCALE_MAX_THROUGHPUT_RU_2K.toString()); + await getThroughputInput(explorer, "autopilot").fill(TEST_AUTOSCALE_MAX_THROUGHPUT_RU_2K.toString()); // Save await explorer.commandBarButton(CommandBarButton.Save).click(); @@ -51,9 +49,6 @@ test.describe("Autoscale and Manual throughput", () => { }); test("Update autoscale max throughput passed allowed limit", async () => { - // By default the created container has manual throughput (Containers created via JS SDK v4.7.0 cannot be created with autoscale throughput) - await switchManualToAutoscaleThroughput(); - // Get soft allowed max throughput and remove commas const softAllowedMaxThroughputString = await explorer.frame .getByTestId("soft-allowed-maximum-throughput") @@ -61,27 +56,63 @@ test.describe("Autoscale and Manual throughput", () => { const softAllowedMaxThroughput = Number(softAllowedMaxThroughputString.replace(/,/g, "")); // Try to set autoscale max throughput above allowed limit - await getThroughputInput("autopilot").fill((softAllowedMaxThroughput * 10).toString()); + await getThroughputInput(explorer, "autopilot").fill((softAllowedMaxThroughput * 10).toString()); await expect(explorer.commandBarButton(CommandBarButton.Save)).toBeDisabled(); - await expect(getThroughputInputErrorMessage("autopilot")).toContainText( + await expect(getThroughputInputErrorMessage(explorer, "autopilot")).toContainText( "This update isn't possible because it would increase the total throughput", ); }); test("Update autoscale max throughput with invalid increment", async () => { - // By default the created container has manual throughput (Containers created via JS SDK v4.7.0 cannot be created with autoscale throughput) - await switchManualToAutoscaleThroughput(); - // Try to set autoscale max throughput with invalid increment - await getThroughputInput("autopilot").fill("1100"); + await getThroughputInput(explorer, "autopilot").fill("1100"); await expect(explorer.commandBarButton(CommandBarButton.Save)).toBeDisabled(); - await expect(getThroughputInputErrorMessage("autopilot")).toContainText( + await expect(getThroughputInputErrorMessage(explorer, "autopilot")).toContainText( "Throughput value must be in increments of 1000", ); }); + const switchManualToAutoscaleThroughput = async (): Promise => { + const autoscaleRadioButton = explorer.frame.getByText("Autoscale", { exact: true }); + await autoscaleRadioButton.click(); + await expect(explorer.commandBarButton(CommandBarButton.Save)).toBeEnabled(); + await explorer.commandBarButton(CommandBarButton.Save).click(); + await expect(explorer.getConsoleHeaderStatus()).toContainText( + `Successfully updated offer for collection ${context.container.id}`, + { + timeout: ONE_MINUTE_MS, + }, + ); + }; +}); + +test.describe("Manual throughput", () => { + let context: TestContainerContext = null!; + let explorer: DataExplorer = null!; + + test.beforeAll("Create Test Database & Open container settings", async ({ browser }) => { + context = await createTestSQLContainer(); + const page = await browser.newPage(); + explorer = await DataExplorer.open(page, TestAccount.SQL); + + // Click Scale & Settings and open Scale tab + await explorer.openScaleAndSettings(context); + const scaleTab = explorer.frame.getByTestId("settings-tab-header/ScaleTab"); + await scaleTab.click(); + }); + + // test.beforeEach("Open container settings", async ({ page }) => { + + // }); + + if (!process.env.CI) { + test.afterAll("Delete Test Database", async () => { + await context?.dispose(); + }); + } + test("Update manual throughput", async () => { - await getThroughputInput("manual").fill(TEST_MANUAL_THROUGHPUT_RU_2K.toString()); + await getThroughputInput(explorer, "manual").fill(TEST_MANUAL_THROUGHPUT_RU_2K.toString()); await explorer.commandBarButton(CommandBarButton.Save).click(); await expect(explorer.getConsoleHeaderStatus()).toContainText( `Successfully updated offer for collection ${context.container.id}`, @@ -99,32 +130,19 @@ test.describe("Autoscale and Manual throughput", () => { const softAllowedMaxThroughput = Number(softAllowedMaxThroughputString.replace(/,/g, "")); // Try to set manual throughput above allowed limit - await getThroughputInput("manual").fill((softAllowedMaxThroughput * 10).toString()); + await getThroughputInput(explorer, "manual").fill((softAllowedMaxThroughput * 10).toString()); await expect(explorer.commandBarButton(CommandBarButton.Save)).toBeDisabled(); - await expect(getThroughputInputErrorMessage("manual")).toContainText( + await expect(getThroughputInputErrorMessage(explorer, "manual")).toContainText( "This update isn't possible because it would increase the total throughput", ); }); - - // Helper methods - const getThroughputInput = (type: "manual" | "autopilot"): Locator => { - return explorer.frame.getByTestId(`${type}-throughput-input`); - }; - - const getThroughputInputErrorMessage = (type: "manual" | "autopilot"): Locator => { - return explorer.frame.getByTestId(`${type}-throughput-input-error`); - }; - - const switchManualToAutoscaleThroughput = async (): Promise => { - const autoscaleRadioButton = explorer.frame.getByText("Autoscale", { exact: true }); - await autoscaleRadioButton.click(); - await expect(explorer.commandBarButton(CommandBarButton.Save)).toBeEnabled(); - await explorer.commandBarButton(CommandBarButton.Save).click(); - await expect(explorer.getConsoleHeaderStatus()).toContainText( - `Successfully updated offer for collection ${context.container.id}`, - { - timeout: ONE_MINUTE_MS, - }, - ); - }; }); + +// Helper methods +const getThroughputInput = (explorer: DataExplorer, type: "manual" | "autopilot"): Locator => { + return explorer.frame.getByTestId(`${type}-throughput-input`); +}; + +const getThroughputInputErrorMessage = (explorer: DataExplorer, type: "manual" | "autopilot"): Locator => { + return explorer.frame.getByTestId(`${type}-throughput-input-error`); +}; diff --git a/test/sql/scaleAndSettings/settings.spec.ts b/test/sql/scaleAndSettings/settings.spec.ts index ffa7b5a19..887d4541b 100644 --- a/test/sql/scaleAndSettings/settings.spec.ts +++ b/test/sql/scaleAndSettings/settings.spec.ts @@ -2,15 +2,13 @@ import { expect, test } from "@playwright/test"; import { CommandBarButton, DataExplorer, ONE_MINUTE_MS, TestAccount } from "../../fx"; import { createTestSQLContainer, TestContainerContext } from "../../testData"; -test.describe("Settings under Scale & Settings", () => { +test.describe.serial("Settings under Scale & Settings", () => { let context: TestContainerContext = null!; let explorer: DataExplorer = null!; - // test.beforeAll("Create Test Database", async () => { - // }); - - test.beforeEach("Open container settings", async ({ page }) => { + test.beforeAll("Create Test Database", async ({ browser }) => { context = await createTestSQLContainer(); + const page = await browser.newPage(); explorer = await DataExplorer.open(page, TestAccount.SQL); // Click Scale & Settings and open Scale tab @@ -19,11 +17,20 @@ test.describe("Settings under Scale & Settings", () => { await settingsTab.click(); }); + // test.beforeEach("Open container settings", async ({ page }) => { + // explorer = await DataExplorer.open(page, TestAccount.SQL); + + // // Click Scale & Settings and open Scale tab + // await explorer.openScaleAndSettings(context); + // const settingsTab = explorer.frame.getByTestId("settings-tab-header/SubSettingsTab"); + // await settingsTab.click(); + // }); + // test.afterEach("Delete Test Database", async () => { // await context?.dispose(); // }); if (!process.env.CI) { - test.afterEach("Delete Test Database", async () => { + test.afterAll("Delete Test Database", async () => { await context?.dispose(); }); } @@ -57,29 +64,4 @@ test.describe("Settings under Scale & Settings", () => { }, ); }); - - test("Update TTL to Off", async () => { - // By default TTL is set to off so we need to first set it to On - const ttlOnNoDefaultRadioButton = explorer.frame.getByRole("radio", { name: "ttl-on-no-default-option" }); - await ttlOnNoDefaultRadioButton.click(); - await explorer.commandBarButton(CommandBarButton.Save).click(); - await expect(explorer.getConsoleHeaderStatus()).toContainText( - `Successfully updated container ${context.container.id}`, - { - timeout: ONE_MINUTE_MS, - }, - ); - - // Set it to Off - const ttlOffRadioButton = explorer.frame.getByRole("radio", { name: "ttl-off-option" }); - await ttlOffRadioButton.click(); - - await explorer.commandBarButton(CommandBarButton.Save).click(); - await expect(explorer.getConsoleHeaderStatus()).toContainText( - `Successfully updated container ${context.container.id}`, - { - timeout: ONE_MINUTE_MS, - }, - ); - }); });