diff --git a/web/__test__/components/Activation/ActivationPluginsStep.test.ts b/web/__test__/components/Activation/ActivationPluginsStep.test.ts
index c3d42dc07..2975a6ea6 100644
--- a/web/__test__/components/Activation/ActivationPluginsStep.test.ts
+++ b/web/__test__/components/Activation/ActivationPluginsStep.test.ts
@@ -65,6 +65,14 @@ describe('ActivationPluginsStep', () => {
const { wrapper, props } = mountComponent();
+ const checkboxes = wrapper.findAll('input[type="checkbox"]');
+ for (const checkbox of checkboxes) {
+ const input = checkbox.element as HTMLInputElement;
+ input.checked = true;
+ await checkbox.trigger('change');
+ }
+ await flushPromises();
+
const installButton = wrapper
.findAll('[data-testid="brand-button"]')
.find((button) => button.text().includes('Install'));
@@ -76,15 +84,33 @@ describe('ActivationPluginsStep', () => {
const firstCallArgs = installPluginMock.mock.calls[0]?.[0];
expect(firstCallArgs?.forced).toBe(true);
expect(firstCallArgs?.url).toContain('community.applications');
- expect(props.onComplete).toHaveBeenCalled();
+ expect(props.onComplete).not.toHaveBeenCalled();
expect(wrapper.html()).toContain('installation started');
expect(wrapper.html()).toContain('installed successfully');
+
+ const continueButton = wrapper
+ .findAll('[data-testid="brand-button"]')
+ .find((button) => button.text().includes('Continue'));
+ expect(continueButton).toBeTruthy();
+ const callsBeforeContinue = props.onComplete.mock.calls.length;
+ await continueButton!.trigger('click');
+
+ expect(props.onComplete.mock.calls.length).toBeGreaterThanOrEqual(callsBeforeContinue + 1);
});
it('shows error message when installation fails', async () => {
installPluginMock.mockRejectedValueOnce(new Error('install failed'));
const { wrapper, props } = mountComponent();
+
+ const errorCheckboxes = wrapper.findAll('input[type="checkbox"]');
+ for (const checkbox of errorCheckboxes) {
+ const input = checkbox.element as HTMLInputElement;
+ input.checked = true;
+ await checkbox.trigger('change');
+ }
+ await flushPromises();
+
const installButton = wrapper
.findAll('[data-testid="brand-button"]')
.find((button) => button.text().includes('Install'));
diff --git a/web/src/components/Activation/ActivationPluginsStep.vue b/web/src/components/Activation/ActivationPluginsStep.vue
index 56a6362af..68cdfe487 100644
--- a/web/src/components/Activation/ActivationPluginsStep.vue
+++ b/web/src/components/Activation/ActivationPluginsStep.vue
@@ -1,5 +1,5 @@
@@ -184,14 +226,10 @@ const handleBack = () => {
@click="handleSkip"
/>
diff --git a/web/src/locales/en.json b/web/src/locales/en.json
index 610cb6a6f..a636d33cb 100644
--- a/web/src/locales/en.json
+++ b/web/src/locales/en.json
@@ -14,6 +14,7 @@
"activation.activationSteps.unleashYourHardware": "Unleash Your Hardware",
"activation.pluginsStep.addHelpfulPlugins": "Add helpful plugins",
"activation.pluginsStep.installAndContinue": "Install & Continue",
+ "activation.pluginsStep.installSelected": "Install Selected",
"activation.pluginsStep.installEssentialPlugins": "Install Essential Plugins",
"activation.pluginsStep.installFailed": "Failed to install plugins. Please try again.",
"activation.pluginsStep.installingPluginMessage": "Installing {name}...",