mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-05-05 06:37:10 -04:00
109 lines
4 KiB
TypeScript
109 lines
4 KiB
TypeScript
import {expect, test} from "@playwright/test";
|
|
import {loginToAdmin} from "../helper/adminhelper";
|
|
|
|
test.beforeEach(async ({ page })=>{
|
|
await loginToAdmin(page, 'admin', 'changeme1');
|
|
await page.goto('http://localhost:9001/admin/plugins')
|
|
})
|
|
|
|
|
|
test.describe('Plugins page', ()=> {
|
|
|
|
test('List some plugins', async ({page}) => {
|
|
await page.waitForSelector('.search-field');
|
|
const pluginTable = page.locator('table tbody').nth(1);
|
|
await expect(pluginTable).not.toBeEmpty()
|
|
const plugins = await pluginTable.locator('tr').count()
|
|
expect(plugins).toBeGreaterThan(10)
|
|
})
|
|
|
|
test('Searches for a plugin', async ({page}) => {
|
|
await page.waitForSelector('.search-field');
|
|
await page.click('.search-field')
|
|
await page.keyboard.type('ep_font_color3')
|
|
await page.keyboard.press('Enter')
|
|
const pluginTable = page.locator('table tbody').nth(1);
|
|
await expect(pluginTable.locator('tr')).toHaveCount(1)
|
|
await expect(pluginTable.locator('tr').first()).toContainText('ep_font_color3')
|
|
})
|
|
|
|
|
|
test('Attempt to Install and Uninstall a plugin', async ({page}) => {
|
|
await page.waitForSelector('.search-field');
|
|
const pluginTable = page.locator('table tbody').nth(1);
|
|
await expect(pluginTable).not.toBeEmpty()
|
|
const plugins = await pluginTable.locator('tr').count()
|
|
expect(plugins).toBeGreaterThan(10)
|
|
|
|
// Now everything is loaded, lets install a plugin
|
|
|
|
await page.click('.search-field')
|
|
await page.keyboard.type('ep_font_color3')
|
|
await page.keyboard.press('Enter')
|
|
|
|
await expect(pluginTable.locator('tr')).toHaveCount(1)
|
|
const pluginRow = pluginTable.locator('tr').first()
|
|
await expect(pluginRow).toContainText('ep_font_color3')
|
|
|
|
// Select Installation button
|
|
await pluginRow.locator('td').nth(4).locator('button').first().click()
|
|
await page.waitForTimeout(100)
|
|
await page.waitForSelector('table tbody')
|
|
const installedPlugins = page.locator('table tbody').first()
|
|
const installedPluginsRows = installedPlugins.locator('tr')
|
|
await expect(installedPluginsRows).toHaveCount(2, {
|
|
timeout: 15000
|
|
})
|
|
|
|
const installedPluginRow = installedPluginsRows.nth(1)
|
|
|
|
await expect(installedPluginRow).toContainText('ep_font_color3')
|
|
await installedPluginRow.locator('td').nth(2).locator('button').first().click()
|
|
|
|
// Wait for the uninstallation to complete
|
|
await expect(installedPluginsRows).toHaveCount(1, {
|
|
timeout: 15000
|
|
})
|
|
})
|
|
})
|
|
|
|
|
|
/*
|
|
it('Attempt to Update a plugin', async function () {
|
|
this.timeout(280000);
|
|
|
|
await helper.waitForPromise(() => helper.admin$('.results').children().length > 50, 20000);
|
|
|
|
if (helper.admin$('.ep_align').length === 0) this.skip();
|
|
|
|
await helper.waitForPromise(
|
|
() => helper.admin$('.ep_align .version').text().split('.').length >= 2);
|
|
|
|
const minorVersionBefore =
|
|
parseInt(helper.admin$('.ep_align .version').text().split('.')[1]);
|
|
|
|
if (!minorVersionBefore) {
|
|
throw new Error('Unable to get minor number of plugin, is the plugin installed?');
|
|
}
|
|
|
|
if (minorVersionBefore !== 2) this.skip();
|
|
|
|
helper.waitForPromise(
|
|
() => helper.admin$('.ep_align .do-update').length === 1);
|
|
|
|
await timeout(500); // HACK! Please submit better fix..
|
|
const $doUpdateButton = helper.admin$('.ep_align .do-update');
|
|
$doUpdateButton.trigger('click');
|
|
|
|
// ensure its showing as Updating
|
|
await helper.waitForPromise(
|
|
() => helper.admin$('.ep_align .message').text() === 'Updating');
|
|
|
|
// Ensure it's a higher minor version IE 0.3.x as 0.2.x was installed
|
|
// Coverage for https://github.com/ether/etherpad-lite/issues/4536
|
|
await helper.waitForPromise(() => parseInt(helper.admin$('.ep_align .version')
|
|
.text()
|
|
.split('.')[1]) > minorVersionBefore, 60000, 1000);
|
|
// allow 50 seconds, check every 1 second.
|
|
});
|
|
*/
|