diff --git a/src/frontend/src/components/settings/SettingItem.tsx b/src/frontend/src/components/settings/SettingItem.tsx index c5f14c0b5b..fd85367231 100644 --- a/src/frontend/src/components/settings/SettingItem.tsx +++ b/src/frontend/src/components/settings/SettingItem.tsx @@ -123,8 +123,11 @@ function SettingValue({ radius='lg' aria-label={`toggle-setting-${setting.key}`} disabled={setting.read_only} - checked={setting.value.toLowerCase() == 'true'} + checked={setting.value.toString().toLowerCase() == 'true'} onChange={toggleSetting} + wrapperProps={{ + 'aria-label': `setting-${setting.key}-wrapper` + }} style={{ paddingRight: '20px' }} diff --git a/src/frontend/tests/pui_settings.spec.ts b/src/frontend/tests/pui_settings.spec.ts index 767b22adad..b422760a6e 100644 --- a/src/frontend/tests/pui_settings.spec.ts +++ b/src/frontend/tests/pui_settings.spec.ts @@ -113,6 +113,13 @@ test('Settings - User', async ({ browser }) => { await loadTab(page, 'Reporting'); await page.getByText('Inline report display').waitFor(); + // Toggle boolean setting + await page + .getByLabel('setting-LABEL_INLINE-wrapper') + .locator('span') + .nth(1) + .click(); + await loadTab(page, 'Plugin Settings'); await page .getByRole('button', { name: 'InvenTree Email Notifications' }) @@ -135,6 +142,31 @@ test('Settings - Global', async ({ browser, request }) => { }); await loadTab(page, 'Server'); + + // edit some settings here + await page + .getByRole('button', { name: 'edit-setting-INVENTREE_COMPANY_NAME' }) + .click(); + await page + .getByRole('textbox', { name: 'text-field-value' }) + .fill('some data'); + await page.getByRole('button', { name: 'Cancel' }).click(); + + // Toggle a boolean setting + await page + .getByLabel('setting-INVENTREE_ANNOUNCE_ID-wrapper') + .locator('span') + .nth(1) + .click(); + await page + .getByText('Setting INVENTREE_ANNOUNCE_ID updated successfully') + .waitFor(); + await page + .getByLabel('setting-INVENTREE_ANNOUNCE_ID-wrapper') + .locator('span') + .nth(1) + .click(); + await loadTab(page, 'Authentication'); await loadTab(page, 'Barcodes'); await loadTab(page, 'Pricing');