From ed3d6fa9e3ff9c277c92c1a696f3f0d3504c426a Mon Sep 17 00:00:00 2001 From: jesmine Date: Mon, 27 Oct 2025 11:03:15 -0500 Subject: [PATCH] fix(site): preserve file path when building template version (#20481) Fixes issue where clicking Build in the template editor would always redirect to main.tf instead of keeping the currently open file. Closes #14130 --- .../TemplateVersionEditorPage.test.tsx | 33 +++++++++++++++++++ .../TemplateVersionEditorPage.tsx | 10 +++--- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx index f4db52b2ef..f8c316cd00 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx @@ -255,6 +255,39 @@ test("The file is uploaded with the correct content type", async () => { ); }); +test("Preserves the currently open file path when building a template version", async () => { + const user = userEvent.setup(); + const { router } = renderWithAuth(, { + route: `/templates/${MockTemplate.name}/versions/${MockTemplateVersion.name}/edit?path=myfile.tf`, + path: "/templates/:template/versions/:version/edit", + extraRoutes: [ + { + path: "/templates/:templateId", + element:
, + }, + ], + }); + + const topbar = await screen.findByTestId("topbar"); + + const newTemplateVersion: TemplateVersion = { + ...MockTemplateVersion, + id: "new-version-id", + name: "new-version", + }; + + await typeOnEditor("new content", user); + await buildTemplateVersion(newTemplateVersion, user, topbar); + + // Verify that the path query parameter is preserved in the URL + await waitFor(() => { + expect(router.state.location.pathname).toBe( + `/templates/${MockTemplate.name}/versions/new-version/edit`, + ); + }); + expect(router.state.location.search).toBe("?path=myfile.tf"); +}); + describe.each([ { testName: "Do not ask when template version has no errors", diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx index 9f8b7e10b6..52d52ad0e1 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx @@ -104,12 +104,10 @@ const TemplateVersionEditorPage: FC = () => { }; const navigateToVersion = (version: TemplateVersion) => { - return navigate( - `${getLink(linkToTemplate(organizationName, templateName))}/versions/${ - version.name - }/edit`, - { replace: true }, - ); + const url = `${getLink(linkToTemplate(organizationName, templateName))}/versions/${ + version.name + }/edit?${searchParams.toString()}`; + return navigate(url, { replace: true }); }; const onBuildEnds = (newVersion: TemplateVersion) => {