fix(ui): show commit icon in branch dropdown button when viewing a commit (#7571)

Closes https://codeberg.org/forgejo/forgejo/issues/7570

Fixed never running repo-home e2e test for language switcher

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7571
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Beowulf <beowulf@beocode.eu>
Co-committed-by: Beowulf <beowulf@beocode.eu>
This commit is contained in:
Beowulf 2025-04-19 04:33:07 +00:00 committed by 0ko
parent 6d7b1f87e4
commit 3f673ce4d4
5 changed files with 50 additions and 25 deletions

View file

@ -77,8 +77,10 @@
{{else}}
{{if eq $type "tag"}}
{{svg "octicon-tag"}}
{{else}}
{{else if eq $type "branch"}}
{{svg "octicon-git-branch"}}
{{else}}
{{svg "octicon-git-commit"}}
{{end}}
<strong ref="dropdownRefName" class="tw-ml-2 tw-inline-block gt-ellipsis">{{if and .root.IsViewTag (not .noTag)}}{{.root.TagName}}{{else if .root.IsViewBranch}}{{.root.BranchName}}{{else}}{{ShortSha .root.CommitID}}{{end}}</strong>
{{end}}

View file

@ -13,6 +13,7 @@ import (
"forgejo.org/models/unittest"
user_model "forgejo.org/models/user"
"forgejo.org/modules/git"
"forgejo.org/modules/indexer/stats"
files_service "forgejo.org/services/repository/files"
"forgejo.org/tests"
@ -36,6 +37,10 @@ func DeclareGitRepos(t *testing.T) func() {
Filename: "testfile",
Versions: []string{"hello", "hallo", "hola", "native", "ubuntu-latest", "- runs-on: ubuntu-latest", "- runs-on: debian-latest"},
}}),
newRepo(t, 2, "language-stats-test", []FileChanges{{
Filename: "main.rs",
Versions: []string{"fn main() {", "println!(\"Hello World!\");", "}"},
}}),
newRepo(t, 2, "mentions-highlighted", []FileChanges{
{
Filename: "history1.md",
@ -105,5 +110,8 @@ func newRepo(t *testing.T, userID int64, repoName string, fileChanges []FileChan
}
}
err := stats.UpdateRepoIndexer(somerepo)
require.NoError(t, err)
return cleanupFunc
}

View file

@ -1,19 +0,0 @@
// @watch start
// web_src/js/features/common-global.js
// web_src/css/repo.css
// @watch end
import {expect} from '@playwright/test';
import {save_visual, test} from './utils_e2e.ts';
test('Language stats bar', async ({page}) => {
const response = await page.goto('/user2/repo1');
expect(response?.status()).toBe(200);
await expect(page.locator('#language-stats-legend')).toBeVisible();
await save_visual(page);
await page.click('#language-stats-bar');
await expect(page.locator('#language-stats-legend')).toBeHidden();
await save_visual(page);
});

View file

@ -0,0 +1,33 @@
// @watch start
// web_src/js/components/RepoBranchTagSelector.vue
// web_src/js/features/common-global.js
// web_src/css/repo.css
// @watch end
import {expect} from '@playwright/test';
import {save_visual, test} from './utils_e2e.ts';
test('Language stats bar', async ({page}) => {
const response = await page.goto('/user2/language-stats-test');
expect(response?.status()).toBe(200);
await expect(page.locator('#language-stats-legend')).toBeHidden();
await page.click('#language-stats-bar');
await expect(page.locator('#language-stats-legend')).toBeVisible();
await save_visual(page);
await page.click('#language-stats-bar');
await expect(page.locator('#language-stats-legend')).toBeHidden();
await save_visual(page);
});
test('Branch selector commit icon', async ({page}) => {
const response = await page.goto('/user2/repo1');
expect(response?.status()).toBe(200);
await expect(page.locator('.branch-dropdown-button svg.octicon-git-branch')).toBeVisible();
await page.goto('/user2/repo1/src/commit/65f1bf27bc');
await expect(page.locator('.branch-dropdown-button svg.octicon-git-commit')).toBeVisible();
});

View file

@ -54,12 +54,12 @@ const sfc = {
if (this.viewType === 'tree') {
this.isViewTree = true;
this.refNameText = this.commitIdShort;
} else if (this.viewType === 'tag') {
} else if (this.viewType === 'branch') {
this.isViewBranch = true;
this.refNameText = this.viewType;
} else {
this.isViewTag = true;
this.refNameText = this.tagName;
} else {
this.isViewBranch = true;
this.refNameText = this.branchName;
}
document.body.addEventListener('click', (event) => {
@ -252,7 +252,8 @@ export default sfc; // activate IDE's Vue plugin
<template v-if="release">{{ textReleaseCompare }}</template>
<template v-else>
<svg-icon v-if="isViewTag" name="octicon-tag"/>
<svg-icon v-else name="octicon-git-branch"/>
<svg-icon v-else-if="isViewBranch" name="octicon-git-branch"/>
<svg-icon v-else name="octicon-git-commit"/>
<strong ref="dropdownRefName" class="tw-ml-2 tw-inline-block gt-ellipsis">{{ refNameText }}</strong>
</template>
</span>