From 747699f21abccc4494d79a2a94153d65d701e3d9 Mon Sep 17 00:00:00 2001 From: Sas Swart Date: Thu, 20 Mar 2025 07:00:09 +0000 Subject: [PATCH 1/4] fix(site): gracefully handle reselection of the same preset --- .../CreateWorkspacePage/CreateWorkspacePageView.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx index 8a1d380a16191..34917fe14b058 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx @@ -286,11 +286,13 @@ export const CreateWorkspacePageView: FC = ({ label="Preset" options={presetOptions} onSelect={(option) => { - setSelectedPresetIndex( - presetOptions.findIndex( - (preset) => preset.value === option?.value, - ), + const index = presetOptions.findIndex( + (preset) => preset.value === option?.value, ); + if (index === -1) { + return; + } + setSelectedPresetIndex(index); }} placeholder="Select a preset" selectedOption={presetOptions[selectedPresetIndex]} From f60d618243a9f732fc0eaf0713b42e707265e944 Mon Sep 17 00:00:00 2001 From: Sas Swart Date: Thu, 20 Mar 2025 07:06:36 +0000 Subject: [PATCH 2/4] add a story to ensure that reselection of the same preset doesn't break --- .../CreateWorkspacePageView.stories.tsx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx index 6f0647c9f28e8..4047f47c8e2b6 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx @@ -159,6 +159,21 @@ export const PresetSelected: Story = { }, }; +export const PresetReselected: Story = { + args: PresetsButNoneSelected.args, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + + // First selection of Preset 1 + await userEvent.click(canvas.getByLabelText("Preset")); + await userEvent.click(canvas.getByText("Preset 1")); + + // Reselect the same preset + await userEvent.click(canvas.getByLabelText("Preset")); + await userEvent.click(canvas.getByText("Preset 1")); + }, +}; + export const ExternalAuth: Story = { args: { externalAuth: [ From ac2c0bb417b4f593292f998ba6636fb4b6458125 Mon Sep 17 00:00:00 2001 From: Sas Swart Date: Thu, 20 Mar 2025 07:27:53 +0000 Subject: [PATCH 3/4] fix story --- .../CreateWorkspacePage/CreateWorkspacePageView.stories.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx index 4047f47c8e2b6..e16e941bbcd5c 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx @@ -166,11 +166,11 @@ export const PresetReselected: Story = { // First selection of Preset 1 await userEvent.click(canvas.getByLabelText("Preset")); - await userEvent.click(canvas.getByText("Preset 1")); + await userEvent.click(canvas.getByText("Preset 1", { selector: '.MuiMenuItem-root' })); // Reselect the same preset await userEvent.click(canvas.getByLabelText("Preset")); - await userEvent.click(canvas.getByText("Preset 1")); + await userEvent.click(canvas.getByText("Preset 1", { selector: '.MuiMenuItem-root' })); }, }; From 8e13edaa6591558b5e50e56a39c7425175628b71 Mon Sep 17 00:00:00 2001 From: Sas Swart Date: Thu, 20 Mar 2025 07:30:10 +0000 Subject: [PATCH 4/4] make fmt --- .../CreateWorkspacePageView.stories.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx index e16e941bbcd5c..a972cefd2bafe 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx @@ -166,11 +166,15 @@ export const PresetReselected: Story = { // First selection of Preset 1 await userEvent.click(canvas.getByLabelText("Preset")); - await userEvent.click(canvas.getByText("Preset 1", { selector: '.MuiMenuItem-root' })); + await userEvent.click( + canvas.getByText("Preset 1", { selector: ".MuiMenuItem-root" }), + ); // Reselect the same preset await userEvent.click(canvas.getByLabelText("Preset")); - await userEvent.click(canvas.getByText("Preset 1", { selector: '.MuiMenuItem-root' })); + await userEvent.click( + canvas.getByText("Preset 1", { selector: ".MuiMenuItem-root" }), + ); }, };