From f68e755bd21a6339ceb47d49e98d1cf7521d55c9 Mon Sep 17 00:00:00 2001 From: sneak Date: Tue, 29 Sep 2026 09:47:13 +0000 Subject: [PATCH] Show the deploy branch in the app page title and early in the app list (closes #240) The app page shows the configured branch as a neutral label next to the status badge; the line under the title now shows only the repository. The app list moves the Branch column to right after Name and lets the table scroll sideways inside its card, so narrow screens no longer cut columns off. A new test renders both pages for an app on a non-main branch. Model: opus-5-5 --- TODO.md | 5 ++ internal/handlers/app_branch_test.go | 76 ++++++++++++++++++++++++++++ templates/app_detail.html | 5 +- templates/dashboard.html | 6 ++- 4 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 internal/handlers/app_branch_test.go diff --git a/TODO.md b/TODO.md index ff43640..9802577 100644 --- a/TODO.md +++ b/TODO.md @@ -20,6 +20,11 @@ regress. # Completed Steps +- 2026-09-29: The app page shows the app's branch as a label in its title, next + to the status badge, instead of after the repository under it; the app list + shows the Branch column right after Name and scrolls sideways on narrow + screens instead of cutting columns off (#240). + - 2026-09-29: `docker-compose.yml` now sets `UPAAS_PORT` to 8080 as well as `PORT`, since upaas reads `UPAAS_PORT` first and a `UPAAS_PORT` in `.env` made it listen away from the port mapping and healthcheck; the README's Compose diff --git a/internal/handlers/app_branch_test.go b/internal/handlers/app_branch_test.go new file mode 100644 index 0000000..a130971 --- /dev/null +++ b/internal/handlers/app_branch_test.go @@ -0,0 +1,76 @@ +package handlers_test + +import ( + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "sneak.berlin/go/upaas/internal/service/app" +) + +// TestAppBranchIsShown checks that an app's branch can be read from the app +// page title and from the app list without opening the edit page. +func TestAppBranchIsShown(t *testing.T) { + t.Parallel() + + testCtx := setupTestHandlers(t) + + createdApp, err := testCtx.appSvc.CreateApp(t.Context(), app.CreateAppInput{ + Name: "branch-shown-app", + RepoURL: "git@example.com:user/branch-shown-app.git", + Branch: "staging", + }) + require.NoError(t, err) + + t.Run("in the app page title next to the status badge", func(t *testing.T) { + t.Parallel() + + request := httptest.NewRequestWithContext( + t.Context(), http.MethodGet, "/apps/"+createdApp.ID, nil, + ) + request = addChiURLParams(request, map[string]string{"id": createdApp.ID}) + recorder := httptest.NewRecorder() + + testCtx.handlers.HandleAppDetail().ServeHTTP(recorder, request) + + require.Equal(t, http.StatusOK, recorder.Code) + + // The title row runs from the app name heading to the end of its div. + _, afterHeading, found := strings.Cut(recorder.Body.String(), "") + assert.Contains(t, titleRow, `x-text="statusLabel"`) + assert.Contains(t, titleRow, ">staging") + }) + + t.Run("in the app list before the repository", func(t *testing.T) { + t.Parallel() + + request := httptest.NewRequestWithContext( + t.Context(), http.MethodGet, "/", nil, + ) + recorder := httptest.NewRecorder() + + testCtx.handlers.HandleDashboard().ServeHTTP(recorder, request) + + require.Equal(t, http.StatusOK, recorder.Code) + + _, afterRowStart, found := strings.Cut( + recorder.Body.String(), ``, + ) + require.True(t, found, "app list has no row for the app") + + row, _, _ := strings.Cut(afterRowStart, "") + branchAt := strings.Index(row, ">staging") + repoAt := strings.Index(row, createdApp.RepoURL) + + require.NotEqual(t, -1, branchAt, "branch missing from the app's row") + require.NotEqual(t, -1, repoAt, "repository missing from the app's row") + assert.Less(t, branchAt, repoAt, "branch should come before repository") + }) +} diff --git a/templates/app_detail.html b/templates/app_detail.html index ecb085e..02d65c5 100644 --- a/templates/app_detail.html +++ b/templates/app_detail.html @@ -26,11 +26,12 @@
-
+

{{.App.Name}}

+ {{.App.Branch}}
-

{{.App.RepoURL}}@{{.App.Branch}}

+

{{.App.RepoURL}}

Edit diff --git a/templates/dashboard.html b/templates/dashboard.html index ff66e1c..480b9af 100644 --- a/templates/dashboard.html +++ b/templates/dashboard.html @@ -21,12 +21,13 @@ {{if .AppStats}}
+
- + @@ -41,8 +42,8 @@ {{.App.Name}} - +
NameRepository BranchRepository Status Last Deploy Deploys {{.App.RepoURL}} {{.App.Branch}}{{.App.RepoURL}} {{if eq .App.Status "running"}} Running @@ -78,6 +79,7 @@ {{end}}
+
{{else}}