+To verify the credentials, click the connect action at the bottom of the same step (for example, "Connect account", "Connect subscription" or "Connect project"). Prowler saves the provider and its credentials and tests the connection in that single action. When the test succeeds, the wizard moves straight to launching the scan. When it fails, the reason appears above the form and the values stay in place: click "Retry connection" to test again, or correct a field, which brings back the connect action, and click it. Neither adds the provider twice.
diff --git a/ui/app/(prowler)/providers/providers-page.harness.tsx b/ui/app/(prowler)/providers/providers-page.harness.tsx
index 49abce58c5..8b6e627cfa 100644
--- a/ui/app/(prowler)/providers/providers-page.harness.tsx
+++ b/ui/app/(prowler)/providers/providers-page.harness.tsx
@@ -258,6 +258,29 @@ export class ProvidersPageHarness extends BrowserHarness- Select a method to add your subscriptions to Prowler. -
- -
Enter the Microsoft Entra tenant ID for the subscriptions you want
to add to Prowler.
diff --git a/ui/components/providers/organizations/gcp-method-selector.test.tsx b/ui/components/providers/organizations/gcp-method-selector.test.tsx
deleted file mode 100644
index a50e0e6615..0000000000
--- a/ui/components/providers/organizations/gcp-method-selector.test.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import { render, screen } from "@testing-library/react";
-import userEvent from "@testing-library/user-event";
-import { afterEach, describe, expect, it, vi } from "vitest";
-
-import { useCloudUpgradeStore } from "@/store";
-import { CLOUD_UPGRADE_FEATURE } from "@/types/cloud-upgrade";
-
-import { GcpMethodSelector } from "./gcp-method-selector";
-
-// OSS gating only: `CloudUpgradeModal` mounts outside the providers page, so the
-// harness cannot see the upsell open. The Cloud case is restated by integration.
-describe("GcpMethodSelector", () => {
- afterEach(() => {
- vi.unstubAllEnvs();
- useCloudUpgradeStore.getState().closeCloudUpgrade();
- });
-
- it("opens the GCP Organizations upgrade in Local Server", async () => {
- // Given
- vi.stubEnv("UI_CLOUD_ENABLED", "false");
- const user = userEvent.setup();
- const onSelectOrganizations = vi.fn();
-
- // When
- render(
-
- Select a method to add your projects to Prowler. -
- -
Enter the Google Cloud organization ID for the projects you want
to add to Prowler.
diff --git a/ui/components/providers/organizations/org-setup-form.tsx b/ui/components/providers/organizations/org-setup-form.tsx
index 839cd3a365..06c2bf5a80 100644
--- a/ui/components/providers/organizations/org-setup-form.tsx
+++ b/ui/components/providers/organizations/org-setup-form.tsx
@@ -11,9 +11,9 @@ import { z } from "zod";
import { updateOrganizationName } from "@/actions/organizations/organizations";
import { AWSProviderBadge } from "@/components/icons/providers-badge";
import {
- AWS_ONBOARDING_METHOD,
- AwsOnboardingMethodTabs,
-} from "@/components/providers/wizard/steps/aws/aws-onboarding-method-tabs";
+ ONBOARDING_METHOD,
+ OnboardingMethodTabs,
+} from "@/components/providers/wizard/steps/connect/onboarding-method-tabs";
import type { WizardFooterConfig } from "@/components/providers/wizard/steps/footer-controls";
import { WIZARD_FOOTER_ACTION_TYPE } from "@/components/providers/wizard/steps/footer-controls";
import type { OrgWizardIntent } from "@/components/providers/wizard/types";
@@ -334,8 +334,9 @@ export function OrgSetupForm({
{onSelectSingleAccount && (
-
+
{lowerSearch ? (
<>No providers found matching "{searchTerm}">
) : (
@@ -173,7 +179,7 @@ export const RadioGroupProvider: FC Credential details Connection test
- Choose how to connect this account.
-
-
- {pending}
-
- {error}
-
+
+ {pending}
+
+ {error}
+
+ {locked
+ ? "Choose how Prowler should connect from now on."
+ : "Choose how to connect it."}
+
- Provider details are missing. Go back and select a provider.
-
- Select a credential type to continue.
-
- {errorMessage || "Unable to load provider details."}
-