From ae1ec31ca9ac10f901dab625a83ca5b0efa4ffce Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 20 Mar 2025 09:16:31 +1100 Subject: [PATCH] Bug fix for activating plugins via UI (#9338) --- .../src/tables/plugin/PluginListTable.tsx | 2 +- src/frontend/tests/pui_plugins.spec.ts | 30 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/frontend/src/tables/plugin/PluginListTable.tsx b/src/frontend/src/tables/plugin/PluginListTable.tsx index 75ff9a0428..f8218b899b 100644 --- a/src/frontend/src/tables/plugin/PluginListTable.tsx +++ b/src/frontend/src/tables/plugin/PluginListTable.tsx @@ -250,7 +250,7 @@ export default function PluginListTable() { pathParams: { key: selectedPluginKey }, preFormContent: activateModalContent, fetchInitialData: false, - method: 'POST', + method: 'PATCH', successMessage: activate ? t`The plugin was activated` : t`The plugin was deactivated`, diff --git a/src/frontend/tests/pui_plugins.spec.ts b/src/frontend/tests/pui_plugins.spec.ts index a9976144cc..d0765b27bc 100644 --- a/src/frontend/tests/pui_plugins.spec.ts +++ b/src/frontend/tests/pui_plugins.spec.ts @@ -1,6 +1,11 @@ import test from 'playwright/test'; -import { clearTableFilters, loadTab, navigate } from './helpers.js'; +import { + clearTableFilters, + clickOnRowMenu, + loadTab, + navigate +} from './helpers.js'; import { doQuickLogin } from './login.js'; import { setPluginState, setSettingState } from './settings.js'; @@ -51,6 +56,29 @@ test('Plugins - Settings', async ({ page, request }) => { await page.getByText('Mouser Electronics').click(); }); +// Test base plugin functionality +test('Plugins - Functionality', async ({ page, request }) => { + await doQuickLogin(page, 'admin', 'inventree'); + + // Navigate and select the plugin + await navigate(page, 'settings/admin/plugin/'); + await clearTableFilters(page); + await page.getByPlaceholder('Search').fill('sample'); + + // Activate the plugin + const cell = await page.getByText('Sample API Caller', { exact: true }); + await clickOnRowMenu(cell); + await page.getByRole('menuitem', { name: 'Activate' }).click(); + await page.getByRole('button', { name: 'Submit' }).click(); + await page.getByText('The plugin was activated').waitFor(); + + // Deactivate the plugin again + await clickOnRowMenu(cell); + await page.getByRole('menuitem', { name: 'Deactivate' }).click(); + await page.getByRole('button', { name: 'Submit' }).click(); + await page.getByText('The plugin was deactivated').waitFor(); +}); + test('Plugins - Panels', async ({ page, request }) => { await doQuickLogin(page, 'admin', 'inventree');