diff --git a/TODO.md b/TODO.md index bf60f7f..cd9c6c5 100644 --- a/TODO.md +++ b/TODO.md @@ -20,6 +20,11 @@ regress. # Completed Steps +- 2026-10-02: On the Applications list, a long repository URL now wraps within + its column instead of making the table wider than its card, which cut off the + Actions column and the Deploy buttons. In a window too narrow for the table, + the card scrolls sideways instead of cutting the table off (#262). + - 2026-10-01: Built images are tagged `upaas-:`, git's short form of the commit built, instead of the deployment number. A redeploy of a commit gives its tag to the new image; the old one is kept while the app runs diff --git a/internal/handlers/dashboard_layout_test.go b/internal/handlers/dashboard_layout_test.go new file mode 100644 index 0000000..3ea0a0d --- /dev/null +++ b/internal/handlers/dashboard_layout_test.go @@ -0,0 +1,56 @@ +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" +) + +// TestDashboardTableFitsCard checks that the card around the app table +// scrolls sideways instead of hiding what does not fit, and that a long +// repository URL wraps instead of pushing the action buttons out. +func TestDashboardTableFitsCard(t *testing.T) { + t.Parallel() + + testCtx := setupTestHandlers(t) + + repoURL := "https://git.example.com/user/" + + "a-repository-name-long-enough-to-push-the-action-buttons-out.git" + + _, err := testCtx.appSvc.CreateApp(t.Context(), app.CreateAppInput{ + Name: "long-url-app", + RepoURL: repoURL, + }) + require.NoError(t, err) + + request := httptest.NewRequestWithContext(t.Context(), http.MethodGet, "/", nil) + recorder := httptest.NewRecorder() + + testCtx.handlers.HandleDashboard().ServeHTTP(recorder, request) + + require.Equal(t, http.StatusOK, recorder.Code) + + body := recorder.Body.String() + + beforeTable, _, found := strings.Cut(body, ``) + require.True(t, found, "dashboard has no app table") + + cardTag := beforeTable[strings.LastIndex(beforeTable, ""+repoURL+"") + require.True(t, found, "dashboard has no repository cell") + + cellTag := beforeURL[strings.LastIndex(beforeURL, " {{if .AppStats}} -
+
@@ -41,7 +41,7 @@ {{.App.Name}} - +
{{.App.RepoURL}}{{.App.RepoURL}} {{.App.Branch}} {{if eq .App.Status "running"}}