diff --git a/eform-client/e2e/Tests/backend-configuration-settings/application-settings.plugins-page.spec.ts b/eform-client/e2e/Tests/backend-configuration-settings/application-settings.plugins-page.spec.ts index 1cc61eebf..ac5729b38 100644 --- a/eform-client/e2e/Tests/backend-configuration-settings/application-settings.plugins-page.spec.ts +++ b/eform-client/e2e/Tests/backend-configuration-settings/application-settings.plugins-page.spec.ts @@ -3,6 +3,7 @@ import myEformsPage from '../../Page objects/MyEforms.page'; import pluginPage from '../../Page objects/Plugin.page'; import { expect } from 'chai'; +import { $ } from '@wdio/globals'; describe('Application settings page - site header section', function () { before(async () => { @@ -17,47 +18,104 @@ describe('Application settings page - site header section', function () { }); it('should activate the plugin', async () => { - let plugin = await pluginPage.getFirstPluginRowObj(); + // Helper function to activate a plugin by index using action menu + const activatePlugin = async (index: number, pluginName: string) => { + // Open action menu + const actionMenuBtn = await $(`#action-items-${index - 1}`).$('#actionMenu'); + await actionMenuBtn.waitForDisplayed({ timeout: 40000 }); + await actionMenuBtn.waitForClickable({ timeout: 40000 }); + await actionMenuBtn.click(); + await browser.pause(500); + + // Click on the status button inside the menu + const statusBtn = await $(`#plugin-status-button${index - 1}`); + await statusBtn.waitForDisplayed({ timeout: 40000 }); + await statusBtn.waitForClickable({ timeout: 40000 }); + await statusBtn.click(); + await browser.pause(500); + + // Confirm activation in the modal + const pluginOKBtn = await $('#pluginOKBtn'); + await pluginOKBtn.waitForDisplayed({ timeout: 40000 }); + await pluginOKBtn.click(); + await browser.pause(100000); // We need to wait 100 seconds for the plugin to create db etc. + + // Re-login and navigate back to plugins page + await loginPage.open('/'); + await loginPage.login(); + await myEformsPage.Navbar.goToPluginsPage(); + await browser.pause(500); + }; + + // Helper function to check plugin status via action menu + const checkPluginStatus = async (index: number, expectedStatus: string, pluginName: string) => { + // Open action menu + const actionMenuBtn = await $(`#action-items-${index - 1}`).$('#actionMenu'); + await actionMenuBtn.waitForDisplayed({ timeout: 40000 }); + await actionMenuBtn.waitForClickable({ timeout: 40000 }); + await actionMenuBtn.click(); + await browser.pause(500); + + // Check status + const statusBtn = await $(`#plugin-status-button${index - 1}`); + await statusBtn.waitForDisplayed({ timeout: 40000 }); + const statusIcon = await statusBtn.$('mat-icon'); + const status = await statusIcon.getText(); + expect(status, `${pluginName} status is not ${expectedStatus}`).eq(expectedStatus); + + // Close the menu + await browser.keys(['Escape']); + await browser.pause(300); + }; + + // Find and activate Microting Items Planning Plugin for (let i = 1; i < 10; i++) { const plugin = await pluginPage.getPluginRowObjByIndex(i); if (plugin.name === 'Microting Items Planning Plugin') { - await plugin.enableOrDisablePlugin(); + await activatePlugin(i, plugin.name); break; } } + + // Find and activate Microting Time Planning Plugin for (let i = 1; i < 10; i++) { const plugin = await pluginPage.getPluginRowObjByIndex(i); if (plugin.name === 'Microting Time Planning Plugin') { - await plugin.enableOrDisablePlugin(); + await activatePlugin(i, plugin.name); break; } } + + // Find and activate Microting Backend Configuration Plugin for (let i = 1; i < 10; i++) { const plugin = await pluginPage.getPluginRowObjByIndex(i); if (plugin.name === 'Microting Backend Configuration Plugin') { - await plugin.enableOrDisablePlugin(); + await activatePlugin(i, plugin.name); break; } } + // Verify all plugins are activated for (let i = 1; i < 10; i++) { const plugin = await pluginPage.getPluginRowObjByIndex(i); if (plugin.name === 'Microting Items Planning Plugin') { - expect(plugin.status, 'Microting Items Planning Plugin is not enabled').eq('toggle_on'); + await checkPluginStatus(i, 'toggle_on', plugin.name); break; } } + for (let i = 1; i < 10; i++) { const plugin = await pluginPage.getPluginRowObjByIndex(i); if (plugin.name === 'Microting Time Planning Plugin') { - expect(plugin.status, 'Microting Time Planning Plugin is not enabled').eq('toggle_on'); + await checkPluginStatus(i, 'toggle_on', plugin.name); break; } } + for (let i = 1; i < 10; i++) { const plugin = await pluginPage.getPluginRowObjByIndex(i); if (plugin.name === 'Microting Backend Configuration Plugin') { - expect(plugin.status, 'Microting Backend Configuration Plugin is not enabled').eq('toggle_on'); + await checkPluginStatus(i, 'toggle_on', plugin.name); break; } }