forked from kevadesu/forgejo
Move settings button back to the right in repo and org header
This will move the settings button back to the right, like known from
older versions.
For this, the overflow-menu was changed when a setting button is
available. If no settings button is available, the behavior will not
change.
Fixes #3301
(cherry picked from commit f9628f883d
)
This commit is contained in:
parent
6a3b0d1fc8
commit
5f5d66624e
4 changed files with 141 additions and 5 deletions
114
tests/e2e/right-settings-button.test.e2e.js
Normal file
114
tests/e2e/right-settings-button.test.e2e.js
Normal file
|
@ -0,0 +1,114 @@
|
|||
// @ts-check
|
||||
import {test, expect} from '@playwright/test';
|
||||
import {login_user, load_logged_in_context} from './utils_e2e.js';
|
||||
|
||||
test.beforeAll(async ({browser}, workerInfo) => {
|
||||
await login_user(browser, workerInfo, 'user2');
|
||||
});
|
||||
|
||||
test.describe('desktop viewport', () => {
|
||||
test.use({viewport: {width: 1920, height: 300}});
|
||||
|
||||
test('Settings button on right of repo header', async ({browser}, workerInfo) => {
|
||||
const context = await load_logged_in_context(browser, workerInfo, 'user2');
|
||||
const page = await context.newPage();
|
||||
|
||||
await page.goto('/user2/repo1');
|
||||
|
||||
const settingsBtn = page.locator('.overflow-menu-items>#settings-btn');
|
||||
await expect(settingsBtn).toBeVisible();
|
||||
await expect(settingsBtn).toHaveClass(/right/);
|
||||
|
||||
await expect(page.locator('.overflow-menu-button')).toHaveCount(0);
|
||||
});
|
||||
|
||||
test('Settings button on right of org header', async ({browser}, workerInfo) => {
|
||||
const context = await load_logged_in_context(browser, workerInfo, 'user2');
|
||||
const page = await context.newPage();
|
||||
|
||||
await page.goto('/org3');
|
||||
|
||||
const settingsBtn = page.locator('.overflow-menu-items>#settings-btn');
|
||||
await expect(settingsBtn).toBeVisible();
|
||||
await expect(settingsBtn).toHaveClass(/right/);
|
||||
|
||||
await expect(page.locator('.overflow-menu-button')).toHaveCount(0);
|
||||
});
|
||||
|
||||
test('User overview overflow menu should not be influenced', async ({page}) => {
|
||||
await page.goto('/user2');
|
||||
|
||||
await expect(page.locator('.overflow-menu-items>#settings-btn')).toHaveCount(0);
|
||||
|
||||
await expect(page.locator('.overflow-menu-button')).toHaveCount(0);
|
||||
});
|
||||
});
|
||||
|
||||
test.describe('small viewport', () => {
|
||||
test.use({viewport: {width: 800, height: 300}});
|
||||
|
||||
test('Settings button in overflow menu of repo header', async ({browser}, workerInfo) => {
|
||||
const context = await load_logged_in_context(browser, workerInfo, 'user2');
|
||||
const page = await context.newPage();
|
||||
|
||||
await page.goto('/user2/repo1');
|
||||
|
||||
await expect(page.locator('.overflow-menu-items>#settings-btn')).toHaveCount(0);
|
||||
|
||||
await expect(page.locator('.overflow-menu-button')).toBeVisible();
|
||||
|
||||
await page.click('.overflow-menu-button');
|
||||
await expect(page.locator('.tippy-target>#settings-btn')).toBeVisible();
|
||||
|
||||
// Verify that we have no duplicated items
|
||||
const shownItems = await page.locator('.overflow-menu-items>a').all();
|
||||
expect(shownItems).not.toHaveLength(0);
|
||||
const overflowItems = await page.locator('.tippy-target>a').all();
|
||||
expect(overflowItems).not.toHaveLength(0);
|
||||
|
||||
const items = shownItems.concat(overflowItems);
|
||||
expect(Array.from(new Set(items))).toHaveLength(items.length);
|
||||
});
|
||||
|
||||
test('Settings button in overflow menu of org header', async ({browser}, workerInfo) => {
|
||||
const context = await load_logged_in_context(browser, workerInfo, 'user2');
|
||||
const page = await context.newPage();
|
||||
|
||||
await page.goto('/org3');
|
||||
|
||||
await expect(page.locator('.overflow-menu-items>#settings-btn')).toHaveCount(0);
|
||||
|
||||
await expect(page.locator('.overflow-menu-button')).toBeVisible();
|
||||
|
||||
await page.click('.overflow-menu-button');
|
||||
await expect(page.locator('.tippy-target>#settings-btn')).toBeVisible();
|
||||
|
||||
// Verify that we have no duplicated items
|
||||
const shownItems = await page.locator('.overflow-menu-items>a').all();
|
||||
expect(shownItems).not.toHaveLength(0);
|
||||
const overflowItems = await page.locator('.tippy-target>a').all();
|
||||
expect(overflowItems).not.toHaveLength(0);
|
||||
|
||||
const items = shownItems.concat(overflowItems);
|
||||
expect(Array.from(new Set(items))).toHaveLength(items.length);
|
||||
});
|
||||
|
||||
test('User overview overflow menu should not be influenced', async ({page}) => {
|
||||
await page.goto('/user2');
|
||||
|
||||
await expect(page.locator('.overflow-menu-items>#settings-btn')).toHaveCount(0);
|
||||
|
||||
await expect(page.locator('.overflow-menu-button')).toBeVisible();
|
||||
await page.click('.overflow-menu-button');
|
||||
await expect(page.locator('.tippy-target>#settings-btn')).toHaveCount(0);
|
||||
|
||||
// Verify that we have no duplicated items
|
||||
const shownItems = await page.locator('.overflow-menu-items>a').all();
|
||||
expect(shownItems).not.toHaveLength(0);
|
||||
const overflowItems = await page.locator('.tippy-target>a').all();
|
||||
expect(overflowItems).not.toHaveLength(0);
|
||||
|
||||
const items = shownItems.concat(overflowItems);
|
||||
expect(Array.from(new Set(items))).toHaveLength(items.length);
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue