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 'Refactor repo migration items' (#4710) from 0ko/forgejo:ui-migration-items into forgejo

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/4710
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>

+199 -44
+14 -8
templates/repo/migrate/codebase.tmpl
··· 34 34 <div class="inline field"> 35 35 <label>{{ctx.Locale.Tr "repo.migrate_items"}}</label> 36 36 <div class="ui checkbox"> 37 - <input name="milestones" type="checkbox" {{if .milestones}}checked{{end}}> 38 - <label>{{ctx.Locale.Tr "repo.migrate_items_milestones"}}</label> 37 + <input name="issues" type="checkbox" {{if .issues}}checked{{end}}> 38 + <label>{{ctx.Locale.Tr "repo.migrate_items_issues"}}</label> 39 39 </div> 40 + </div> 41 + <div class="inline field"> 42 + <label></label> 40 43 <div class="ui checkbox"> 41 - <input name="labels" type="checkbox" {{if .labels}}checked{{end}}> 42 - <label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label> 44 + <input name="pull_requests" type="checkbox" {{if .pull_requests}}checked{{end}}> 45 + <label>{{ctx.Locale.Tr "repo.migrate_items_merge_requests"}}</label> 43 46 </div> 44 47 </div> 45 48 <div class="inline field"> 46 49 <label></label> 47 50 <div class="ui checkbox"> 48 - <input name="issues" type="checkbox" {{if .issues}}checked{{end}}> 49 - <label>{{ctx.Locale.Tr "repo.migrate_items_issues"}}</label> 51 + <input name="labels" type="checkbox" {{if .labels}}checked{{end}}> 52 + <label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label> 50 53 </div> 54 + </div> 55 + <div class="inline field"> 56 + <label></label> 51 57 <div class="ui checkbox"> 52 - <input name="pull_requests" type="checkbox" {{if .pull_requests}}checked{{end}}> 53 - <label>{{ctx.Locale.Tr "repo.migrate_items_merge_requests"}}</label> 58 + <input name="milestones" type="checkbox" {{if .milestones}}checked{{end}}> 59 + <label>{{ctx.Locale.Tr "repo.migrate_items_milestones"}}</label> 54 60 </div> 55 61 </div> 56 62 </div>
+12 -6
templates/repo/migrate/gitbucket.tmpl
··· 43 43 <div class="inline field"> 44 44 <label></label> 45 45 <div class="ui checkbox"> 46 - <input name="labels" type="checkbox" {{if .labels}}checked{{end}}> 47 - <label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label> 48 - </div> 49 - <div class="ui checkbox"> 50 46 <input name="issues" type="checkbox" {{if .issues}}checked{{end}}> 51 47 <label>{{ctx.Locale.Tr "repo.migrate_items_issues"}}</label> 52 48 </div> ··· 57 53 <input name="pull_requests" type="checkbox" {{if .pull_requests}}checked{{end}}> 58 54 <label>{{ctx.Locale.Tr "repo.migrate_items_pullrequests"}}</label> 59 55 </div> 56 + </div> 57 + <div class="inline field"> 58 + <label></label> 60 59 <div class="ui checkbox"> 61 - <input name="releases" type="checkbox" {{if .releases}}checked{{end}}> 62 - <label>{{ctx.Locale.Tr "repo.migrate_items_releases"}}</label> 60 + <input name="labels" type="checkbox" {{if .labels}}checked{{end}}> 61 + <label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label> 63 62 </div> 64 63 </div> 65 64 <div class="inline field"> ··· 67 66 <div class="ui checkbox"> 68 67 <input name="milestones" type="checkbox" {{if .milestones}}checked{{end}}> 69 68 <label>{{ctx.Locale.Tr "repo.migrate_items_milestones"}}</label> 69 + </div> 70 + </div> 71 + <div class="inline field"> 72 + <label></label> 73 + <div class="ui checkbox"> 74 + <input name="releases" type="checkbox" {{if .releases}}checked{{end}}> 75 + <label>{{ctx.Locale.Tr "repo.migrate_items_releases"}}</label> 70 76 </div> 71 77 </div> 72 78 </div>
+12 -6
templates/repo/migrate/gitea.tmpl
··· 39 39 <div class="inline field"> 40 40 <label></label> 41 41 <div class="ui checkbox"> 42 - <input name="labels" type="checkbox" {{if .labels}} checked{{end}}> 43 - <label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label> 44 - </div> 45 - <div class="ui checkbox"> 46 42 <input name="issues" type="checkbox" {{if .issues}} checked{{end}}> 47 43 <label>{{ctx.Locale.Tr "repo.migrate_items_issues"}}</label> 48 44 </div> ··· 53 49 <input name="pull_requests" type="checkbox" {{if .pull_requests}} checked{{end}}> 54 50 <label>{{ctx.Locale.Tr "repo.migrate_items_pullrequests"}}</label> 55 51 </div> 52 + </div> 53 + <div class="inline field"> 54 + <label></label> 56 55 <div class="ui checkbox"> 57 - <input name="releases" type="checkbox" {{if .releases}} checked{{end}}> 58 - <label>{{ctx.Locale.Tr "repo.migrate_items_releases"}}</label> 56 + <input name="labels" type="checkbox" {{if .labels}} checked{{end}}> 57 + <label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label> 59 58 </div> 60 59 </div> 61 60 <div class="inline field"> ··· 63 62 <div class="ui checkbox"> 64 63 <input name="milestones" type="checkbox" {{if .milestones}} checked{{end}}> 65 64 <label>{{ctx.Locale.Tr "repo.migrate_items_milestones"}}</label> 65 + </div> 66 + </div> 67 + <div class="inline field"> 68 + <label></label> 69 + <div class="ui checkbox"> 70 + <input name="releases" type="checkbox" {{if .releases}} checked{{end}}> 71 + <label>{{ctx.Locale.Tr "repo.migrate_items_releases"}}</label> 66 72 </div> 67 73 </div> 68 74 </div>
+12 -6
templates/repo/migrate/github.tmpl
··· 41 41 <div class="inline field"> 42 42 <label></label> 43 43 <div class="ui checkbox"> 44 - <input name="labels" type="checkbox" {{if .labels}}checked{{end}}> 45 - <label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label> 46 - </div> 47 - <div class="ui checkbox"> 48 44 <input name="issues" type="checkbox" {{if .issues}}checked{{end}}> 49 45 <label>{{ctx.Locale.Tr "repo.migrate_items_issues"}}</label> 50 46 </div> ··· 55 51 <input name="pull_requests" type="checkbox" {{if .pull_requests}}checked{{end}}> 56 52 <label>{{ctx.Locale.Tr "repo.migrate_items_pullrequests"}}</label> 57 53 </div> 54 + </div> 55 + <div class="inline field"> 56 + <label></label> 58 57 <div class="ui checkbox"> 59 - <input name="releases" type="checkbox" {{if .releases}}checked{{end}}> 60 - <label>{{ctx.Locale.Tr "repo.migrate_items_releases"}}</label> 58 + <input name="labels" type="checkbox" {{if .labels}}checked{{end}}> 59 + <label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label> 61 60 </div> 62 61 </div> 63 62 <div class="inline field"> ··· 65 64 <div class="ui checkbox"> 66 65 <input name="milestones" type="checkbox" {{if .milestones}}checked{{end}}> 67 66 <label>{{ctx.Locale.Tr "repo.migrate_items_milestones"}}</label> 67 + </div> 68 + </div> 69 + <div class="inline field"> 70 + <label></label> 71 + <div class="ui checkbox"> 72 + <input name="releases" type="checkbox" {{if .releases}}checked{{end}}> 73 + <label>{{ctx.Locale.Tr "repo.migrate_items_releases"}}</label> 68 74 </div> 69 75 </div> 70 76 </div>
+12 -6
templates/repo/migrate/gitlab.tmpl
··· 38 38 <div class="inline field"> 39 39 <label></label> 40 40 <div class="ui checkbox"> 41 - <input name="labels" type="checkbox" {{if .labels}}checked{{end}}> 42 - <label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label> 43 - </div> 44 - <div class="ui checkbox"> 45 41 <input name="issues" type="checkbox" {{if .issues}}checked{{end}}> 46 42 <label>{{ctx.Locale.Tr "repo.migrate_items_issues"}}</label> 47 43 </div> ··· 52 48 <input name="pull_requests" type="checkbox" {{if .pull_requests}}checked{{end}}> 53 49 <label>{{ctx.Locale.Tr "repo.migrate_items_merge_requests"}}</label> 54 50 </div> 51 + </div> 52 + <div class="inline field"> 53 + <label></label> 55 54 <div class="ui checkbox"> 56 - <input name="releases" type="checkbox" {{if .releases}}checked{{end}}> 57 - <label>{{ctx.Locale.Tr "repo.migrate_items_releases"}}</label> 55 + <input name="labels" type="checkbox" {{if .labels}}checked{{end}}> 56 + <label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label> 58 57 </div> 59 58 </div> 60 59 <div class="inline field"> ··· 62 61 <div class="ui checkbox"> 63 62 <input name="milestones" type="checkbox" {{if .milestones}}checked{{end}}> 64 63 <label>{{ctx.Locale.Tr "repo.migrate_items_milestones"}}</label> 64 + </div> 65 + </div> 66 + <div class="inline field"> 67 + <label></label> 68 + <div class="ui checkbox"> 69 + <input name="releases" type="checkbox" {{if .releases}}checked{{end}}> 70 + <label>{{ctx.Locale.Tr "repo.migrate_items_releases"}}</label> 65 71 </div> 66 72 </div> 67 73 </div>
+7 -4
templates/repo/migrate/gogs.tmpl
··· 39 39 <div class="inline field"> 40 40 <label></label> 41 41 <div class="ui checkbox"> 42 + <input name="issues" type="checkbox" {{if .issues}} checked{{end}}> 43 + <label>{{ctx.Locale.Tr "repo.migrate_items_issues"}}</label> 44 + </div> 45 + </div> 46 + <div class="inline field"> 47 + <label></label> 48 + <div class="ui checkbox"> 42 49 <input name="labels" type="checkbox" {{if .labels}} checked{{end}}> 43 50 <label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label> 44 - </div> 45 - <div class="ui checkbox"> 46 - <input name="issues" type="checkbox" {{if .issues}} checked{{end}}> 47 - <label>{{ctx.Locale.Tr "repo.migrate_items_issues"}}</label> 48 51 </div> 49 52 </div> 50 53 <div class="inline field">
+14 -8
templates/repo/migrate/onedev.tmpl
··· 34 34 <div class="inline field"> 35 35 <label>{{ctx.Locale.Tr "repo.migrate_items"}}</label> 36 36 <div class="ui checkbox"> 37 - <input name="milestones" type="checkbox" {{if .milestones}}checked{{end}}> 38 - <label>{{ctx.Locale.Tr "repo.migrate_items_milestones"}}</label> 37 + <input name="issues" type="checkbox" {{if .issues}}checked{{end}}> 38 + <label>{{ctx.Locale.Tr "repo.migrate_items_issues"}}</label> 39 39 </div> 40 + </div> 41 + <div class="inline field"> 42 + <label></label> 40 43 <div class="ui checkbox"> 41 - <input name="labels" type="checkbox" {{if .labels}}checked{{end}}> 42 - <label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label> 44 + <input name="pull_requests" type="checkbox" {{if .pull_requests}}checked{{end}}> 45 + <label>{{ctx.Locale.Tr "repo.migrate_items_pullrequests"}}</label> 43 46 </div> 44 47 </div> 45 48 <div class="inline field"> 46 49 <label></label> 47 50 <div class="ui checkbox"> 48 - <input name="issues" type="checkbox" {{if .issues}}checked{{end}}> 49 - <label>{{ctx.Locale.Tr "repo.migrate_items_issues"}}</label> 51 + <input name="labels" type="checkbox" {{if .labels}}checked{{end}}> 52 + <label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label> 50 53 </div> 54 + </div> 55 + <div class="inline field"> 56 + <label></label> 51 57 <div class="ui checkbox"> 52 - <input name="pull_requests" type="checkbox" {{if .pull_requests}}checked{{end}}> 53 - <label>{{ctx.Locale.Tr "repo.migrate_items_pullrequests"}}</label> 58 + <input name="milestones" type="checkbox" {{if .milestones}}checked{{end}}> 59 + <label>{{ctx.Locale.Tr "repo.migrate_items_milestones"}}</label> 54 60 </div> 55 61 </div> 56 62 </div>
+116
tests/integration/repo_migration_ui_test.go
··· 1 + // Copyright 2024 The Forgejo Authors. All rights reserved. 2 + // SPDX-License-Identifier: MIT 3 + 4 + package integration 5 + 6 + import ( 7 + "net/http" 8 + "net/url" 9 + "testing" 10 + 11 + "github.com/PuerkitoBio/goquery" 12 + "github.com/stretchr/testify/assert" 13 + ) 14 + 15 + func TestRepoMigrationUI(t *testing.T) { 16 + onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) { 17 + sessionUser1 := loginUser(t, "user1") 18 + // Nothing is tested in plain Git migration form right now 19 + testRepoMigrationFormGitHub(t, sessionUser1) 20 + testRepoMigrationFormGitea(t, sessionUser1) 21 + testRepoMigrationFormGitLab(t, sessionUser1) 22 + testRepoMigrationFormGogs(t, sessionUser1) 23 + testRepoMigrationFormOneDev(t, sessionUser1) 24 + testRepoMigrationFormGitBucket(t, sessionUser1) 25 + testRepoMigrationFormCodebase(t, sessionUser1) 26 + testRepoMigrationFormForgejo(t, sessionUser1) 27 + }) 28 + } 29 + 30 + func testRepoMigrationFormGitHub(t *testing.T, session *TestSession) { 31 + response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=2"), http.StatusOK) 32 + page := NewHTMLParser(t, response.Body) 33 + 34 + items := page.Find("#migrate_items .field .checkbox input") 35 + expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"} 36 + testRepoMigrationFormItems(t, items, expectedItems) 37 + } 38 + 39 + func testRepoMigrationFormGitea(t *testing.T, session *TestSession) { 40 + response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=3"), http.StatusOK) 41 + page := NewHTMLParser(t, response.Body) 42 + 43 + items := page.Find("#migrate_items .field .checkbox input") 44 + expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"} 45 + testRepoMigrationFormItems(t, items, expectedItems) 46 + } 47 + 48 + func testRepoMigrationFormGitLab(t *testing.T, session *TestSession) { 49 + response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=4"), http.StatusOK) 50 + page := NewHTMLParser(t, response.Body) 51 + 52 + items := page.Find("#migrate_items .field .checkbox input") 53 + // Note: the checkbox "Merge requests" has name "pull_requests" 54 + expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"} 55 + testRepoMigrationFormItems(t, items, expectedItems) 56 + } 57 + 58 + func testRepoMigrationFormGogs(t *testing.T, session *TestSession) { 59 + response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=5"), http.StatusOK) 60 + page := NewHTMLParser(t, response.Body) 61 + 62 + items := page.Find("#migrate_items .field .checkbox input") 63 + expectedItems := []string{"issues", "labels", "milestones"} 64 + testRepoMigrationFormItems(t, items, expectedItems) 65 + } 66 + 67 + func testRepoMigrationFormOneDev(t *testing.T, session *TestSession) { 68 + response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=6"), http.StatusOK) 69 + page := NewHTMLParser(t, response.Body) 70 + 71 + items := page.Find("#migrate_items .field .checkbox input") 72 + expectedItems := []string{"issues", "pull_requests", "labels", "milestones"} 73 + testRepoMigrationFormItems(t, items, expectedItems) 74 + } 75 + 76 + func testRepoMigrationFormGitBucket(t *testing.T, session *TestSession) { 77 + response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=7"), http.StatusOK) 78 + page := NewHTMLParser(t, response.Body) 79 + 80 + items := page.Find("#migrate_items .field .checkbox input") 81 + expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"} 82 + testRepoMigrationFormItems(t, items, expectedItems) 83 + } 84 + 85 + func testRepoMigrationFormCodebase(t *testing.T, session *TestSession) { 86 + response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=8"), http.StatusOK) 87 + page := NewHTMLParser(t, response.Body) 88 + 89 + items := page.Find("#migrate_items .field .checkbox input") 90 + // Note: the checkbox "Merge requests" has name "pull_requests" 91 + expectedItems := []string{"issues", "pull_requests", "labels", "milestones"} 92 + testRepoMigrationFormItems(t, items, expectedItems) 93 + } 94 + 95 + func testRepoMigrationFormForgejo(t *testing.T, session *TestSession) { 96 + response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=9"), http.StatusOK) 97 + page := NewHTMLParser(t, response.Body) 98 + 99 + items := page.Find("#migrate_items .field .checkbox input") 100 + expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"} 101 + testRepoMigrationFormItems(t, items, expectedItems) 102 + } 103 + 104 + func testRepoMigrationFormItems(t *testing.T, items *goquery.Selection, expectedItems []string) { 105 + t.Helper() 106 + 107 + // Compare lengths of item lists 108 + assert.EqualValues(t, len(expectedItems), items.Length()) 109 + 110 + // Compare contents of item lists 111 + for index, expectedName := range expectedItems { 112 + name, exists := items.Eq(index).Attr("name") 113 + assert.True(t, exists) 114 + assert.EqualValues(t, expectedName, name) 115 + } 116 + }