Merge branch 'develop'
Some checks failed
Backend tests / Linux without plugins (push) Has been cancelled
Backend tests / Linux with Plugins (push) Has been cancelled
Backend tests / Windows without plugins (push) Has been cancelled
Backend tests / Windows with Plugins (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
Frontend admin tests powered by Sauce Labs / with plugins (push) Has been cancelled
Frontend tests powered by Sauce Labs / Playwright Chrome (push) Has been cancelled
Frontend tests powered by Sauce Labs / Playwright Firefox (push) Has been cancelled
Frontend tests powered by Sauce Labs / Playwright Webkit (push) Has been cancelled
Loadtest / without plugins (push) Has been cancelled
Loadtest / with Plugins (push) Has been cancelled
Loadtest / long running (push) Has been cancelled
Perform type checks / perform type check (push) Has been cancelled
rate limit / test (push) Has been cancelled
Upgrade from latest release / Linux with Plugins (push) Has been cancelled
Windows Build / Build .zip (push) Has been cancelled

This commit is contained in:
SamTV12345 2025-06-25 22:49:41 +02:00
commit 9d3167a333
7 changed files with 19 additions and 16 deletions

View file

@ -1,3 +1,9 @@
# 2.3.2
### Notable enhancements and fixes
- Fixed admin ui displaying incorrect text
# 2.3.1 # 2.3.1
### Notable enhancements and fixes ### Notable enhancements and fixes

View file

@ -1,7 +1,7 @@
{ {
"name": "admin", "name": "admin",
"private": true, "private": true,
"version": "2.3.1", "version": "2.3.2",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",

View file

@ -1,6 +1,6 @@
{ {
"name": "bin", "name": "bin",
"version": "2.3.1", "version": "2.3.2",
"description": "", "description": "",
"main": "checkAllPads.js", "main": "checkAllPads.js",
"directories": { "directories": {

View file

@ -50,6 +50,6 @@
"type": "git", "type": "git",
"url": "https://github.com/ether/etherpad-lite.git" "url": "https://github.com/ether/etherpad-lite.git"
}, },
"version": "2.3.1", "version": "2.3.2",
"license": "Apache-2.0" "license": "Apache-2.0"
} }

View file

@ -23,11 +23,9 @@ exports.expressCreateServer = (hookName: string, args: ArgsExpressType, cb: Func
return cb(); return cb();
} }
args.app.get('/admin/*', (req: any, res: any) => { args.app.get('/admin/*', (req: any, res: any) => {
// parse URL
const parsedUrl = url.parse(req.url);
// extract URL path // extract URL path
let pathname = ADMIN_PATH + `${parsedUrl.pathname}`; let pathname = path.join(ADMIN_PATH, req.url);
pathname = path.normalize(path.join(ADMIN_PATH), parsedUrl.pathname) pathname = path.normalize(pathname)
if (!pathname.startsWith(ADMIN_PATH)) { if (!pathname.startsWith(ADMIN_PATH)) {
res.statusCode = 403; res.statusCode = 403;

View file

@ -142,6 +142,6 @@
"debug:socketio": "cross-env DEBUG=socket.io* node --require tsx/cjs node/server.ts", "debug:socketio": "cross-env DEBUG=socket.io* node --require tsx/cjs node/server.ts",
"test:vitest": "vitest" "test:vitest": "vitest"
}, },
"version": "2.3.1", "version": "2.3.2",
"license": "Apache-2.0" "license": "Apache-2.0"
} }

View file

@ -13,18 +13,17 @@ test.describe('Plugins page', ()=> {
await page.waitForSelector('.search-field'); await page.waitForSelector('.search-field');
const pluginTable = page.locator('table tbody').nth(1); const pluginTable = page.locator('table tbody').nth(1);
await expect(pluginTable).not.toBeEmpty() await expect(pluginTable).not.toBeEmpty()
const plugins = await pluginTable.locator('tr').count() await expect(pluginTable.locator('tr')).toHaveCount(190)
expect(plugins).toBeGreaterThan(10)
}) })
test('Searches for a plugin', async ({page}) => { test('Searches for a plugin', async ({page}) => {
await page.waitForSelector('.search-field'); await page.waitForSelector('.search-field');
await page.click('.search-field') await page.click('.search-field')
await page.keyboard.type('ep_font_color3') await page.keyboard.type('ep_font_color')
await page.keyboard.press('Enter') await page.keyboard.press('Enter')
const pluginTable = page.locator('table tbody').nth(1); const pluginTable = page.locator('table tbody').nth(1);
await expect(pluginTable.locator('tr')).toHaveCount(1) await expect(pluginTable.locator('tr')).toHaveCount(1)
await expect(pluginTable.locator('tr').first()).toContainText('ep_font_color3') await expect(pluginTable.locator('tr').first()).toContainText('ep_font_color')
}) })
@ -35,17 +34,17 @@ test.describe('Plugins page', ()=> {
timeout: 15000 timeout: 15000
}) })
const plugins = await pluginTable.locator('tr').count() const plugins = await pluginTable.locator('tr').count()
expect(plugins).toBeGreaterThan(10) await expect(pluginTable.locator('tr')).toHaveCount(190)
// Now everything is loaded, lets install a plugin // Now everything is loaded, lets install a plugin
await page.click('.search-field') await page.click('.search-field')
await page.keyboard.type('ep_font_color3') await page.keyboard.type('ep_font_color')
await page.keyboard.press('Enter') await page.keyboard.press('Enter')
await expect(pluginTable.locator('tr')).toHaveCount(1) await expect(pluginTable.locator('tr')).toHaveCount(1)
const pluginRow = pluginTable.locator('tr').first() const pluginRow = pluginTable.locator('tr').first()
await expect(pluginRow).toContainText('ep_font_color3') await expect(pluginRow).toContainText('ep_font_color')
// Select Installation button // Select Installation button
await pluginRow.locator('td').nth(4).locator('button').first().click() await pluginRow.locator('td').nth(4).locator('button').first().click()
@ -59,7 +58,7 @@ test.describe('Plugins page', ()=> {
const installedPluginRow = installedPluginsRows.nth(1) const installedPluginRow = installedPluginsRows.nth(1)
await expect(installedPluginRow).toContainText('ep_font_color3') await expect(installedPluginRow).toContainText('ep_font_color')
await installedPluginRow.locator('td').nth(2).locator('button').first().click() await installedPluginRow.locator('td').nth(2).locator('button').first().click()
// Wait for the uninstallation to complete // Wait for the uninstallation to complete