diff --git a/routers/web/repo/wiki_test.go b/routers/web/repo/wiki_test.go
index 00a35a5da0..47bad6d8e0 100644
--- a/routers/web/repo/wiki_test.go
+++ b/routers/web/repo/wiki_test.go
@@ -86,7 +86,7 @@ func TestWiki(t *testing.T) {
Wiki(ctx)
assert.EqualValues(t, http.StatusOK, ctx.Resp.Status())
assert.EqualValues(t, "Home", ctx.Data["Title"])
- assertPagesMetas(t, []string{"Home", "Page With Image", "Page With Spaced Name", "Unescaped File"}, ctx.Data["Pages"])
+ assertPagesMetas(t, []string{"Home", "Long Page", "Page With Image", "Page With Spaced Name", "Unescaped File"}, ctx.Data["Pages"])
}
func TestWikiPages(t *testing.T) {
@@ -96,7 +96,7 @@ func TestWikiPages(t *testing.T) {
contexttest.LoadRepo(t, ctx, 1)
WikiPages(ctx)
assert.EqualValues(t, http.StatusOK, ctx.Resp.Status())
- assertPagesMetas(t, []string{"Home", "Page With Image", "Page With Spaced Name", "Unescaped File"}, ctx.Data["Pages"])
+ assertPagesMetas(t, []string{"Home", "Long Page", "Page With Image", "Page With Spaced Name", "Unescaped File"}, ctx.Data["Pages"])
}
func TestNewWiki(t *testing.T) {
diff --git a/templates/repo/wiki/search.tmpl b/templates/repo/wiki/search.tmpl
index 1b774908d0..5795b399af 100644
--- a/templates/repo/wiki/search.tmpl
+++ b/templates/repo/wiki/search.tmpl
@@ -1,6 +1,6 @@
{{if .Results}}
{{range .Results}}
-
+
{{.Title}}
{{range .LineCodes}}
{{.}}
diff --git a/tests/e2e/repo-wiki.test.e2e.js b/tests/e2e/repo-wiki.test.e2e.js
index 6941eb1d4a..dc8a67065b 100644
--- a/tests/e2e/repo-wiki.test.e2e.js
+++ b/tests/e2e/repo-wiki.test.e2e.js
@@ -2,18 +2,27 @@
import {expect} from '@playwright/test';
import {test} from './utils_e2e.js';
-test(`Search for long titles and test for no overflow`, async ({page}, workerInfo) => {
- test.skip(workerInfo.project.name === 'Mobile Safari', 'Fails as always, see https://codeberg.org/forgejo/forgejo/pulls/5326#issuecomment-2313275');
- await page.goto('/user2/repo1/wiki');
- await page.waitForLoadState('networkidle');
- await page.getByPlaceholder('Search wiki').fill('spaces');
- await page.getByPlaceholder('Search wiki').click();
- // workaround: HTMX listens on keyup events, playwright's fill only triggers the input event
- // so we manually "type" the last letter
- await page.getByPlaceholder('Search wiki').dispatchEvent('keyup');
- // timeout is necessary because HTMX search could be slow
- await expect(page.locator('#wiki-search a[href]')).toBeInViewport({ratio: 1});
-});
+for (const searchTerm of ['space', 'consectetur']) {
+ for (const width of [null, 2560, 4000]) {
+ test(`Search for '${searchTerm}' and test for no overflow ${width && `on ${width}-wide viewport` || ''}`, async ({page, viewport}, workerInfo) => {
+ test.skip(workerInfo.project.name === 'Mobile Safari', 'Fails as always, see https://codeberg.org/forgejo/forgejo/pulls/5326#issuecomment-2313275');
+
+ await page.setViewportSize({
+ width: width ?? viewport.width,
+ height: 1440, // We're testing that we fit horizontally - vertical scrolling is fine.
+ });
+ await page.goto('/user2/repo1/wiki');
+ await page.waitForLoadState('networkidle');
+ await page.getByPlaceholder('Search wiki').fill(searchTerm);
+ await page.getByPlaceholder('Search wiki').click();
+ // workaround: HTMX listens on keyup events, playwright's fill only triggers the input event
+ // so we manually "type" the last letter
+ await page.getByPlaceholder('Search wiki').dispatchEvent('keyup');
+ // timeout is necessary because HTMX search could be slow
+ await expect(page.locator('#wiki-search a[href]')).toBeInViewport({ratio: 1});
+ });
+ }
+}
test(`Search results show titles (and not file names)`, async ({page}, workerInfo) => {
test.skip(workerInfo.project.name === 'Mobile Safari', 'Fails as always, see https://codeberg.org/forgejo/forgejo/pulls/5326#issuecomment-2313275');
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/53/0ab3e043bf2295fd1cec3129bf203a4349597a b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/53/0ab3e043bf2295fd1cec3129bf203a4349597a
new file mode 100644
index 0000000000..eeae5d2b64
Binary files /dev/null and b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/53/0ab3e043bf2295fd1cec3129bf203a4349597a differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/bf/29486462016efad8872371078932d8c2cb5253 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/bf/29486462016efad8872371078932d8c2cb5253
new file mode 100644
index 0000000000..ab5b5954cb
Binary files /dev/null and b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/bf/29486462016efad8872371078932d8c2cb5253 differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/c0/b5b381e2df9f66d11e8c95fe7467b8fb7f3e4e b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/c0/b5b381e2df9f66d11e8c95fe7467b8fb7f3e4e
new file mode 100644
index 0000000000..0474927fd2
Binary files /dev/null and b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/c0/b5b381e2df9f66d11e8c95fe7467b8fb7f3e4e differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/d4/9ac742d44063dcf69d4e0afe725813b777dd89 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/d4/9ac742d44063dcf69d4e0afe725813b777dd89
new file mode 100644
index 0000000000..9dc276f37d
--- /dev/null
+++ b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/d4/9ac742d44063dcf69d4e0afe725813b777dd89
@@ -0,0 +1 @@
+xn@*GjmJC1~R0ӧi}*U*gw>H˺56}3)Sh09Tƨ;2i2-^jL4wS۪pmSTȭ\9V1Sp"|Ǔ.Z>법usuG63)"9G..O #XJ$ ?o<1_)n/~6cSlKOv"DJsEz[_s!2ϡv%eo(
\ No newline at end of file
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/refs/heads/master b/tests/gitea-repositories-meta/user2/repo1.wiki.git/refs/heads/master
index 38984b12b7..c804802cbf 100644
--- a/tests/gitea-repositories-meta/user2/repo1.wiki.git/refs/heads/master
+++ b/tests/gitea-repositories-meta/user2/repo1.wiki.git/refs/heads/master
@@ -1 +1 @@
-0dca5bd9b5d7ef937710e056f575e86c0184ba85
+d49ac742d44063dcf69d4e0afe725813b777dd89
diff --git a/tests/integration/api_wiki_test.go b/tests/integration/api_wiki_test.go
index e5eb7a52c1..ac868bbed0 100644
--- a/tests/integration/api_wiki_test.go
+++ b/tests/integration/api_wiki_test.go
@@ -132,8 +132,31 @@ func TestAPIListWikiPages(t *testing.T) {
},
},
{
- Title: "Page With Image",
+ Title: "Long Page",
HTMLURL: meta[1].HTMLURL,
+ SubURL: "Long-Page",
+ LastCommit: &api.WikiCommit{
+ ID: "d49ac742d44063dcf69d4e0afe725813b777dd89",
+ Author: &api.CommitUser{
+ Identity: api.Identity{
+ Name: "Oto Šťáva",
+ Email: "oto.stava@gmail.com",
+ },
+ Date: "2024-11-23T11:16:51Z",
+ },
+ Committer: &api.CommitUser{
+ Identity: api.Identity{
+ Name: "Oto Šťáva",
+ Email: "oto.stava@gmail.com",
+ },
+ Date: "2024-11-23T11:16:51Z",
+ },
+ Message: "add long page\n",
+ },
+ },
+ {
+ Title: "Page With Image",
+ HTMLURL: meta[2].HTMLURL,
SubURL: "Page-With-Image",
LastCommit: &api.WikiCommit{
ID: "0cf15c3f66ec8384480ed9c3cf87c9e97fbb0ec3",
@@ -156,7 +179,7 @@ func TestAPIListWikiPages(t *testing.T) {
},
{
Title: "Page With Spaced Name",
- HTMLURL: meta[2].HTMLURL,
+ HTMLURL: meta[3].HTMLURL,
SubURL: "Page-With-Spaced-Name",
LastCommit: &api.WikiCommit{
ID: "c10d10b7e655b3dab1f53176db57c8219a5488d6",
@@ -179,7 +202,7 @@ func TestAPIListWikiPages(t *testing.T) {
},
{
Title: "Unescaped File",
- HTMLURL: meta[3].HTMLURL,
+ HTMLURL: meta[4].HTMLURL,
SubURL: "Unescaped-File",
LastCommit: &api.WikiCommit{
ID: "0dca5bd9b5d7ef937710e056f575e86c0184ba85",
diff --git a/web_src/css/modules/container.css b/web_src/css/modules/container.css
index f394d6c06d..95c71b207f 100644
--- a/web_src/css/modules/container.css
+++ b/web_src/css/modules/container.css
@@ -3,12 +3,14 @@
.ui.container {
display: block;
- max-width: 100%;
+ --container-width: 100%;
+ max-width: var(--container-width);
}
@media (max-width: 767.98px) {
.ui.ui.ui.container:not(.fluid) {
- width: auto;
+ --container-width: auto;
+ width: var(--container-width);
margin-left: 1em;
margin-right: 1em;
}
@@ -16,7 +18,8 @@
@media (min-width: 768px) and (max-width: 991.98px) {
.ui.ui.ui.container:not(.fluid) {
- width: 723px;
+ --container-width: 723px;
+ width: var(--container-width);
margin-left: auto;
margin-right: auto;
}
@@ -24,7 +27,8 @@
@media (min-width: 992px) and (max-width: 1199.98px) {
.ui.ui.ui.container:not(.fluid) {
- width: 933px;
+ --container-width: 933px;
+ width: var(--container-width);
margin-left: auto;
margin-right: auto;
}
@@ -32,14 +36,16 @@
@media (min-width: 1200px) {
.ui.ui.ui.container:not(.fluid) {
- width: 1127px;
+ --container-width: 1127px;
+ width: var(--container-width);
margin-left: auto;
margin-right: auto;
}
}
.ui.fluid.container {
- width: 100%;
+ --container-width: 100%;
+ width: var(--container-width);
}
.ui[class*="center aligned"].container {
@@ -48,7 +54,8 @@
/* overwrite width of containers inside the main page content div (div with class "page-content") */
.page-content .ui.ui.ui.container:not(.fluid) {
- width: 1280px;
+ --container-width: 1280px;
+ width: var(--container-width);
max-width: calc(100% - calc(2 * var(--page-margin-x)));
margin-left: auto;
margin-right: auto;