From 0a5dadd11b67f33a2afeaf07f82d7d37d0ce22c4 Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Tue, 29 Jul 2025 13:40:43 +0000 Subject: [PATCH 1/2] fix: e2e test fixes --- site/e2e/helpers.ts | 46 +++++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/site/e2e/helpers.ts b/site/e2e/helpers.ts index 768a7d477f992..5b08f1de953cb 100644 --- a/site/e2e/helpers.ts +++ b/site/e2e/helpers.ts @@ -127,6 +127,10 @@ export const createWorkspace = async ( const name = randomName(); await page.getByLabel("name").fill(name); + if (buildParameters.length > 0) { + await page.waitForSelector("form", { state: "visible" }); + } + await fillParameters(page, richParameters, buildParameters); if (useExternalAuth) { @@ -898,28 +902,24 @@ const fillParameters = async ( ); } - const parameterLabel = await page.waitForSelector( - `[data-testid='parameter-field-${richParameter.name}']`, - { state: "visible" }, - ); + // Use modern locator approach instead of waitForSelector + const parameterLabel = page.getByTestId(`parameter-field-${richParameter.name}`); + await expect(parameterLabel).toBeVisible(); if (richParameter.type === "bool") { - const parameterField = await parameterLabel.waitForSelector( - `[data-testid='parameter-field-bool'] .MuiRadio-root input[value='${buildParameter.value}']`, - ); + const parameterField = parameterLabel.getByTestId('parameter-field-bool') + .locator(`.MuiRadio-root input[value='${buildParameter.value}']`); await parameterField.click(); } else if (richParameter.options.length > 0) { - const parameterField = await parameterLabel.waitForSelector( - `[data-testid='parameter-field-options'] .MuiRadio-root input[value='${buildParameter.value}']`, - ); + const parameterField = parameterLabel.getByTestId('parameter-field-options') + .locator(`.MuiRadio-root input[value='${buildParameter.value}']`); await parameterField.click(); } else if (richParameter.type === "list(string)") { throw new Error("not implemented yet"); // FIXME } else { // text or number - const parameterField = await parameterLabel.waitForSelector( - "[data-testid='parameter-field-text'] input", - ); + const parameterField = parameterLabel.getByTestId('parameter-field-text') + .locator('input'); await parameterField.fill(buildParameter.value); } } @@ -1217,22 +1217,36 @@ export const disableDynamicParameters = async ( waitUntil: "domcontentloaded", }); + await page.waitForSelector("form", { state: "visible" }); + // Find and uncheck the "Enable dynamic parameters" checkbox const dynamicParamsCheckbox = page.getByRole("checkbox", { name: /Enable dynamic parameters for workspace creation/, }); + await dynamicParamsCheckbox.waitFor({ state: "visible" }); + // If the checkbox is checked, uncheck it if (await dynamicParamsCheckbox.isChecked()) { await dynamicParamsCheckbox.click(); } // Save the changes - await page.getByRole("button", { name: /save/i }).click(); + const saveButton = page.getByRole("button", { name: /save/i }); + await saveButton.waitFor({ state: "visible" }); + await saveButton.click(); // Wait for the success message or page to update - await page.waitForSelector("text=Template updated successfully", { + await page + .locator( + "[role='alert']:has-text('Template updated successfully')", + ) + .first() + .waitFor({ state: "visible", - timeout: 10000, + timeout: 15000, }); + + // Additional wait to ensure the changes are persisted + await page.waitForTimeout(500); }; From a358a87a934f9100a81177b97c3c4ada4a524c09 Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Tue, 29 Jul 2025 13:51:02 +0000 Subject: [PATCH 2/2] fix: fix format --- site/e2e/helpers.ts | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/site/e2e/helpers.ts b/site/e2e/helpers.ts index 5b08f1de953cb..e771adeab3813 100644 --- a/site/e2e/helpers.ts +++ b/site/e2e/helpers.ts @@ -903,23 +903,28 @@ const fillParameters = async ( } // Use modern locator approach instead of waitForSelector - const parameterLabel = page.getByTestId(`parameter-field-${richParameter.name}`); + const parameterLabel = page.getByTestId( + `parameter-field-${richParameter.name}`, + ); await expect(parameterLabel).toBeVisible(); if (richParameter.type === "bool") { - const parameterField = parameterLabel.getByTestId('parameter-field-bool') + const parameterField = parameterLabel + .getByTestId("parameter-field-bool") .locator(`.MuiRadio-root input[value='${buildParameter.value}']`); await parameterField.click(); } else if (richParameter.options.length > 0) { - const parameterField = parameterLabel.getByTestId('parameter-field-options') + const parameterField = parameterLabel + .getByTestId("parameter-field-options") .locator(`.MuiRadio-root input[value='${buildParameter.value}']`); await parameterField.click(); } else if (richParameter.type === "list(string)") { throw new Error("not implemented yet"); // FIXME } else { // text or number - const parameterField = parameterLabel.getByTestId('parameter-field-text') - .locator('input'); + const parameterField = parameterLabel + .getByTestId("parameter-field-text") + .locator("input"); await parameterField.fill(buildParameter.value); } } @@ -1238,14 +1243,12 @@ export const disableDynamicParameters = async ( // Wait for the success message or page to update await page - .locator( - "[role='alert']:has-text('Template updated successfully')", - ) - .first() - .waitFor({ - state: "visible", - timeout: 15000, - }); + .locator("[role='alert']:has-text('Template updated successfully')") + .first() + .waitFor({ + state: "visible", + timeout: 15000, + }); // Additional wait to ensure the changes are persisted await page.waitForTimeout(500);