diff --git a/site/e2e/helpers.ts b/site/e2e/helpers.ts index 942aa6962e76d..1e54d84b8082b 100644 --- a/site/e2e/helpers.ts +++ b/site/e2e/helpers.ts @@ -16,7 +16,7 @@ import { RichParameter, } from "./provisionerGenerated"; import { prometheusPort, pprofPort } from "./constants"; -import { port, TEST_TIMEOUT } from "./playwright.config"; +import { port } from "./playwright.config"; import * as ssh from "ssh2"; import { Duplex } from "stream"; import { WorkspaceBuildParameter } from "api/typesGenerated"; @@ -197,7 +197,6 @@ export const stopWorkspace = async (page: Page, workspaceName: string) => { "span[data-testid='build-status'] >> text=Stopped", { state: "visible", - timeout: TEST_TIMEOUT * 2, }, ); }; diff --git a/site/e2e/playwright.config.ts b/site/e2e/playwright.config.ts index 7d9c9202573f6..78ebf4cc039f4 100644 --- a/site/e2e/playwright.config.ts +++ b/site/e2e/playwright.config.ts @@ -12,8 +12,6 @@ const coderMain = path.join(__dirname, "../../enterprise/cmd/coder"); export const STORAGE_STATE = path.join(__dirname, ".auth.json"); -export const TEST_TIMEOUT = 60_000; - const localURL = (port: number, path: string): string => { return `http://localhost:${port}${path}`; }; @@ -31,7 +29,7 @@ export default defineConfig({ use: { storageState: STORAGE_STATE, }, - timeout: TEST_TIMEOUT, + timeout: 60_000, }, ], reporter: [["./reporter.ts"]], diff --git a/site/src/api/queries/workspaces.ts b/site/src/api/queries/workspaces.ts index 1dd3c0be1a592..7b1ef8a7e8e0c 100644 --- a/site/src/api/queries/workspaces.ts +++ b/site/src/api/queries/workspaces.ts @@ -249,10 +249,18 @@ const updateWorkspaceBuild = async ( build.workspace_name, ); const previousData = queryClient.getQueryData(workspaceKey) as Workspace; - queryClient.setQueryData(workspaceKey, { - ...previousData, - latest_build: build, - }); + + // Check if the build returned is newer than the previous build that could be + // updated from web socket + const previousUpdate = new Date(previousData.latest_build.updated_at); + const newestUpdate = new Date(build.updated_at); + if (newestUpdate > previousUpdate) { + queryClient.setQueryData(workspaceKey, { + ...previousData, + latest_build: build, + }); + } + await queryClient.invalidateQueries({ queryKey: workspaceBuildsKey(build.workspace_id), });