diff --git a/site/src/modules/tasks/TaskPrompt/TaskPrompt.stories.tsx b/site/src/modules/tasks/TaskPrompt/TaskPrompt.stories.tsx index 918df28d61..453017dfa8 100644 --- a/site/src/modules/tasks/TaskPrompt/TaskPrompt.stories.tsx +++ b/site/src/modules/tasks/TaskPrompt/TaskPrompt.stories.tsx @@ -72,6 +72,37 @@ export const ReadOnlyPresetPrompt: Story = { }, }; +export const SubmitEnabledWhenPromptNotEmpty: Story = { + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + + const prompt = await canvas.findByLabelText(/prompt/i); + await userEvent.type(prompt, MockNewTaskData.prompt); + + const submitButton = canvas.getByRole("button", { name: /run task/i }); + expect(submitButton).toBeEnabled(); + }, +}; + +export const SubmitDisabledWhenPromptEmpty: Story = { + play: async ({ canvasElement, step }) => { + const canvas = within(canvasElement); + + await step("No prompt", async () => { + const submitButton = canvas.getByRole("button", { name: /run task/i }); + expect(submitButton).toBeDisabled(); + }); + + await step("Whitespace prompt", async () => { + const prompt = await canvas.findByLabelText(/prompt/i); + await userEvent.type(prompt, " "); + + const submitButton = canvas.getByRole("button", { name: /run task/i }); + expect(submitButton).toBeDisabled(); + }); + }, +}; + export const OnSuccess: Story = { decorators: [withGlobalSnackbar], parameters: { diff --git a/site/src/modules/tasks/TaskPrompt/TaskPrompt.tsx b/site/src/modules/tasks/TaskPrompt/TaskPrompt.tsx index 643d9713a9..a3ed3b427b 100644 --- a/site/src/modules/tasks/TaskPrompt/TaskPrompt.tsx +++ b/site/src/modules/tasks/TaskPrompt/TaskPrompt.tsx @@ -368,7 +368,7 @@ const CreateTaskForm: FC = ({ templates, onSuccess }) => {