From 845367ee6d893e17d27ba38d65e4486226801dbd Mon Sep 17 00:00:00 2001 From: Presley Pizzo Date: Wed, 11 Jan 2023 02:00:12 +0000 Subject: [PATCH 1/4] Fix builds to show empty instead of loading --- site/src/api/api.ts | 2 +- site/src/xServices/workspace/workspaceXService.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/site/src/api/api.ts b/site/src/api/api.ts index 88a19561d436a..12dc60db0ef68 100644 --- a/site/src/api/api.ts +++ b/site/src/api/api.ts @@ -564,7 +564,7 @@ export const regenerateUserSSHKey = async ( export const getWorkspaceBuilds = async ( workspaceId: string, since: Date, -): Promise => { +): Promise => { const response = await axios.get( `/api/v2/workspaces/${workspaceId}/builds?since=${since.toISOString()}`, ) diff --git a/site/src/xServices/workspace/workspaceXService.ts b/site/src/xServices/workspace/workspaceXService.ts index ec6cad2bae0b7..334470cfc51d8 100644 --- a/site/src/xServices/workspace/workspaceXService.ts +++ b/site/src/xServices/workspace/workspaceXService.ts @@ -717,10 +717,11 @@ export const workspaceMachine = createMachine( if (context.workspace) { // For now, we only retrieve the last month of builds to minimize // page bloat. We should add pagination in the future. - return await API.getWorkspaceBuilds( + const builds = await API.getWorkspaceBuilds( context.workspace.id, dayjs().add(-30, "day").toDate(), ) + return builds ?? [] } else { throw Error("Cannot get builds without id") } From e163ea42630b366bba1777e922a11b340f15622e Mon Sep 17 00:00:00 2001 From: Presley Pizzo Date: Wed, 11 Jan 2023 15:31:13 +0000 Subject: [PATCH 2/4] Switch to backend fix --- coderd/workspacebuilds.go | 3 ++- coderd/workspacebuilds_test.go | 2 ++ site/src/api/api.ts | 2 +- site/src/xServices/workspace/workspaceXService.ts | 3 +-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/coderd/workspacebuilds.go b/coderd/workspacebuilds.go index 4f057786ddfe1..06a48efab9fd5 100644 --- a/coderd/workspacebuilds.go +++ b/coderd/workspacebuilds.go @@ -897,7 +897,8 @@ func (api *API) convertWorkspaceBuilds( templateVersionByID[templateVersion.ID] = templateVersion } - var apiBuilds []codersdk.WorkspaceBuild + // Should never be nil for API consistency + apiBuilds := []codersdk.WorkspaceBuild{} for _, build := range workspaceBuilds { job, exists := jobByID[build.JobID] if !exists { diff --git a/coderd/workspacebuilds_test.go b/coderd/workspacebuilds_test.go index 77183886ef2c2..f651a737a2924 100644 --- a/coderd/workspacebuilds_test.go +++ b/coderd/workspacebuilds_test.go @@ -171,6 +171,8 @@ func TestWorkspaceBuilds(t *testing.T) { ) require.NoError(t, err) require.Len(t, builds, 0) + // Should never be nil for API consistency + require.NotNil(t, builds) builds, err = client.WorkspaceBuilds(ctx, codersdk.WorkspaceBuildsRequest{WorkspaceID: workspace.ID, Since: database.Now().Add(-time.Hour)}, diff --git a/site/src/api/api.ts b/site/src/api/api.ts index 12dc60db0ef68..88a19561d436a 100644 --- a/site/src/api/api.ts +++ b/site/src/api/api.ts @@ -564,7 +564,7 @@ export const regenerateUserSSHKey = async ( export const getWorkspaceBuilds = async ( workspaceId: string, since: Date, -): Promise => { +): Promise => { const response = await axios.get( `/api/v2/workspaces/${workspaceId}/builds?since=${since.toISOString()}`, ) diff --git a/site/src/xServices/workspace/workspaceXService.ts b/site/src/xServices/workspace/workspaceXService.ts index 334470cfc51d8..ec6cad2bae0b7 100644 --- a/site/src/xServices/workspace/workspaceXService.ts +++ b/site/src/xServices/workspace/workspaceXService.ts @@ -717,11 +717,10 @@ export const workspaceMachine = createMachine( if (context.workspace) { // For now, we only retrieve the last month of builds to minimize // page bloat. We should add pagination in the future. - const builds = await API.getWorkspaceBuilds( + return await API.getWorkspaceBuilds( context.workspace.id, dayjs().add(-30, "day").toDate(), ) - return builds ?? [] } else { throw Error("Cannot get builds without id") } From 6d489387be98abeef06ffe6999b7840318a01b2c Mon Sep 17 00:00:00 2001 From: Presley Pizzo Date: Wed, 11 Jan 2023 15:54:16 +0000 Subject: [PATCH 3/4] Increase e2e test timeout --- site/e2e/tests/basicFlow.spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/site/e2e/tests/basicFlow.spec.ts b/site/e2e/tests/basicFlow.spec.ts index 6d506af8be236..784b9d0a5b517 100644 --- a/site/e2e/tests/basicFlow.spec.ts +++ b/site/e2e/tests/basicFlow.spec.ts @@ -4,7 +4,8 @@ import { SignInPage } from "../pom" import { clickButton, buttons, fillInput } from "../helpers" test("Basic flow", async ({ baseURL, page }) => { - test.slow() + // We're keeping entire flows in one test, which means the test needs extra time. + test.setTimeout(120000); await page.goto(baseURL + "/", { waitUntil: "networkidle" }) // Log-in with the default credentials we set up in the development server From 57a0df05ba28e0fe36dd822cdd340f7bcb68a6f1 Mon Sep 17 00:00:00 2001 From: Presley Pizzo Date: Wed, 11 Jan 2023 16:57:57 +0000 Subject: [PATCH 4/4] Format --- site/e2e/tests/basicFlow.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/e2e/tests/basicFlow.spec.ts b/site/e2e/tests/basicFlow.spec.ts index 784b9d0a5b517..402f89735388f 100644 --- a/site/e2e/tests/basicFlow.spec.ts +++ b/site/e2e/tests/basicFlow.spec.ts @@ -5,7 +5,7 @@ import { clickButton, buttons, fillInput } from "../helpers" test("Basic flow", async ({ baseURL, page }) => { // We're keeping entire flows in one test, which means the test needs extra time. - test.setTimeout(120000); + test.setTimeout(120000) await page.goto(baseURL + "/", { waitUntil: "networkidle" }) // Log-in with the default credentials we set up in the development server