This is an automated email from the ASF dual-hosted git repository.

wmedvedeo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools.git


The following commit(s) were added to refs/heads/main by this push:
     new ec179c0d08b kie-issues#2482: serverless-workflow-dev-ui-webapp: 
receive a parameter to recognize we are in a local cluster (#2484)
ec179c0d08b is described below

commit ec179c0d08b55e59df239a35f90eece4240e70a3
Author: Fabrizio Antonangeli <[email protected]>
AuthorDate: Tue Jul 30 20:57:24 2024 +0200

    kie-issues#2482: serverless-workflow-dev-ui-webapp: receive a parameter to 
recognize we are in a local cluster (#2484)
---
 ...timeToolsDevUIEnvelopeApi.ts => jest.config.js} | 33 ++++---------
 .../serverless-workflow-dev-ui-webapp/package.json | 10 +++-
 .../resources/index.html                           |  6 +--
 .../src/api/RuntimeToolsDevUIEnvelopeApi.ts        | 13 ++---
 .../components/DevUI/DevUILayout/DevUILayout.tsx   | 35 +++++++-------
 .../components/DevUI/RuntimeTools/RuntimeTools.tsx | 56 ++++++++++++----------
 .../src/components/contexts/DevUIAppContext.tsx    | 26 ++++++----
 .../contexts/DevUIAppContextProvider.tsx           | 25 +++++-----
 .../pages/WorkflowsPage/WorkflowsPage.tsx          | 23 ++++++---
 .../envelope/RuntimeToolsDevUIEnvelopeApiImpl.ts   |  1 +
 .../src/envelope/RuntimeToolsDevUIEnvelopeView.tsx | 17 ++++---
 .../envelope/RuntimeToolsDevUIEnvelopeViewApi.ts   |  1 +
 .../src/standalone/standalone.ts                   | 43 +++++++++--------
 .../index.ts}                                      | 32 ++++---------
 .../url/changeBaseURLToCurrentLocation.test.ts     | 48 +++++++++++++++++++
 .../webpack.config.js                              |  8 +++-
 .../profiles/common/constants/platform_services.go |  3 +-
 .../profiles/common/properties/managed.go          |  1 +
 .../profiles/common/properties/managed_test.go     | 25 +++++++---
 pnpm-lock.yaml                                     | 54 +++++++++++++--------
 20 files changed, 286 insertions(+), 174 deletions(-)

diff --git 
a/packages/serverless-workflow-dev-ui-webapp/src/api/RuntimeToolsDevUIEnvelopeApi.ts
 b/packages/serverless-workflow-dev-ui-webapp/jest.config.js
similarity index 52%
copy from 
packages/serverless-workflow-dev-ui-webapp/src/api/RuntimeToolsDevUIEnvelopeApi.ts
copy to packages/serverless-workflow-dev-ui-webapp/jest.config.js
index 26c07a113ac..a4f6e802a53 100644
--- 
a/packages/serverless-workflow-dev-ui-webapp/src/api/RuntimeToolsDevUIEnvelopeApi.ts
+++ b/packages/serverless-workflow-dev-ui-webapp/jest.config.js
@@ -17,27 +17,14 @@
  * under the License.
  */
 
-import { CustomLabels } from "./CustomLabels";
-import { DiagramPreviewSize } from 
"@kie-tools/runtime-tools-swf-enveloped-components/dist/workflowDetails/api";
+const { config, styleMock, typescriptTransform } = 
require("@kie-tools/jest-base/jest.config");
 
-export interface RuntimeToolsDevUIEnvelopeApi {
-  runtimeToolsDevUI_initRequest(association: Association, initArgs: 
RuntimeToolsDevUIInitArgs): Promise<void>;
-}
-
-export interface Association {
-  origin: string;
-  envelopeServerId: string;
-}
-
-export interface RuntimeToolsDevUIInitArgs {
-  dataIndexUrl: string;
-  page: string;
-  devUIUrl: string;
-  openApiBaseUrl: string;
-  openApiPath: string;
-  isDataIndexAvailable: boolean;
-  availablePages?: string[];
-  omittedWorkflowTimelineEvents?: string[];
-  diagramPreviewSize?: DiagramPreviewSize;
-  isStunnerEnabled: boolean;
-}
+/** @type {import('ts-jest').JestConfigWithTsJest} */
+module.exports = {
+  ...config,
+  testEnvironment: "jsdom",
+  moduleNameMapper: {
+    ...styleMock,
+    ...typescriptTransform,
+  },
+};
diff --git a/packages/serverless-workflow-dev-ui-webapp/package.json 
b/packages/serverless-workflow-dev-ui-webapp/package.json
index 0b2aa48ca3c..81e05f336cb 100644
--- a/packages/serverless-workflow-dev-ui-webapp/package.json
+++ b/packages/serverless-workflow-dev-ui-webapp/package.json
@@ -24,7 +24,8 @@
     "dev": "concurrently 'pnpm start' 'pnpm run dev:server'",
     "dev:server": "node ./server/app.js",
     "lint": "run-script-if --bool \"$(build-env linters.run)\" --then 
\"kie-tools--eslint ./src\"",
-    "start": "webpack serve --host 0.0.0.0 --env dev"
+    "start": "webpack serve --host 0.0.0.0 --env dev",
+    "test": "run-script-if --ignore-errors \"$(build-env 
tests.ignoreFailures)\" --bool \"$(build-env tests.run)\" --then \"jest 
--silent --verbose --passWithNoTests\""
   },
   "dependencies": {
     "@kie-tools-core/editor": "workspace:*",
@@ -64,9 +65,11 @@
     "@babel/preset-react": "^7.16.0",
     "@kie-tools-core/webpack-base": "workspace:*",
     "@kie-tools/eslint": "workspace:*",
+    "@kie-tools/jest-base": "workspace:*",
     "@kie-tools/root-env": "workspace:*",
     "@kie-tools/tsconfig": "workspace:*",
     "@types/history": "^4.7.3",
+    "@types/jest": "^29.5.12",
     "@types/react": "^17.0.6",
     "@types/react-dom": "^17.0.5",
     "@types/react-router": "^5.1.20",
@@ -84,6 +87,10 @@
     "graphql": "14.3.1",
     "html-webpack-plugin": "^5.3.2",
     "https-browserify": "^1.0.0",
+    "jest": "^29.7.0",
+    "jest-environment-jsdom": "^29.7.0",
+    "jest-junit": "^16.0.0",
+    "jest-when": "^3.6.0",
     "lodash": "^4.17.21",
     "monaco-editor-webpack-plugin": "^7.0.1",
     "node-polyfill-webpack-plugin": "^2.0.1",
@@ -94,6 +101,7 @@
     "style-loader": "^2.0.0",
     "svg-url-loader": "^8.0.0",
     "swagger-ui-express": "^5.0.0",
+    "ts-jest": "^29.1.5",
     "typescript": "^5.5.3",
     "url": "^0.11.3",
     "url-loader": "^4.1.1",
diff --git a/packages/serverless-workflow-dev-ui-webapp/resources/index.html 
b/packages/serverless-workflow-dev-ui-webapp/resources/index.html
index 556357dd074..22358a1425c 100644
--- a/packages/serverless-workflow-dev-ui-webapp/resources/index.html
+++ b/packages/serverless-workflow-dev-ui-webapp/resources/index.html
@@ -40,14 +40,14 @@
 
     <script>
       const devUI = RuntimeToolsDevUI.open({
+        availablePages: ["Workflows", "Forms", "Monitoring", 
"CustomDashboard"],
         container: document.getElementById("webapp"),
-        isDataIndexAvailable: true,
         dataIndexUrl: "http://localhost:4000/graphql";,
-        page: "Workflows",
         devUIUrl: "http://localhost:9024";,
+        isDataIndexAvailable: true,
         openApiBaseUrl: "http://localhost:4000";,
         openApiPath: "q/openapi.json",
-        availablePages: ["Workflows", "Forms", "Monitoring", 
"CustomDashboard"],
+        page: "Workflows",
       });
     </script>
   </body>
diff --git 
a/packages/serverless-workflow-dev-ui-webapp/src/api/RuntimeToolsDevUIEnvelopeApi.ts
 
b/packages/serverless-workflow-dev-ui-webapp/src/api/RuntimeToolsDevUIEnvelopeApi.ts
index 26c07a113ac..cb4eaca056d 100644
--- 
a/packages/serverless-workflow-dev-ui-webapp/src/api/RuntimeToolsDevUIEnvelopeApi.ts
+++ 
b/packages/serverless-workflow-dev-ui-webapp/src/api/RuntimeToolsDevUIEnvelopeApi.ts
@@ -30,14 +30,15 @@ export interface Association {
 }
 
 export interface RuntimeToolsDevUIInitArgs {
+  availablePages?: string[];
   dataIndexUrl: string;
-  page: string;
   devUIUrl: string;
-  openApiBaseUrl: string;
-  openApiPath: string;
-  isDataIndexAvailable: boolean;
-  availablePages?: string[];
-  omittedWorkflowTimelineEvents?: string[];
   diagramPreviewSize?: DiagramPreviewSize;
+  isDataIndexAvailable: boolean;
+  isLocalCluster?: boolean;
   isStunnerEnabled: boolean;
+  omittedWorkflowTimelineEvents?: string[];
+  openApiBaseUrl: string;
+  openApiPath: string;
+  page: string;
 }
diff --git 
a/packages/serverless-workflow-dev-ui-webapp/src/components/DevUI/DevUILayout/DevUILayout.tsx
 
b/packages/serverless-workflow-dev-ui-webapp/src/components/DevUI/DevUILayout/DevUILayout.tsx
index edee9f13313..1d64c4b2621 100644
--- 
a/packages/serverless-workflow-dev-ui-webapp/src/components/DevUI/DevUILayout/DevUILayout.tsx
+++ 
b/packages/serverless-workflow-dev-ui-webapp/src/components/DevUI/DevUILayout/DevUILayout.tsx
@@ -38,28 +38,30 @@ import { 
WorkflowDefinitionListContextProviderWithApolloClient } from "@kie-tool
 
 interface IOwnProps {
   apolloClient: ApolloClient<any>;
-  isWorkflowEnabled: boolean;
+  availablePages?: string[];
   children: React.ReactElement;
   devUIUrl: string;
-  openApiBaseUrl: string;
-  openApiPath: string;
-  availablePages?: string[];
-  omittedWorkflowTimelineEvents?: string[];
   diagramPreviewSize?: DiagramPreviewSize;
+  isLocalCluster?: boolean;
   isStunnerEnabled: boolean;
+  isWorkflowEnabled: boolean;
+  omittedWorkflowTimelineEvents?: string[];
+  openApiBaseUrl: string;
+  openApiPath: string;
 }
 
 const DevUILayout: React.FC<IOwnProps> = ({
   apolloClient,
-  isWorkflowEnabled: isWorkflowEnabled,
-  devUIUrl,
-  openApiBaseUrl,
-  openApiPath,
   availablePages,
-  omittedWorkflowTimelineEvents,
+  children,
+  devUIUrl,
   diagramPreviewSize,
+  isLocalCluster,
   isStunnerEnabled,
-  children,
+  isWorkflowEnabled: isWorkflowEnabled,
+  omittedWorkflowTimelineEvents,
+  openApiBaseUrl,
+  openApiPath,
 }) => {
   const renderPage = (routeProps: { location: { pathname: string } }) => {
     return (
@@ -72,14 +74,15 @@ const DevUILayout: React.FC<IOwnProps> = ({
   return (
     <ApolloProvider client={apolloClient}>
       <DevUIAppContextProvider
-        devUIUrl={devUIUrl}
-        openApiBaseUrl={openApiBaseUrl}
-        openApiPath={openApiPath}
-        isWorkflowEnabled={isWorkflowEnabled}
         availablePages={availablePages!}
-        omittedWorkflowTimelineEvents={omittedWorkflowTimelineEvents!}
+        devUIUrl={devUIUrl}
         diagramPreviewSize={diagramPreviewSize!}
+        isLocalCluster={isLocalCluster}
         isStunnerEnabled={isStunnerEnabled}
+        isWorkflowEnabled={isWorkflowEnabled}
+        omittedWorkflowTimelineEvents={omittedWorkflowTimelineEvents!}
+        openApiBaseUrl={openApiBaseUrl}
+        openApiPath={openApiPath}
       >
         <WorkflowListContextProviderWithApolloClient 
apolloClient={apolloClient}>
           <WorkflowDetailsContextProviderWithApolloClient 
apolloClient={apolloClient}>
diff --git 
a/packages/serverless-workflow-dev-ui-webapp/src/components/DevUI/RuntimeTools/RuntimeTools.tsx
 
b/packages/serverless-workflow-dev-ui-webapp/src/components/DevUI/RuntimeTools/RuntimeTools.tsx
index 4677ffd3dee..139195d48e5 100644
--- 
a/packages/serverless-workflow-dev-ui-webapp/src/components/DevUI/RuntimeTools/RuntimeTools.tsx
+++ 
b/packages/serverless-workflow-dev-ui-webapp/src/components/DevUI/RuntimeTools/RuntimeTools.tsx
@@ -24,39 +24,42 @@ import { InMemoryCache, NormalizedCacheObject } from 
"apollo-cache-inmemory";
 import ApolloClient from "apollo-client";
 import DevUIRoutes from "../DevUIRoutes/DevUIRoutes";
 import DevUILayout from "../DevUILayout/DevUILayout";
+import { changeBaseURLToCurrentLocation } from "../../../url";
 import ReactDOM from "react-dom";
 import { DiagramPreviewSize } from 
"@kie-tools/runtime-tools-swf-enveloped-components/dist/workflowDetails/api";
 import { ServerUnavailablePage } from 
"@kie-tools/runtime-tools-shared-webapp-components/dist/ServerUnavailablePage";
 
 interface IOwnProps {
-  isWorkflowEnabled: boolean;
+  availablePages: string[];
   dataIndexUrl: string;
-  navigate: string;
   devUIUrl: string;
-  openApiBaseUrl: string;
-  openApiPath: string;
-  availablePages: string[];
-  omittedWorkflowTimelineEvents: string[];
   diagramPreviewSize?: DiagramPreviewSize;
+  isLocalCluster?: boolean;
   isStunnerEnabled: boolean;
+  isWorkflowEnabled: boolean;
+  navigate: string;
+  omittedWorkflowTimelineEvents: string[];
+  openApiBaseUrl: string;
+  openApiPath: string;
 }
 
 const RuntimeTools: React.FC<IOwnProps> = ({
+  availablePages,
   dataIndexUrl,
-  navigate,
   devUIUrl,
-  openApiBaseUrl,
-  openApiPath,
-  isWorkflowEnabled,
-  availablePages,
-  omittedWorkflowTimelineEvents,
   diagramPreviewSize,
+  isLocalCluster,
   isStunnerEnabled,
+  isWorkflowEnabled,
+  navigate,
+  omittedWorkflowTimelineEvents,
+  openApiBaseUrl,
+  openApiPath,
 }) => {
   const httpLink = new HttpLink({
     // eslint-disable-next-line @typescript-eslint/ban-ts-comment
     // @ts-ignore
-    uri: dataIndexUrl,
+    uri: isLocalCluster ? changeBaseURLToCurrentLocation(dataIndexUrl) : 
dataIndexUrl,
   });
 
   const fallbackUI = onError(({ networkError }: any) => {
@@ -65,14 +68,15 @@ const RuntimeTools: React.FC<IOwnProps> = ({
       return ReactDOM.render(
         <DevUILayout
           apolloClient={client}
-          devUIUrl={devUIUrl}
-          openApiBaseUrl={openApiBaseUrl}
-          openApiPath={openApiPath}
-          isWorkflowEnabled={isWorkflowEnabled}
           availablePages={availablePages}
-          omittedWorkflowTimelineEvents={omittedWorkflowTimelineEvents}
+          devUIUrl={devUIUrl}
           diagramPreviewSize={diagramPreviewSize}
+          isLocalCluster={isLocalCluster}
           isStunnerEnabled={isStunnerEnabled}
+          isWorkflowEnabled={isWorkflowEnabled}
+          omittedWorkflowTimelineEvents={omittedWorkflowTimelineEvents}
+          openApiBaseUrl={isLocalCluster ? 
changeBaseURLToCurrentLocation(openApiBaseUrl) : openApiBaseUrl}
+          openApiPath={openApiPath}
         >
           <ServerUnavailablePage displayName={"Runtime Dev UI"} reload={() => 
window.location.reload()} />
         </DevUILayout>,
@@ -90,16 +94,20 @@ const RuntimeTools: React.FC<IOwnProps> = ({
   return (
     <DevUILayout
       apolloClient={client}
-      devUIUrl={devUIUrl}
-      openApiBaseUrl={openApiBaseUrl}
-      openApiPath={openApiPath}
-      isWorkflowEnabled={isWorkflowEnabled}
       availablePages={availablePages}
-      omittedWorkflowTimelineEvents={omittedWorkflowTimelineEvents}
+      devUIUrl={devUIUrl}
       diagramPreviewSize={diagramPreviewSize}
+      isLocalCluster={isLocalCluster}
       isStunnerEnabled={isStunnerEnabled}
+      isWorkflowEnabled={isWorkflowEnabled}
+      omittedWorkflowTimelineEvents={omittedWorkflowTimelineEvents}
+      openApiBaseUrl={isLocalCluster ? 
changeBaseURLToCurrentLocation(openApiBaseUrl) : openApiBaseUrl}
+      openApiPath={openApiPath}
     >
-      <DevUIRoutes navigate={navigate} dataIndexUrl={dataIndexUrl} />
+      <DevUIRoutes
+        navigate={navigate}
+        dataIndexUrl={isLocalCluster ? 
changeBaseURLToCurrentLocation(dataIndexUrl) : dataIndexUrl}
+      />
     </DevUILayout>
   );
 };
diff --git 
a/packages/serverless-workflow-dev-ui-webapp/src/components/contexts/DevUIAppContext.tsx
 
b/packages/serverless-workflow-dev-ui-webapp/src/components/contexts/DevUIAppContext.tsx
index 0f75f99443c..586be0c6707 100644
--- 
a/packages/serverless-workflow-dev-ui-webapp/src/components/contexts/DevUIAppContext.tsx
+++ 
b/packages/serverless-workflow-dev-ui-webapp/src/components/contexts/DevUIAppContext.tsx
@@ -22,14 +22,15 @@ import { CustomLabels } from "../../api/CustomLabels";
 import { DiagramPreviewSize } from 
"@kie-tools/runtime-tools-swf-enveloped-components/dist/workflowDetails/api";
 
 export interface DevUIAppContext {
-  isWorkflowEnabled: boolean;
-  getDevUIUrl(): string;
-  getOpenApiPath(): string;
   availablePages?: string[];
-  omittedWorkflowTimelineEvents: string[];
   diagramPreviewSize?: DiagramPreviewSize;
-  isStunnerEnabled: boolean;
+  getDevUIUrl(): string;
   getIsStunnerEnabled(): boolean;
+  getOpenApiPath(): string;
+  isLocalCluster?: boolean;
+  isStunnerEnabled: boolean;
+  isWorkflowEnabled: boolean;
+  omittedWorkflowTimelineEvents: string[];
 }
 
 export interface UnSubscribeHandler {
@@ -37,14 +38,15 @@ export interface UnSubscribeHandler {
 }
 
 export type DevUIAppContextArgs = {
-  devUIUrl: string;
-  openApiBaseUrl: string;
-  openApiPath: string;
-  isWorkflowEnabled: boolean;
   availablePages?: string[];
-  omittedWorkflowTimelineEvents: string[];
+  devUIUrl: string;
   diagramPreviewSize?: DiagramPreviewSize;
+  isLocalCluster?: boolean;
   isStunnerEnabled: boolean;
+  isWorkflowEnabled: boolean;
+  omittedWorkflowTimelineEvents: string[];
+  openApiBaseUrl: string;
+  openApiPath: string;
 };
 
 export class DevUIAppContextImpl implements DevUIAppContext {
@@ -85,6 +87,10 @@ export class DevUIAppContextImpl implements DevUIAppContext {
   get diagramPreviewSize(): DiagramPreviewSize | undefined {
     return this.args.diagramPreviewSize;
   }
+
+  get isLocalCluster(): boolean {
+    return this.args.isLocalCluster || false;
+  }
 }
 
 const RuntimeToolsDevUIAppContext = React.createContext<DevUIAppContext>({} as 
DevUIAppContext);
diff --git 
a/packages/serverless-workflow-dev-ui-webapp/src/components/contexts/DevUIAppContextProvider.tsx
 
b/packages/serverless-workflow-dev-ui-webapp/src/components/contexts/DevUIAppContextProvider.tsx
index 08dd47b2494..d500d2b3728 100644
--- 
a/packages/serverless-workflow-dev-ui-webapp/src/components/contexts/DevUIAppContextProvider.tsx
+++ 
b/packages/serverless-workflow-dev-ui-webapp/src/components/contexts/DevUIAppContextProvider.tsx
@@ -23,26 +23,28 @@ import { CustomLabels } from "../../api/CustomLabels";
 import { DiagramPreviewSize } from 
"@kie-tools/runtime-tools-swf-enveloped-components/dist/workflowDetails/api";
 
 interface IOwnProps {
-  devUIUrl: string;
-  openApiBaseUrl: string;
-  openApiPath: string;
-  isWorkflowEnabled: boolean;
   availablePages: string[];
-  omittedWorkflowTimelineEvents: string[];
+  devUIUrl: string;
   diagramPreviewSize: DiagramPreviewSize;
+  isLocalCluster?: boolean;
   isStunnerEnabled: boolean;
+  isWorkflowEnabled: boolean;
+  omittedWorkflowTimelineEvents: string[];
+  openApiBaseUrl: string;
+  openApiPath: string;
 }
 
 const DevUIAppContextProvider: React.FC<IOwnProps> = ({
-  devUIUrl,
-  openApiBaseUrl,
-  openApiPath,
-  isWorkflowEnabled: isWorkflowEnabled,
   availablePages,
-  omittedWorkflowTimelineEvents,
+  children,
+  devUIUrl,
   diagramPreviewSize,
+  isLocalCluster,
   isStunnerEnabled,
-  children,
+  isWorkflowEnabled: isWorkflowEnabled,
+  omittedWorkflowTimelineEvents,
+  openApiBaseUrl,
+  openApiPath,
 }) => {
   return (
     <RuntimeToolsDevUIAppContext.Provider
@@ -56,6 +58,7 @@ const DevUIAppContextProvider: React.FC<IOwnProps> = ({
           omittedWorkflowTimelineEvents,
           diagramPreviewSize,
           isStunnerEnabled,
+          isLocalCluster,
         })
       }
     >
diff --git 
a/packages/serverless-workflow-dev-ui-webapp/src/components/pages/WorkflowsPage/WorkflowsPage.tsx
 
b/packages/serverless-workflow-dev-ui-webapp/src/components/pages/WorkflowsPage/WorkflowsPage.tsx
index a88d182da1f..b72b9d24916 100644
--- 
a/packages/serverless-workflow-dev-ui-webapp/src/components/pages/WorkflowsPage/WorkflowsPage.tsx
+++ 
b/packages/serverless-workflow-dev-ui-webapp/src/components/pages/WorkflowsPage/WorkflowsPage.tsx
@@ -39,6 +39,7 @@ import {
   useWorkflowListGatewayApi,
   WorkflowListGatewayApi,
 } from "@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowList";
+import { changeBaseURLToCurrentLocation } from "../../../url";
 
 interface MatchProps {
   instanceID: string;
@@ -75,6 +76,16 @@ const WorkflowsPage: 
React.FC<RouteComponentProps<MatchProps, StaticContext, H.L
     [history]
   );
 
+  const getFinalEndpoint = useCallback(
+    (endpoint: string) => (apiContext.isLocalCluster ? 
changeBaseURLToCurrentLocation(endpoint) : endpoint),
+    [apiContext.isLocalCluster]
+  );
+
+  const getFinalServiceUrl = useCallback(
+    (serviceUrl: string) => (apiContext.isLocalCluster ? 
changeBaseURLToCurrentLocation(serviceUrl) : serviceUrl),
+    [apiContext.isLocalCluster]
+  );
+
   const onOpenWorkflowForm = useCallback(
     (workflowDefinition: WorkflowDefinition) => {
       history.push({
@@ -82,13 +93,13 @@ const WorkflowsPage: 
React.FC<RouteComponentProps<MatchProps, StaticContext, H.L
         state: {
           workflowDefinition: {
             workflowName: workflowDefinition.workflowName,
-            endpoint: workflowDefinition.endpoint,
-            serviceUrl: workflowDefinition.serviceUrl,
+            endpoint: getFinalEndpoint(workflowDefinition.endpoint),
+            serviceUrl: getFinalServiceUrl(workflowDefinition.serviceUrl),
           },
         },
       });
     },
-    [history]
+    [history, getFinalEndpoint, getFinalServiceUrl]
   );
 
   const onOpenTriggerCloudEvent = useCallback(
@@ -98,13 +109,13 @@ const WorkflowsPage: 
React.FC<RouteComponentProps<MatchProps, StaticContext, H.L
         state: {
           workflowDefinition: {
             workflowName: workflowDefinition.workflowName,
-            endpoint: workflowDefinition.endpoint,
-            serviceUrl: workflowDefinition.serviceUrl,
+            endpoint: getFinalEndpoint(workflowDefinition.endpoint),
+            serviceUrl: getFinalServiceUrl(workflowDefinition.serviceUrl),
           },
         },
       });
     },
-    [history]
+    [history, getFinalEndpoint, getFinalServiceUrl]
   );
 
   return (
diff --git 
a/packages/serverless-workflow-dev-ui-webapp/src/envelope/RuntimeToolsDevUIEnvelopeApiImpl.ts
 
b/packages/serverless-workflow-dev-ui-webapp/src/envelope/RuntimeToolsDevUIEnvelopeApiImpl.ts
index 23aa943eb6c..43037779d1d 100644
--- 
a/packages/serverless-workflow-dev-ui-webapp/src/envelope/RuntimeToolsDevUIEnvelopeApiImpl.ts
+++ 
b/packages/serverless-workflow-dev-ui-webapp/src/envelope/RuntimeToolsDevUIEnvelopeApiImpl.ts
@@ -69,6 +69,7 @@ export class RuntimeToolsDevUIEnvelopeApiImpl implements 
RuntimeToolsDevUIEnvelo
       
this.view().setOmittedWorkflowTimelineEvents(initArgs.omittedWorkflowTimelineEvents!);
     this.view().setDiagramPreviewSize && 
this.view().setDiagramPreviewSize(initArgs.diagramPreviewSize);
     this.view().setIsStunnerEnabled && 
this.view().setIsStunnerEnabled(initArgs.isStunnerEnabled);
+    this.view().setIsLocalCluster && 
this.view().setIsLocalCluster(initArgs.isLocalCluster!);
     // Ensure these are set last. This is a workaround to ensure views are 
corrected configured with other properties
     // from the DevUIAppContext before they are rendered. i.e. use of 
DevUIAppContext is not responsive to updates.
     this.view().setWorkflowEnabled(initArgs.isDataIndexAvailable);
diff --git 
a/packages/serverless-workflow-dev-ui-webapp/src/envelope/RuntimeToolsDevUIEnvelopeView.tsx
 
b/packages/serverless-workflow-dev-ui-webapp/src/envelope/RuntimeToolsDevUIEnvelopeView.tsx
index d8caa860509..01350ab1a4a 100644
--- 
a/packages/serverless-workflow-dev-ui-webapp/src/envelope/RuntimeToolsDevUIEnvelopeView.tsx
+++ 
b/packages/serverless-workflow-dev-ui-webapp/src/envelope/RuntimeToolsDevUIEnvelopeView.tsx
@@ -36,6 +36,7 @@ export const RuntimeToolsDevUIEnvelopeView = 
React.forwardRef<RuntimeToolsDevUIE
     const [omittedWorkflowTimelineEvents, setOmittedWorkflowTimelineEvents] = 
React.useState<string[]>([]);
     const [diagramPreviewSize, setDiagramPreviewSize] = 
React.useState<DiagramPreviewSize>();
     const [isStunnerEnabled, setIsStunnerEnabled] = 
React.useState<boolean>(false);
+    const [isLocalCluster, setIsLocalCluster] = React.useState<boolean>(false);
 
     useImperativeHandle(forwardingRef, () => {
       return {
@@ -69,22 +70,26 @@ export const RuntimeToolsDevUIEnvelopeView = 
React.forwardRef<RuntimeToolsDevUIE
         setIsStunnerEnabled: (isStunnerEnabled) => {
           setIsStunnerEnabled(isStunnerEnabled);
         },
+        setIsLocalCluster: (isLocalCluster) => {
+          setIsLocalCluster(isLocalCluster);
+        },
       };
     }, []);
     return (
       <>
         {isWorkflowEnabled && navigate.length > 0 && (
           <RuntimeTools
+            availablePages={availablePages}
             dataIndexUrl={dataIndexUrl}
-            navigate={navigate}
-            openApiBaseUrl={openApiBaseUrl}
-            openApiPath={openApiPath}
             devUIUrl={devUIUrl}
-            isWorkflowEnabled={isWorkflowEnabled}
-            availablePages={availablePages}
-            omittedWorkflowTimelineEvents={omittedWorkflowTimelineEvents}
             diagramPreviewSize={diagramPreviewSize}
+            isLocalCluster={isLocalCluster}
             isStunnerEnabled={isStunnerEnabled}
+            isWorkflowEnabled={isWorkflowEnabled}
+            navigate={navigate}
+            omittedWorkflowTimelineEvents={omittedWorkflowTimelineEvents}
+            openApiBaseUrl={openApiBaseUrl}
+            openApiPath={openApiPath}
           />
         )}
       </>
diff --git 
a/packages/serverless-workflow-dev-ui-webapp/src/envelope/RuntimeToolsDevUIEnvelopeViewApi.ts
 
b/packages/serverless-workflow-dev-ui-webapp/src/envelope/RuntimeToolsDevUIEnvelopeViewApi.ts
index 616ff09b73f..8d0f7ab2e97 100644
--- 
a/packages/serverless-workflow-dev-ui-webapp/src/envelope/RuntimeToolsDevUIEnvelopeViewApi.ts
+++ 
b/packages/serverless-workflow-dev-ui-webapp/src/envelope/RuntimeToolsDevUIEnvelopeViewApi.ts
@@ -31,4 +31,5 @@ export interface RuntimeToolsDevUIEnvelopeViewApi {
   setOmittedWorkflowTimelineEvents: (omittedWorkflowTimelineEvents: string[]) 
=> void;
   setDiagramPreviewSize: (diagramPreviewSize?: DiagramPreviewSize) => void;
   setIsStunnerEnabled: (isStunnerEnabled: boolean) => void;
+  setIsLocalCluster: (isLocalCluster: boolean) => void;
 }
diff --git 
a/packages/serverless-workflow-dev-ui-webapp/src/standalone/standalone.ts 
b/packages/serverless-workflow-dev-ui-webapp/src/standalone/standalone.ts
index 1ebedde2d53..397c1f63bb3 100644
--- a/packages/serverless-workflow-dev-ui-webapp/src/standalone/standalone.ts
+++ b/packages/serverless-workflow-dev-ui-webapp/src/standalone/standalone.ts
@@ -29,17 +29,18 @@ export interface StandaloneDevUIApi {
 
 export interface Consoles {
   open: (args: {
+    availablePages?: string[];
     container: Element;
     dataIndexUrl: string;
-    page: string;
     devUIUrl: string;
+    diagramPreviewSize?: DiagramPreviewSize;
+    isLocalCluster?: boolean;
+    isStunnerEnabled: boolean;
+    omittedWorkflowTimelineEvents?: string[];
     openApiBaseUrl: string;
     openApiPath: string;
     origin?: string;
-    availablePages?: string[];
-    omittedWorkflowTimelineEvents?: string[];
-    diagramPreviewSize?: DiagramPreviewSize;
-    isStunnerEnabled: boolean;
+    page: string;
   }) => StandaloneDevUIApi;
 }
 
@@ -55,7 +56,8 @@ const createEnvelopeServer = (
   diagramPreviewSize?: DiagramPreviewSize,
   origin?: string,
   availablePages?: string[],
-  omittedWorkflowTimelineEvents?: string[]
+  omittedWorkflowTimelineEvents?: string[],
+  isLocalCluster?: boolean
 ) => {
   const defaultOrigin = window.location.protocol === "file:" ? "*" : 
window.location.origin;
   return new EnvelopeServer<RuntimeToolsDevUIChannelApi, 
RuntimeToolsDevUIEnvelopeApi>(
@@ -70,16 +72,17 @@ const createEnvelopeServer = (
           envelopeServerId: self.id,
         },
         {
-          isDataIndexAvailable,
+          availablePages,
           dataIndexUrl,
-          page,
           devUIUrl,
+          diagramPreviewSize,
+          isDataIndexAvailable,
+          isLocalCluster,
+          isStunnerEnabled,
+          omittedWorkflowTimelineEvents,
           openApiBaseUrl,
           openApiPath,
-          availablePages,
-          omittedWorkflowTimelineEvents,
-          isStunnerEnabled,
-          diagramPreviewSize,
+          page,
         }
       );
     }
@@ -107,18 +110,19 @@ export const createDevUI = (
 };
 
 export function open(args: {
+  availablePages?: string[];
   container: Element;
-  isDataIndexAvailable: boolean;
   dataIndexUrl: string;
-  page: string;
   devUIUrl: string;
+  diagramPreviewSize?: DiagramPreviewSize;
+  isDataIndexAvailable: boolean;
+  isLocalCluster?: boolean;
+  isStunnerEnabled: boolean;
+  omittedWorkflowTimelineEvents?: string[];
   openApiBaseUrl: string;
   openApiPath: string;
   origin?: string;
-  availablePages?: string[];
-  omittedWorkflowTimelineEvents?: string[];
-  isStunnerEnabled: boolean;
-  diagramPreviewSize?: DiagramPreviewSize;
+  page: string;
 }): StandaloneDevUIApi {
   const iframe = document.createElement("iframe");
   iframe.srcdoc = devUIEnvelopeIndex; // index coming from webapp
@@ -139,7 +143,8 @@ export function open(args: {
     args.diagramPreviewSize,
     args.origin,
     args.availablePages,
-    args.omittedWorkflowTimelineEvents ?? []
+    args.omittedWorkflowTimelineEvents ?? [],
+    args.isLocalCluster ?? false
   );
   const channelApi = new RuntimeToolsDevUIChannelApiImpl();
   const listener = (message: MessageEvent) => {
diff --git 
a/packages/serverless-workflow-dev-ui-webapp/src/api/RuntimeToolsDevUIEnvelopeApi.ts
 b/packages/serverless-workflow-dev-ui-webapp/src/url/index.ts
similarity index 52%
copy from 
packages/serverless-workflow-dev-ui-webapp/src/api/RuntimeToolsDevUIEnvelopeApi.ts
copy to packages/serverless-workflow-dev-ui-webapp/src/url/index.ts
index 26c07a113ac..d86ae71e808 100644
--- 
a/packages/serverless-workflow-dev-ui-webapp/src/api/RuntimeToolsDevUIEnvelopeApi.ts
+++ b/packages/serverless-workflow-dev-ui-webapp/src/url/index.ts
@@ -17,27 +17,15 @@
  * under the License.
  */
 
-import { CustomLabels } from "./CustomLabels";
-import { DiagramPreviewSize } from 
"@kie-tools/runtime-tools-swf-enveloped-components/dist/workflowDetails/api";
-
-export interface RuntimeToolsDevUIEnvelopeApi {
-  runtimeToolsDevUI_initRequest(association: Association, initArgs: 
RuntimeToolsDevUIInitArgs): Promise<void>;
-}
-
-export interface Association {
-  origin: string;
-  envelopeServerId: string;
-}
+/**
+ * Change the base URL to using the window.location from a given URL
+ *
+ * @param {string} url - The URL string to modify
+ * @returns {string} The new URL.
+ */
+export function changeBaseURLToCurrentLocation(url: string): string {
+  const { protocol, hostname, port } = window.parent.location ?? 
window.location;
+  const parsedUrl = new URL(url, window.parent.location.href ?? 
window.location.href);
 
-export interface RuntimeToolsDevUIInitArgs {
-  dataIndexUrl: string;
-  page: string;
-  devUIUrl: string;
-  openApiBaseUrl: string;
-  openApiPath: string;
-  isDataIndexAvailable: boolean;
-  availablePages?: string[];
-  omittedWorkflowTimelineEvents?: string[];
-  diagramPreviewSize?: DiagramPreviewSize;
-  isStunnerEnabled: boolean;
+  return `${protocol}//${hostname}${port ? `:${port}` : 
""}${parsedUrl.pathname === "/" ? "" : parsedUrl.pathname}`;
 }
diff --git 
a/packages/serverless-workflow-dev-ui-webapp/tests/url/changeBaseURLToCurrentLocation.test.ts
 
b/packages/serverless-workflow-dev-ui-webapp/tests/url/changeBaseURLToCurrentLocation.test.ts
new file mode 100644
index 00000000000..2ca3cdc4968
--- /dev/null
+++ 
b/packages/serverless-workflow-dev-ui-webapp/tests/url/changeBaseURLToCurrentLocation.test.ts
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { changeBaseURLToCurrentLocation } from "../../src/url";
+
+describe("changeBaseURLToCurrentLocation", () => {
+  beforeAll(() => {
+    window = Object.create(window);
+    delete (window as any).location;
+    window.location = {
+      host: "localhost:8080",
+      hostname: "localhost",
+      href: "http://localhost:8080/test";,
+      pathname: "/test",
+      port: "8080",
+      protocol: "http:",
+    } as any;
+  });
+
+  it.each([
+    ["https://greeting.sonataflow-operator-system/graphql";, 
"http://localhost:8080/graphql";],
+    ["https://greeting.sonataflow-operator-system/openapi.json";, 
"http://localhost:8080/openapi.json";],
+    ["https://greeting.sonataflow-operator-system";, "http://localhost:8080";],
+    ["http://localhost:8080/some/page";, "http://localhost:8080/some/page";],
+    ["https://example.com/path/to/resource";, 
"http://localhost:8080/path/to/resource";],
+    ["http://www.test.com/";, "http://localhost:8080";],
+    ["/relative/path", "http://localhost:8080/relative/path";],
+    ["relative/path", "http://localhost:8080/relative/path";],
+  ])("should extract the pathname from URL %s", (url, expected) => {
+    expect(changeBaseURLToCurrentLocation(url)).toBe(expected);
+  });
+});
diff --git a/packages/serverless-workflow-dev-ui-webapp/webpack.config.js 
b/packages/serverless-workflow-dev-ui-webapp/webpack.config.js
index e7b8e5d7c1a..0fd0bc161f5 100644
--- a/packages/serverless-workflow-dev-ui-webapp/webpack.config.js
+++ b/packages/serverless-workflow-dev-ui-webapp/webpack.config.js
@@ -55,7 +55,13 @@ module.exports = async (env) =>
       },
       proxy: [
         {
-          context: ["/svg", "/forms", "/customDashboard"],
+          context: (pathname, req) => {
+            // redirect all POST request to test the local cluster environment
+            return (
+              req.method === "POST" ||
+              ["/svg", "/forms", "/customDashboard", 
"/q/openapi.json"].some((path) => pathname === path)
+            );
+          },
           target: "http://localhost:4000";,
           secure: false,
           changeOrigin: true,
diff --git 
a/packages/sonataflow-operator/controllers/profiles/common/constants/platform_services.go
 
b/packages/sonataflow-operator/controllers/profiles/common/constants/platform_services.go
index caeab716cb5..f6fceec9301 100644
--- 
a/packages/sonataflow-operator/controllers/profiles/common/constants/platform_services.go
+++ 
b/packages/sonataflow-operator/controllers/profiles/common/constants/platform_services.go
@@ -44,7 +44,8 @@ const (
        // of its start health check.
        KogitoDataIndexHealthCheckEnabled = "kogito.data-index.health-enabled"
        // KogitoDataIndexURL configures the data index url, this value can be 
used internally by the workflow.
-       KogitoDataIndexURL = "kogito.data-index.url"
+       KogitoDataIndexURL              = "kogito.data-index.url"
+       KogitoDataIndexQuarkusDevUICors = "%dev.quarkus.dev-ui.cors.enabled"
        // KogitoJobServiceHealthCheckEnabled configures if a workflow must 
check for the job service availability as part
        // of its start health check.
        KogitoJobServiceHealthCheckEnabled = 
"kogito.jobs-service.health-enabled"
diff --git 
a/packages/sonataflow-operator/controllers/profiles/common/properties/managed.go
 
b/packages/sonataflow-operator/controllers/profiles/common/properties/managed.go
index 7d630199f58..088ab2a4eb5 100644
--- 
a/packages/sonataflow-operator/controllers/profiles/common/properties/managed.go
+++ 
b/packages/sonataflow-operator/controllers/profiles/common/properties/managed.go
@@ -147,6 +147,7 @@ func NewManagedPropertyHandler(workflow 
*operatorapi.SonataFlow, platform *opera
        }
        props := properties.NewProperties()
        props.Set(constants.KogitoUserTasksEventsEnabled, "false")
+       props.Set(constants.KogitoDataIndexQuarkusDevUICors, "false")
        if platform != nil {
                p, err := resolvePlatformWorkflowProperties(platform)
                if err != nil {
diff --git 
a/packages/sonataflow-operator/controllers/profiles/common/properties/managed_test.go
 
b/packages/sonataflow-operator/controllers/profiles/common/properties/managed_test.go
index 8d12229c7d3..5b307df8ed5 100644
--- 
a/packages/sonataflow-operator/controllers/profiles/common/properties/managed_test.go
+++ 
b/packages/sonataflow-operator/controllers/profiles/common/properties/managed_test.go
@@ -125,7 +125,7 @@ func 
Test_appPropertyHandler_WithUserPropertiesWithNoUserOverrides(t *testing.T)
        assert.NoError(t, err)
        generatedProps, propsErr := 
properties.LoadString(props.WithUserProperties(userProperties).Build())
        assert.NoError(t, propsErr)
-       assert.Equal(t, 7, len(generatedProps.Keys()))
+       assert.Equal(t, 8, len(generatedProps.Keys()))
        assert.NotContains(t, "property1", generatedProps.Keys())
        assert.NotContains(t, "property2", generatedProps.Keys())
        assert.Equal(t, "http://greeting.default";, 
generatedProps.GetString("kogito.service.url", ""))
@@ -134,6 +134,7 @@ func 
Test_appPropertyHandler_WithUserPropertiesWithNoUserOverrides(t *testing.T)
        assert.Equal(t, "false", 
generatedProps.GetString("quarkus.devservices.enabled", ""))
        assert.Equal(t, "false", 
generatedProps.GetString("quarkus.kogito.devservices.enabled", ""))
        assert.Equal(t, "false", 
generatedProps.GetString(constants.KogitoUserTasksEventsEnabled, ""))
+       assert.Equal(t, "false", 
generatedProps.GetString("%dev.quarkus.dev-ui.cors.enabled", ""))
 }
 
 func Test_appPropertyHandler_WithUserPropertiesWithServiceDiscovery(t 
*testing.T) {
@@ -157,7 +158,7 @@ func 
Test_appPropertyHandler_WithUserPropertiesWithServiceDiscovery(t *testing.T
                Build())
        generatedProps.DisableExpansion = true
        assert.NoError(t, propsErr)
-       assert.Equal(t, 21, len(generatedProps.Keys()))
+       assert.Equal(t, 22, len(generatedProps.Keys()))
        assert.NotContains(t, "property1", generatedProps.Keys())
        assert.NotContains(t, "property2", generatedProps.Keys())
        assertHasProperty(t, generatedProps, "service1", myService1Address)
@@ -183,6 +184,8 @@ func 
Test_appPropertyHandler_WithUserPropertiesWithServiceDiscovery(t *testing.T
        assertHasProperty(t, generatedProps, "quarkus.http.host", "0.0.0.0")
        assertHasProperty(t, generatedProps, "quarkus.devservices.enabled", 
"false")
        assertHasProperty(t, generatedProps, 
"quarkus.kogito.devservices.enabled", "false")
+       assertHasProperty(t, generatedProps, 
"quarkus.kogito.devservices.enabled", "false")
+       assertHasProperty(t, generatedProps, 
"%dev.quarkus.dev-ui.cors.enabled", "false")
        assertHasProperty(t, generatedProps, 
constants.KogitoUserTasksEventsEnabled, "false")
 }
 
@@ -212,7 +215,7 @@ func 
Test_appPropertyHandler_WithServicesWithUserOverrides(t *testing.T) {
        assert.NoError(t, err)
        generatedProps, propsErr := 
properties.LoadString(props.WithUserProperties(userProperties).Build())
        assert.NoError(t, propsErr)
-       assert.Equal(t, 11, len(generatedProps.Keys()))
+       assert.Equal(t, 12, len(generatedProps.Keys()))
        assert.NotContains(t, "property1", generatedProps.Keys())
        assert.NotContains(t, "property2", generatedProps.Keys())
 
@@ -230,6 +233,7 @@ func 
Test_appPropertyHandler_WithServicesWithUserOverrides(t *testing.T) {
        assert.Equal(t, "", 
generatedProps.GetString(constants.KogitoProcessInstancesEventsURL, ""))
        assert.Equal(t, "false", 
generatedProps.GetString(constants.KogitoProcessInstancesEventsEnabled, ""))
        assert.Equal(t, "false", 
generatedProps.GetString(constants.KogitoUserTasksEventsEnabled, ""))
+       assert.Equal(t, "false", 
generatedProps.GetString("%dev.quarkus.dev-ui.cors.enabled", ""))
 
        // prod profile enables config of outgoing events url
        workflow.SetAnnotations(map[string]string{metadata.Profile: 
string(metadata.PreviewProfile)})
@@ -241,7 +245,7 @@ func 
Test_appPropertyHandler_WithServicesWithUserOverrides(t *testing.T) {
        assert.NoError(t, err)
        generatedProps, propsErr = 
properties.LoadString(props.WithUserProperties(userProperties).Build())
        assert.NoError(t, propsErr)
-       assert.Equal(t, 17, len(generatedProps.Keys()))
+       assert.Equal(t, 18, len(generatedProps.Keys()))
        assert.NotContains(t, "property1", generatedProps.Keys())
        assert.NotContains(t, "property2", generatedProps.Keys())
        assert.Equal(t, 
"http://"+platform.Name+"-"+constants.DataIndexServiceName+"."+platform.Namespace+"/definitions";,
 generatedProps.GetString(constants.KogitoProcessDefinitionsEventsURL, ""))
@@ -257,6 +261,7 @@ func 
Test_appPropertyHandler_WithServicesWithUserOverrides(t *testing.T) {
        assert.Equal(t, "true", 
generatedProps.GetString(constants.KogitoDataIndexHealthCheckEnabled, ""))
        assert.Equal(t, 
"http://"+platform.Name+"-"+constants.DataIndexServiceName+"."+platform.Namespace,
 generatedProps.GetString(constants.KogitoDataIndexURL, ""))
        assert.Equal(t, 
"http://"+platform.Name+"-"+constants.JobServiceName+"."+platform.Namespace, 
generatedProps.GetString(constants.KogitoJobServiceURL, ""))
+       assert.Equal(t, "false", 
generatedProps.GetString(constants.KogitoDataIndexQuarkusDevUICors, ""))
 
        // disabling data index bypasses config of outgoing events url
        platform.Spec.Services.DataIndex.Enabled = nil
@@ -268,7 +273,7 @@ func 
Test_appPropertyHandler_WithServicesWithUserOverrides(t *testing.T) {
        assert.NoError(t, err)
        generatedProps, propsErr = 
properties.LoadString(props.WithUserProperties(userProperties).Build())
        assert.NoError(t, propsErr)
-       assert.Equal(t, 12, len(generatedProps.Keys()))
+       assert.Equal(t, 13, len(generatedProps.Keys()))
        assert.NotContains(t, "property1", generatedProps.Keys())
        assert.NotContains(t, "property2", generatedProps.Keys())
        assert.Equal(t, "", 
generatedProps.GetString(constants.KogitoProcessDefinitionsEventsURL, ""))
@@ -279,6 +284,7 @@ func 
Test_appPropertyHandler_WithServicesWithUserOverrides(t *testing.T) {
        assert.Equal(t, 
"http://"+platform.Name+"-"+constants.JobServiceName+"."+platform.Namespace+"/v2/jobs/events";,
 generatedProps.GetString(constants.JobServiceRequestEventsURL, ""))
        assert.Equal(t, "", 
generatedProps.GetString(constants.JobServiceStatusChangeEvents, ""))
        assert.Equal(t, "", 
generatedProps.GetString(constants.JobServiceStatusChangeEventsURL, ""))
+       assert.Equal(t, "false", 
generatedProps.GetString(constants.KogitoDataIndexQuarkusDevUICors, ""))
 
        // disabling job service bypasses config of outgoing events url
        platform.Spec.Services.JobService.Enabled = nil
@@ -288,7 +294,7 @@ func 
Test_appPropertyHandler_WithServicesWithUserOverrides(t *testing.T) {
        assert.NoError(t, err)
        generatedProps, propsErr = 
properties.LoadString(props.WithUserProperties(userProperties).Build())
        assert.NoError(t, propsErr)
-       assert.Equal(t, 11, len(generatedProps.Keys()))
+       assert.Equal(t, 12, len(generatedProps.Keys()))
        assert.NotContains(t, "property1", generatedProps.Keys())
        assert.NotContains(t, "property2", generatedProps.Keys())
        assert.Equal(t, "", 
generatedProps.GetString(constants.KogitoProcessDefinitionsEventsURL, ""))
@@ -300,6 +306,7 @@ func 
Test_appPropertyHandler_WithServicesWithUserOverrides(t *testing.T) {
        assert.Equal(t, "", 
generatedProps.GetString(constants.JobServiceDataSourceReactiveURL, ""))
        assert.Equal(t, "", 
generatedProps.GetString(constants.JobServiceStatusChangeEvents, ""))
        assert.Equal(t, "", 
generatedProps.GetString(constants.JobServiceStatusChangeEventsURL, ""))
+       assert.Equal(t, "false", 
generatedProps.GetString(constants.KogitoDataIndexQuarkusDevUICors, ""))
 }
 
 var _ = Describe("Platform properties", func() {
@@ -477,6 +484,7 @@ func generateJobServiceWorkflowDevProperties() 
*properties.Properties {
                
jobServiceDevProperties.Set("kogito.events.processdefinitions.enabled", "false")
                
jobServiceDevProperties.Set("kogito.events.processinstances.enabled", "false")
                jobServiceDevProperties.Set("kogito.events.usertasks.enabled", 
"false")
+               jobServiceDevProperties.Set("%dev.quarkus.dev-ui.cors.enabled", 
"false")
                jobServiceDevProperties.Sort()
        }
        return jobServiceDevProperties
@@ -497,6 +505,7 @@ func generateJobServiceWorkflowProductionProperties() 
*properties.Properties {
                
jobServiceProdProperties.Set("kogito.events.processdefinitions.enabled", 
"false")
                
jobServiceProdProperties.Set("kogito.events.processinstances.enabled", "false")
                jobServiceProdProperties.Set("kogito.events.usertasks.enabled", 
"false")
+               
jobServiceProdProperties.Set("%dev.quarkus.dev-ui.cors.enabled", "false")
                jobServiceProdProperties.Sort()
        }
        return jobServiceProdProperties
@@ -516,6 +525,7 @@ func generateDataIndexWorkflowDevProperties() 
*properties.Properties {
                
dataIndexDevProperties.Set("kogito.events.processdefinitions.enabled", "false")
                
dataIndexDevProperties.Set("kogito.events.processinstances.enabled", "false")
                dataIndexDevProperties.Set("kogito.events.usertasks.enabled", 
"false")
+               dataIndexDevProperties.Set("%dev.quarkus.dev-ui.cors.enabled", 
"false")
                dataIndexDevProperties.Sort()
        }
        return dataIndexDevProperties
@@ -540,6 +550,7 @@ func generateDataIndexWorkflowProductionProperties() 
*properties.Properties {
                
dataIndexProdProperties.Set("kogito.events.processdefinitions.errors.propagate",
 "true")
                
dataIndexProdProperties.Set("kogito.events.processinstances.enabled", "true")
                dataIndexProdProperties.Set("kogito.events.usertasks.enabled", 
"false")
+               dataIndexProdProperties.Set("%dev.quarkus.dev-ui.cors.enabled", 
"false")
                dataIndexProdProperties.Sort()
        }
        return dataIndexProdProperties
@@ -559,6 +570,7 @@ func generateDataIndexAndJobServiceWorkflowDevProperties() 
*properties.Propertie
                
dataIndexJobServiceDevProperties.Set("kogito.events.processdefinitions.enabled",
 "false")
                
dataIndexJobServiceDevProperties.Set("kogito.events.processinstances.enabled", 
"false")
                
dataIndexJobServiceDevProperties.Set("kogito.events.usertasks.enabled", "false")
+               
dataIndexJobServiceDevProperties.Set("%dev.quarkus.dev-ui.cors.enabled", 
"false")
                dataIndexJobServiceDevProperties.Sort()
        }
        return dataIndexJobServiceDevProperties
@@ -584,6 +596,7 @@ func 
generateDataIndexAndJobServiceWorkflowProductionProperties() *properties.Pr
                
dataIndexJobServiceProdProperties.Set("kogito.events.usertasks.enabled", 
"false")
                
dataIndexJobServiceProdProperties.Set("mp.messaging.outgoing.kogito-processdefinitions-events.url",
 "http://foo-data-index-service.default/definitions";)
                
dataIndexJobServiceProdProperties.Set("mp.messaging.outgoing.kogito-processinstances-events.url",
 "http://foo-data-index-service.default/processes";)
+               
dataIndexJobServiceProdProperties.Set("%dev.quarkus.dev-ui.cors.enabled", 
"false")
                dataIndexJobServiceProdProperties.Sort()
        }
        return dataIndexJobServiceProdProperties
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 56fe4a006c4..e018d23f802 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -9384,6 +9384,9 @@ importers:
       '@kie-tools/eslint':
         specifier: workspace:*
         version: link:../eslint
+      '@kie-tools/jest-base':
+        specifier: workspace:*
+        version: link:../jest-base
       '@kie-tools/root-env':
         specifier: workspace:*
         version: link:../root-env
@@ -9393,6 +9396,9 @@ importers:
       '@types/history':
         specifier: ^4.7.3
         version: 4.7.5
+      '@types/jest':
+        specifier: ^29.5.12
+        version: 29.5.12
       '@types/react':
         specifier: ^17.0.6
         version: 17.0.21
@@ -9444,6 +9450,18 @@ importers:
       https-browserify:
         specifier: ^1.0.0
         version: 1.0.0
+      jest:
+        specifier: ^29.7.0
+        version: 
29.7.0(@types/[email protected])([email protected])([email protected](@types/[email protected])([email protected]))
+      jest-environment-jsdom:
+        specifier: ^29.7.0
+        version: 29.7.0
+      jest-junit:
+        specifier: ^16.0.0
+        version: 16.0.0
+      jest-when:
+        specifier: ^3.6.0
+        version: 
3.6.0([email protected](@types/[email protected])([email protected])([email protected](@types/[email protected])([email protected])))
       lodash:
         specifier: ^4.17.21
         version: 4.17.21
@@ -9474,6 +9492,9 @@ importers:
       swagger-ui-express:
         specifier: ^5.0.0
         version: 5.0.0([email protected])
+      ts-jest:
+        specifier: ^29.1.5
+        version: 
29.1.5(@babel/[email protected])(@jest/[email protected])(@jest/[email protected])([email protected](@babel/[email protected]))([email protected](@types/[email protected])([email protected])([email protected](@types/[email protected])([email protected])))([email protected])
       typescript:
         specifier: ^5.5.3
         version: 5.5.3
@@ -20326,6 +20347,7 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==}
     engines: {node: '>=12'}
+    deprecated: Use your platform's native DOMException instead
 
   [email protected]:
     resolution: {integrity: 
sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
@@ -27741,10 +27763,6 @@ packages:
     resolution: {integrity: 
sha512-5kGSQrzDyjCk0BLuFfjkoUE9vYcoyrwZIZ+GnpOSM9vhkvPjItYiWJ1jpRSo0aU4QmsoNrFwDT4O7XS2UGcBQg==}
     engines: {node: '>= 12'}
 
-  [email protected]:
-    resolution: {integrity: 
sha512-1NpAYQ3wjzIlMs0mgdBmYzLkFgWBIWrzYVDYfrixhoFNNgJ444/jT2kUT2sicRbJES3oQYRZugjB6Ro8SjKeFg==}
-    engines: {node: '>= 14'}
-
   [email protected]:
     resolution: {integrity: 
sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==}
     engines: {node: '>= 14'}
@@ -28545,7 +28563,7 @@ snapshots:
       '@babel/traverse': 7.23.9
       '@babel/types': 7.23.9
       convert-source-map: 2.0.0
-      debug: 4.3.4
+      debug: 4.3.5
       gensync: 1.0.0-beta.2
       json5: 2.2.3
       semver: 6.3.1
@@ -33551,7 +33569,7 @@ snapshots:
       graceful-fs: 4.2.11
       istanbul-lib-coverage: 3.2.0
       istanbul-lib-instrument: 6.0.2
-      istanbul-lib-report: 3.0.0
+      istanbul-lib-report: 3.0.1
       istanbul-lib-source-maps: 4.0.0
       istanbul-reports: 3.1.6
       jest-message-util: 29.7.0
@@ -38407,9 +38425,9 @@ snapshots:
       '@webassemblyjs/ast': 1.11.6
       '@xtuc/long': 4.2.2
 
-  
'@webpack-cli/[email protected]([email protected]([email protected])([email protected]))([email protected](@swc/[email protected])([email protected]))':
+  
'@webpack-cli/[email protected]([email protected]([email protected])([email protected]))([email protected]([email protected]))':
     dependencies:
-      webpack: 5.88.2(@swc/[email protected])([email protected])
+      webpack: 5.88.2([email protected])
       webpack-cli: 4.10.0([email protected])([email protected])
 
   
'@webpack-cli/[email protected]([email protected]([email protected]))([email protected]([email protected]))':
@@ -44914,7 +44932,7 @@ snapshots:
       whatwg-encoding: 2.0.0
       whatwg-mimetype: 3.0.0
       whatwg-url: 11.0.0
-      ws: 8.14.2
+      ws: 8.18.0
       xml-name-validator: 4.0.0
     transitivePeerDependencies:
       - bufferutil
@@ -45980,7 +45998,7 @@ snapshots:
 
   [email protected]([email protected]):
     dependencies:
-      '@types/json-schema': 7.0.11
+      '@types/json-schema': 7.0.15
       jsonc-parser: 3.2.0
       monaco-editor: 0.39.0
       monaco-marker-data-provider: 1.1.0([email protected])
@@ -45990,7 +46008,7 @@ snapshots:
       vscode-languageserver-textdocument: 1.0.7
       vscode-languageserver-types: 3.17.2
       vscode-uri: 3.0.7
-      yaml: 2.0.1
+      yaml: 2.3.2
 
   [email protected]: {}
 
@@ -50940,7 +50958,7 @@ snapshots:
   [email protected]([email protected])([email protected]):
     dependencies:
       '@discoveryjs/json-ext': 0.5.7
-      '@webpack-cli/configtest': 
1.2.0([email protected]([email protected])([email protected]))([email protected](@swc/[email protected])([email protected]))
+      '@webpack-cli/configtest': 
1.2.0([email protected]([email protected])([email protected]))([email protected]([email protected]))
       '@webpack-cli/info': 
1.5.0([email protected]([email protected])([email protected]))
       '@webpack-cli/serve': 
1.7.0([email protected]([email protected])([email protected]))([email protected]([email protected])([email protected]))
       colorette: 2.0.16
@@ -50950,7 +50968,7 @@ snapshots:
       import-local: 3.0.2
       interpret: 2.2.0
       rechoir: 0.7.0
-      webpack: 5.88.2(@swc/[email protected])([email protected])
+      webpack: 5.88.2([email protected])
       webpack-merge: 5.9.0
     optionalDependencies:
       webpack-dev-server: 4.15.1([email protected])([email protected])
@@ -50980,14 +50998,14 @@ snapshots:
       schema-utils: 4.2.0
       webpack: 5.76.1([email protected])
 
-  
[email protected]([email protected](@swc/[email protected])([email protected])):
+  [email protected]([email protected]([email protected])):
     dependencies:
       colorette: 2.0.20
       memfs: 3.5.1
       mime-types: 2.1.34
       range-parser: 1.2.1
       schema-utils: 4.2.0
-      webpack: 5.88.2(@swc/[email protected])([email protected])
+      webpack: 5.88.2([email protected])
 
   [email protected]([email protected]):
     dependencies:
@@ -51096,10 +51114,10 @@ snapshots:
       serve-index: 1.9.1
       sockjs: 0.3.24
       spdy: 4.0.2
-      webpack-dev-middleware: 
5.3.3([email protected](@swc/[email protected])([email protected]))
+      webpack-dev-middleware: 5.3.3([email protected]([email protected]))
       ws: 8.13.0
     optionalDependencies:
-      webpack: 5.88.2(@swc/[email protected])([email protected])
+      webpack: 5.88.2([email protected])
       webpack-cli: 4.10.0([email protected])([email protected])
     transitivePeerDependencies:
       - bufferutil
@@ -51652,8 +51670,6 @@ snapshots:
 
   [email protected]: {}
 
-  [email protected]: {}
-
   [email protected]: {}
 
   [email protected]:


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to