loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request 'Show page titles in wiki search results (#6048)' (#6052) from spiffyk/forgejo:wiki-search-titles into forgejo

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6052
Reviewed-by: Shiny Nematoda <snematoda@noreply.codeberg.org>

+41 -6
+26 -2
services/wiki/wiki.go
··· 408 408 return nil 409 409 } 410 410 411 - func SearchWikiContents(ctx context.Context, repo *repo_model.Repository, keyword string) ([]*git.GrepResult, error) { 411 + type SearchContentsResult struct { 412 + *git.GrepResult 413 + Title string 414 + } 415 + 416 + func SearchWikiContents(ctx context.Context, repo *repo_model.Repository, keyword string) ([]SearchContentsResult, error) { 412 417 gitRepo, err := git.OpenRepository(ctx, repo.WikiPath()) 413 418 if err != nil { 414 419 return nil, err 415 420 } 416 421 defer gitRepo.Close() 417 422 418 - return git.GrepSearch(ctx, gitRepo, keyword, git.GrepOptions{ 423 + grepRes, err := git.GrepSearch(ctx, gitRepo, keyword, git.GrepOptions{ 419 424 ContextLineNumber: 0, 420 425 Mode: git.FixedAnyGrepMode, 421 426 RefName: repo.GetWikiBranchName(), 422 427 MaxResultLimit: 10, 423 428 MatchesPerFile: 3, 424 429 }) 430 + if err != nil { 431 + return nil, err 432 + } 433 + 434 + res := make([]SearchContentsResult, 0, len(grepRes)) 435 + for _, entry := range grepRes { 436 + wp, err := GitPathToWebPath(entry.Filename) 437 + if err != nil { 438 + return nil, err 439 + } 440 + _, title := WebPathToUserTitle(wp) 441 + 442 + res = append(res, SearchContentsResult{ 443 + GrepResult: entry, 444 + Title: title, 445 + }) 446 + } 447 + 448 + return res, nil 425 449 }
+1 -1
templates/repo/wiki/search.tmpl
··· 1 1 {{if .Results}} 2 2 {{range .Results}} 3 3 <a class="item tw-max-w-[80vw]" href="{{$.RepoLink}}/wiki/{{.Filename}}"> 4 - <b class="tw-block tw-mb-2 tw-whitespace-break-spaces">{{.Filename}}</b> 4 + <b class="tw-block tw-mb-2 tw-whitespace-break-spaces">{{.Title}}</b> 5 5 {{range .LineCodes}} 6 6 <p class="tw-my-0 tw-whitespace-break-spaces">{{.}}</p> 7 7 {{end}}
+11
tests/e2e/repo-wiki.test.e2e.ts
··· 17 17 // timeout is necessary because HTMX search could be slow 18 18 await expect(page.locator('#wiki-search a[href]')).toBeInViewport({ratio: 1}); 19 19 }); 20 + 21 + test(`Search results show titles (and not file names)`, async ({page}, workerInfo) => { 22 + test.skip(workerInfo.project.name === 'Mobile Safari', 'Fails as always, see https://codeberg.org/forgejo/forgejo/pulls/5326#issuecomment-2313275'); 23 + await page.goto('/user2/repo1/wiki'); 24 + await page.getByPlaceholder('Search wiki').fill('spaces'); 25 + await page.getByPlaceholder('Search wiki').click(); 26 + // workaround: HTMX listens on keyup events, playwright's fill only triggers the input event 27 + // so we manually "type" the last letter 28 + await page.getByPlaceholder('Search wiki').dispatchEvent('keyup'); 29 + await expect(page.locator('#wiki-search a[href] b')).toHaveText('Page With Spaced Name'); 30 + });
+3 -3
tests/integration/repo_wiki_test.go
··· 29 29 return el.Text() 30 30 }) 31 31 assert.Equal(t, []string{ 32 - "Home.md", 33 - "Page-With-Spaced-Name.md", 34 - "Unescaped File.md", 32 + "Home", 33 + "Page With Spaced Name", 34 + "Unescaped File", 35 35 }, res) 36 36 } 37 37