diff --git a/options/locale_next/locale_en-US.json b/options/locale_next/locale_en-US.json index e525598ed5..def49e1a58 100644 --- a/options/locale_next/locale_en-US.json +++ b/options/locale_next/locale_en-US.json @@ -17,5 +17,6 @@ "themes.names.forgejo-auto": "Forgejo (follow system theme)", "themes.names.forgejo-light": "Forgejo light", "themes.names.forgejo-dark": "Forgejo dark", - "error.not_found.title": "Page not found" + "error.not_found.title": "Page not found", + "alert.asset_load_failed": "Failed to load asset files from {path}. Please make sure the asset files can be accessed." } \ No newline at end of file diff --git a/templates/base/footer.tmpl b/templates/base/footer.tmpl index fed426a469..3c2def228a 100644 --- a/templates/base/footer.tmpl +++ b/templates/base/footer.tmpl @@ -13,7 +13,7 @@ {{template "base/footer_content" .}} - + {{template "custom/footer" .}} diff --git a/tests/integration/common_navigation_test.go b/tests/integration/common_navigation_test.go new file mode 100644 index 0000000000..93a2c15ece --- /dev/null +++ b/tests/integration/common_navigation_test.go @@ -0,0 +1,41 @@ +// Copyright 2024-2025 The Forgejo Authors. All rights reserved. +// SPDX-License-Identifier: GPL-3.0-or-later + +package integration + +import ( + "fmt" + "net/http" + "strings" + "testing" + + "forgejo.org/models/unittest" + "forgejo.org/modules/translation" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// This test verifies common elements that are visible on all pages but most +// likely to be first seen on `/` +func TestCommonNavigationElements(t *testing.T) { + require.NoError(t, unittest.PrepareTestDatabase()) + + session := loginUser(t, "user1") + locale := translation.NewLocale("en-US") + + response := session.MakeRequest(t, NewRequest(t, "GET", "/"), http.StatusOK) + page := NewHTMLParser(t, response.Body) + + // Navbar + links := page.Find("#navbar .dropdown[data-tooltip-content='Create…'] .menu") + assert.Equal(t, locale.TrString("new_repo.link"), strings.TrimSpace(links.Find("a[href='/repo/create']").Text())) + assert.Equal(t, locale.TrString("new_migrate.link"), strings.TrimSpace(links.Find("a[href='/repo/migrate']").Text())) + assert.Equal(t, locale.TrString("new_org.link"), strings.TrimSpace(links.Find("a[href='/org/create']").Text())) + + // After footer: index.js + page.AssertElement(t, "script[src^='/assets/js/index.js']", true) + onerror, _ := page.Find("script[src^='/assets/js/index.js']").Attr("onerror") + expected := fmt.Sprintf("alert('%s'.replace('{path}', this.src))", locale.TrString("alert.asset_load_failed")) + assert.Equal(t, expected, onerror) +} diff --git a/tests/integration/user_dashboard_test.go b/tests/integration/user_dashboard_test.go index 9e1e04c29f..b18f96c090 100644 --- a/tests/integration/user_dashboard_test.go +++ b/tests/integration/user_dashboard_test.go @@ -1,4 +1,4 @@ -// Copyright 2024 The Forgejo Authors. All rights reserved. +// Copyright 2024-2025 The Forgejo Authors. All rights reserved. // SPDX-License-Identifier: GPL-3.0-or-later package integration @@ -14,7 +14,6 @@ import ( unit_model "forgejo.org/models/unit" "forgejo.org/models/unittest" user_model "forgejo.org/models/user" - "forgejo.org/modules/translation" issue_service "forgejo.org/services/issue" files_service "forgejo.org/services/repository/files" "forgejo.org/tests" @@ -24,20 +23,6 @@ import ( "github.com/stretchr/testify/require" ) -func TestUserDashboardActionLinks(t *testing.T) { - require.NoError(t, unittest.PrepareTestDatabase()) - - session := loginUser(t, "user1") - locale := translation.NewLocale("en-US") - - response := session.MakeRequest(t, NewRequest(t, "GET", "/"), http.StatusOK) - page := NewHTMLParser(t, response.Body) - links := page.Find("#navbar .dropdown[data-tooltip-content='Create…'] .menu") - assert.Equal(t, locale.TrString("new_repo.link"), strings.TrimSpace(links.Find("a[href='/repo/create']").Text())) - assert.Equal(t, locale.TrString("new_migrate.link"), strings.TrimSpace(links.Find("a[href='/repo/migrate']").Text())) - assert.Equal(t, locale.TrString("new_org.link"), strings.TrimSpace(links.Find("a[href='/org/create']").Text())) -} - func TestUserDashboardFeedWelcome(t *testing.T) { require.NoError(t, unittest.PrepareTestDatabase())