From ffe22a0ffce1c3cc54138a4bedf7e907c98915f6 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Mon, 27 Oct 2025 10:09:52 -0500 Subject: [PATCH] chore: show build timeline regardless of agent scripts count (#20470) --- .../WorkspaceTimings.stories.tsx | 44 +++++++++++++++++++ .../WorkspaceTiming/WorkspaceTimings.tsx | 4 +- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx index 9c8ce12168..f82f1ccae5 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx @@ -277,3 +277,47 @@ export const InvalidTimeRange: Story = { ], }, }; + +// A template with no agent scripts. +export const NoAgentScripts: Story = { + args: { + provisionerTimings: [ + { + ...WorkspaceTimingsResponse.provisioner_timings[0], + stage: "init", + started_at: "2025-01-01T00:00:00Z", + ended_at: "2025-01-01T00:01:00Z", + }, + { + ...WorkspaceTimingsResponse.provisioner_timings[0], + stage: "plan", + started_at: "2025-01-01T00:01:00Z", + ended_at: "0001-01-01T00:00:00Z", + }, + { + ...WorkspaceTimingsResponse.provisioner_timings[0], + stage: "graph", + started_at: "0001-01-01T00:00:00Z", + ended_at: "2025-01-01T00:03:00Z", + }, + { + ...WorkspaceTimingsResponse.provisioner_timings[0], + stage: "apply", + started_at: "2025-01-01T00:03:00Z", + ended_at: "2025-01-01T00:04:00Z", + }, + ], + agentConnectionTimings: [ + { + started_at: "2025-01-01T00:05:00Z", + ended_at: "2025-01-01T00:06:00Z", + stage: "connect", + workspace_agent_id: "67e37a9d-ccac-497e-8f48-4093bcc4f3e7", + workspace_agent_name: "main", + }, + ], + agentScriptTimings: [ + // No agent scripts in the template + ], + }, +}; diff --git a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx index 7614013c9b..b4cffd4d71 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx @@ -69,8 +69,10 @@ export const WorkspaceTimings: FC = ({ // filled in different moments. const isLoading = [ provisionerTimings, - agentScriptTimings, agentConnectionTimings, + // agentScriptTimings might be an empty array if there are no scripts to run. + // Only provisionerTimings and agentConnectionTimings are guaranteed to have + // at least one entry. ].some((t) => t.length === 0); // Each agent connection timing is a stage in the timeline to make it easier