Repository: openshift/release
Pull request #64779: Run the Tracing UI tests from CI jobs
Author: login: IshwarKanse
Labels: name: lgtm
description: Indicates that a PR is ready to be merged.
name: approved
description: Indicates a PR has been approved by an approver from all required OWNERS files.
name: rehearsals-ack
description: Signifies that rehearsal jobs have been acknowledged
Created: 2025-05-12T09:34:04Z | Merged: 2025-05-15T07:48:10Z

Resolves https://issues.redhat.com/browse/COO-362 


Diff:
diff --git a/ci-operator/config/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-main__upstream-amd64-aws.yaml b/ci-operator/config/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-main__upstream-amd64-aws.yaml
index 6c8325a9089a7..ee86cca3e0f41 100644
--- a/ci-operator/config/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-main__upstream-amd64-aws.yaml
+++ b/ci-operator/config/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-main__upstream-amd64-aws.yaml
@@ -17,11 +17,15 @@ images:
   to: distributed-tracing-console-plugin
 - dockerfile_path: Dockerfile.test
   to: distributed-tracing-console-plugin-test
+- context_dir: .
+  dockerfile_path: tests/Dockerfile
+  to: tracing-ui-tests-runner
 promotion:
   to:
   - excluded_images:
     - distributed-tracing-console-plugin
     - distributed-tracing-console-plugin-test
+    - tracing-ui-tests-runner
     name: latest
     namespace: observability-ui
 resources:
@@ -43,9 +47,21 @@ tests:
     test:
     - ref: fips-check-image-scan
 - as: e2e
-  commands: echo "test"
-  container:
-    from: distributed-tracing-console-plugin-test
+  cluster_claim:
+    architecture: amd64
+    cloud: aws
+    labels:
+      region: us-east-2
+    owner: obs-tracing
+    product: ocp
+    timeout: 1h0m0s
+    version: "4.19"
+  steps:
+    env:
+      CYPRESS_COO_UI_INSTALL: "true"
+    test:
+    - ref: distributed-tracing-tests-tracing-ui-upstream
+    workflow: generic-claim
 zz_generated_metadata:
   branch: main
   org: openshift
diff --git a/ci-operator/config/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-release-0.4__upstream-amd64-aws.yaml b/ci-operator/config/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-release-0.4__upstream-amd64-aws.yaml
index 5ff9a07e20c81..4758570322863 100644
--- a/ci-operator/config/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-release-0.4__upstream-amd64-aws.yaml
+++ b/ci-operator/config/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-release-0.4__upstream-amd64-aws.yaml
@@ -17,10 +17,14 @@ images:
   to: distributed-tracing-console-plugin
 - dockerfile_path: Dockerfile.test
   to: distributed-tracing-console-plugin-test
+- context_dir: .
+  dockerfile_path: tests/Dockerfile
+  to: tracing-ui-tests-runner
 promotion:
   to:
   - excluded_images:
     - distributed-tracing-console-plugin-test
+    - tracing-ui-tests-runner
     name: "0.4"
     namespace: observability-ui
 resources:
@@ -42,9 +46,21 @@ tests:
     test:
     - ref: fips-check-image-scan
 - as: e2e
-  commands: echo "test"
-  container:
-    from: distributed-tracing-console-plugin-test
+  cluster_claim:
+    architecture: amd64
+    cloud: aws
+    labels:
+      region: us-east-1
+    owner: obs-tracing
+    product: ocp
+    timeout: 1h0m0s
+    version: "4.18"
+  steps:
+    env:
+      CYPRESS_COO_UI_INSTALL: "true"
+    test:
+    - ref: distributed-tracing-tests-tracing-ui-upstream
+    workflow: generic-claim
 zz_generated_metadata:
   branch: release-0.4
   org: openshift
diff --git a/ci-operator/config/rhobs/observability-operator/rhobs-observability-operator-main__ocp-coo-interop.yaml b/ci-operator/config/rhobs/observability-operator/rhobs-observability-operator-main__ocp-coo-interop.yaml
index 6b9ef48f97240..1c0997eaa4830 100644
--- a/ci-operator/config/rhobs/observability-operator/rhobs-observability-operator-main__ocp-coo-interop.yaml
+++ b/ci-operator/config/rhobs/observability-operator/rhobs-observability-operator-main__ocp-coo-interop.yaml
@@ -41,10 +41,13 @@ tests:
     env:
       OPERATORS: |
         [
-            {"name": "cluster-observability-operator", "source": "redhat-operators", "channel": "development", "install_namespace": "coo", "target_namespaces": "", "operator_group":"openshift-coo-og"}
+            {"name": "cluster-observability-operator", "source": "redhat-operators", "channel": "stable", "install_namespace": "coo", "target_namespaces": "", "operator_group":"openshift-coo-og"},
+            {"name": "tempo-product", "source": "redhat-operators", "channel": "stable", "install_namespace": "openshift-tempo-operator","target_namespace": "", "operator_group": "openshift-tempo-operator"},
+            {"name": "opentelemetry-product", "source": "redhat-operators", "channel": "stable", "install_namespace": "openshift-opentelemetry-operator", "target_namespace": "", "operator_group": "openshift-opentelemetry-operator"}
         ]
     test:
     - ref: install-operators
+    - ref: distributed-tracing-tests-tracing-ui-integration
     - ref: rhobs-obo-test-harness
     workflow: generic-claim
 zz_generated_metadata:
diff --git a/ci-operator/jobs/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-main-presubmits.yaml b/ci-operator/jobs/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-main-presubmits.yaml
index 63e6081d680fc..e0684a672840c 100644
--- a/ci-operator/jobs/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-main-presubmits.yaml
+++ b/ci-operator/jobs/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-main-presubmits.yaml
@@ -20,8 +20,10 @@ presubmits:
       containers:
       - args:
         - --gcs-upload-secret=/secrets/gcs/service-account.json
+        - --hive-kubeconfig=/secrets/hive-hive-credentials/kubeconfig
         - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson
         - --report-credentials-file=/etc/report/credentials
+        - --secret-dir=/secrets/ci-pull-credentials
         - --target=e2e
         - --variant=upstream-amd64-aws
         command:
@@ -33,9 +35,15 @@ presubmits:
           requests:
             cpu: 10m
         volumeMounts:
+        - mountPath: /secrets/ci-pull-credentials
+          name: ci-pull-credentials
+          readOnly: true
         - mountPath: /secrets/gcs
           name: gcs-credentials
           readOnly: true
+        - mountPath: /secrets/hive-hive-credentials
+          name: hive-hive-credentials
+          readOnly: true
         - mountPath: /secrets/manifest-tool
           name: manifest-tool-local-pusher
           readOnly: true
@@ -47,6 +55,12 @@ presubmits:
           readOnly: true
       serviceAccountName: ci-operator
       volumes:
+      - name: ci-pull-credentials
+        secret:
+          secretName: ci-pull-credentials
+      - name: hive-hive-credentials
+        secret:
+          secretName: hive-hive-credentials
       - name: manifest-tool-local-pusher
         secret:
           secretName: manifest-tool-local-pusher
diff --git a/ci-operator/jobs/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-release-0.4-presubmits.yaml b/ci-operator/jobs/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-release-0.4-presubmits.yaml
index 0dbb18b81bc23..00ea78e63c1ca 100644
--- a/ci-operator/jobs/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-release-0.4-presubmits.yaml
+++ b/ci-operator/jobs/openshift/distributed-tracing-console-plugin/openshift-distributed-tracing-console-plugin-release-0.4-presubmits.yaml
@@ -20,8 +20,10 @@ presubmits:
       containers:
       - args:
         - --gcs-upload-secret=/secrets/gcs/service-account.json
+        - --hive-kubeconfig=/secrets/hive-hive-credentials/kubeconfig
         - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson
         - --report-credentials-file=/etc/report/credentials
+        - --secret-dir=/secrets/ci-pull-credentials
         - --target=e2e
         - --variant=upstream-amd64-aws
         command:
@@ -33,9 +35,15 @@ presubmits:
           requests:
             cpu: 10m
         volumeMounts:
+        - mountPath: /secrets/ci-pull-credentials
+          name: ci-pull-credentials
+          readOnly: true
         - mountPath: /secrets/gcs
           name: gcs-credentials
           readOnly: true
+        - mountPath: /secrets/hive-hive-credentials
+          name: hive-hive-credentials
+          readOnly: true
         - mountPath: /secrets/manifest-tool
           name: manifest-tool-local-pusher
           readOnly: true
@@ -47,6 +55,12 @@ presubmits:
           readOnly: true
       serviceAccountName: ci-operator
       volumes:
+      - name: ci-pull-credentials
+        secret:
+          secretName: ci-pull-credentials
+      - name: hive-hive-credentials
+        secret:
+          secretName: hive-hive-credentials
       - name: manifest-tool-local-pusher
         secret:
           secretName: manifest-tool-local-pusher
diff --git a/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/OWNERS b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/OWNERS
new file mode 100644
index 0000000000000..cdee7e32bb795
--- /dev/null
+++ b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/OWNERS
@@ -0,0 +1,13 @@
+approvers:
+- pavolloffay
+- andreasgerstmayr
+- rubenvp8510
+- frzifus
+- IshwarKanse
+options: {}
+reviewers:
+- pavolloffay
+- andreasgerstmayr
+- rubenvp8510
+- frzifus
+- IshwarKanse
diff --git a/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/OWNERS b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/OWNERS
new file mode 100644
index 0000000000000..cdee7e32bb795
--- /dev/null
+++ b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/OWNERS
@@ -0,0 +1,13 @@
+approvers:
+- pavolloffay
+- andreasgerstmayr
+- rubenvp8510
+- frzifus
+- IshwarKanse
+options: {}
+reviewers:
+- pavolloffay
+- andreasgerstmayr
+- rubenvp8510
+- frzifus
+- IshwarKanse
diff --git a/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-commands.sh b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-commands.sh
new file mode 100755
index 0000000000000..4dd3fc3865723
--- /dev/null
+++ b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-commands.sh
@@ -0,0 +1,148 @@
+#!/bin/bash
+
+set -o nounset
+set -o errexit
+set -o pipefail
+
+# List of variables to check.
+vars=(
+  CYPRESS_SKIP_COO_INSTALL
+  CYPRESS_COO_UI_INSTALL
+  CYPRESS_KONFLUX_COO_BUNDLE_IMAGE
+  CYPRESS_CUSTOM_COO_BUNDLE_IMAGE
+  CYPRESS_DT_CONSOLE_IMAGE
+)
+
+# Loop through each variable.
+for var in "${vars[@]}"; do
+  if [[ -z "${!var}" ]]; then
+    unset "$var"
+    echo "Unset variable: $var"
+  else
+    echo "$var is set to '${!var}'"
+  fi
+done
+
+# Set proxy vars.
+if [ -f "${SHARED_DIR}/proxy-conf.sh" ] ; then
+  source "${SHARED_DIR}/proxy-conf.sh"
+fi
+
+## skip all tests when console is not installed.
+if ! (oc get clusteroperator console --kubeconfig=${KUBECONFIG}) ; then
+  echo "console is not installed, skipping all console tests."
+  exit 0
+fi
+
+# Function to copy artifacts to the artifact directory after test run.
+function copyArtifacts {
+  if [ -d "gui_test_screenshots" ]; then
+    cp -r gui_test_screenshots "${ARTIFACT_DIR}/gui_test_screenshots"
+    echo "Artifacts copied successfully."
+  else
+    echo "Directory gui_test_screenshots does not exist. Nothing to copy."
+  fi
+}
+
+## Add IDP for testing
+# prepare users
+users=""
+htpass_file=/tmp/users.htpasswd
+
+for i in $(seq 1 5); do
+    username="uiauto-test-${i}"
+    password=$(tr </dev/urandom -dc 'a-z0-9' | fold -w 12 | head -n 1 || true)
+    users+="${username}:${password},"
+    if [ -f "${htpass_file}" ]; then
+        htpasswd -B -b ${htpass_file} "${username}" "${password}"
+    else
+        htpasswd -c -B -b ${htpass_file} "${username}" "${password}"
+    fi
+done
+
+# remove trailing ',' for case parsing
+users=${users%?}
+
+# current generation
+gen=$(oc get deployment oauth-openshift -n openshift-authentication -o jsonpath='{.metadata.generation}')
+
+# add users to cluster
+oc create secret generic uiauto-htpass-secret --from-file=htpasswd=${htpass_file} -n openshift-config
+oc patch oauth cluster --type='json' -p='[{"op": "add", "path": "/spec/identityProviders", "value": [{"type": "HTPasswd", "name": "uiauto-htpasswd-idp", "mappingMethod": "claim", "htpasswd":{"fileData":{"name": "uiauto-htpass-secret"}}}]}]'
+
+## wait for oauth-openshift to rollout
+wait_auth=true
+expected_replicas=$(oc get deployment oauth-openshift -n openshift-authentication -o jsonpath='{.spec.replicas}')
+while $wait_auth; do
+    available_replicas=$(oc get deployment oauth-openshift -n openshift-authentication -o jsonpath='{.status.availableReplicas}')
+    new_gen=$(oc get deployment oauth-openshift -n openshift-authentication -o jsonpath='{.metadata.generation}')
+    if [[ $expected_replicas == "$available_replicas" && $((new_gen)) -gt $((gen)) ]]; then
+        wait_auth=false
+    else
+        sleep 10
+    fi
+done
+echo "authentication operator finished updating"
+
+# Copy the artifacts to the aritfact directory at the end of the test run.
+trap copyArtifacts EXIT
+
+# Set Kubeconfig var for Cypress.
+cp -L $KUBECONFIG /tmp/kubeconfig && export CYPRESS_KUBECONFIG_PATH=/tmp/kubeconfig
+
+# Set Cypress base URL var.
+console_route=$(oc get route console -n openshift-console -o jsonpath='{.spec.host}')
+export CYPRESS_BASE_URL=https://$console_route
+
+# Set Cypress authentication username and password.
+export CYPRESS_LOGIN_IDP=uiauto-htpasswd-idp
+export CYPRESS_LOGIN_USERS=${users}
+
+# Run the Cypress tests.
+export NO_COLOR=1
+export CYPRESS_CACHE_FOLDER=/tmp/Cypress
+
+# Fetch the OpenShift version and extract the minor version
+oc_version_minor=$(oc get clusterversion version -o jsonpath='{.status.desired.version}' | cut -d . -f 2)
+
+echo "Detected OpenShift minor version: $oc_version_minor"
+
+# Define the repository URL and target directory
+repo_url="https://github.com/openshift/distributed-tracing-console-plugin.git"
+target_dir="/tmp/distributed-tracing-console-plugin"
+
+# Clone the repository and checkout the appropriate branch based on the OpenShift version
+if [[ "$oc_version_minor" -ge 19 ]]; then
+  echo "OpenShift version is 4.$oc_version_minor or greater. Cloning the main branch."
+  git clone "$repo_url" "$target_dir"
+  if [ $? -eq 0 ]; then
+    cd "$target_dir/tests"
+    echo "Successfully cloned the repository and changed directory to $target_dir/tests."
+  else
+    echo "Error cloning the repository."
+    exit 1
+  fi
+else
+  echo "OpenShift version is less than 4.19. Cloning and checking out the release-0.4 branch."
+  git clone "$repo_url" "$target_dir"
+  if [ $? -eq 0 ]; then
+    cd "$target_dir/tests"
+    git checkout release-0.4
+    if [ $? -eq 0 ]; then
+      echo "Successfully cloned the repository, changed directory to $target_dir/tests, and checked out the release-0.4 branch."
+    else
+      echo "Error checking out the release-0.4 branch."
+      exit 1
+    fi
+  else
+    echo "Error cloning the repository."
+    exit 1
+  fi
+fi
+
+# Install npm modules
+ls -ltr
+npm install
+
+# Run the Cypress tests
+npm run test-cypress-console-headless
diff --git a/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-ref.metadata.json b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-ref.metadata.json
new file mode 100644
index 0000000000000..05f345e6dc08d
--- /dev/null
+++ b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-ref.metadata.json
@@ -0,0 +1,19 @@
+{
+	"path": "distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-ref.yaml",
+	"owners": {
+		"approvers": [
+			"pavolloffay",
+			"andreasgerstmayr",
+			"rubenvp8510",
+			"frzifus",
+			"IshwarKanse"
+		],
+		"reviewers": [
+			"pavolloffay",
+			"andreasgerstmayr",
+			"rubenvp8510",
+			"frzifus",
+			"IshwarKanse"
+		]
+	}
+}
\ No newline at end of file
diff --git a/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-ref.yaml b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-ref.yaml
new file mode 100644
index 0000000000000..0497080e3c36a
--- /dev/null
+++ b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-ref.yaml
@@ -0,0 +1,33 @@
+ref:
+  as: distributed-tracing-tests-tracing-ui-integration
+  from_image:
+    name: cypress-base
+    namespace: ci
+    tag: latest
+  commands: distributed-tracing-tests-tracing-ui-integration-commands.sh
+  timeout: 2h0m0s
+  grace_period: 60s
+  resources:
+    requests:
+      cpu: "1"
+      memory: 3Gi
+    limits:
+      memory: 4Gi
+  env:
+  - name: CYPRESS_SKIP_COO_INSTALL
+    default: "true"
+    documentation: "Set the var to skip Cluster Observability and all the required operators installation from the Cypress test run."
+  - name: CYPRESS_COO_UI_INSTALL
+    default: ""
+    documentation: "Set the var to install Cluster Observability, OpenTelemetry and Tempo operators from redhat-operators catalog source."
+  - name: CYPRESS_KONFLUX_COO_BUNDLE_IMAGE
+    default: ""
+    documentation: "Set the var to install Cluster Observability Operator using Konflux bundle. Tempo and OpenTelemetry operators will be installed from redhat-operators catalog source."
+  - name: CYPRESS_CUSTOM_COO_BUNDLE_IMAGE
+    default: ""
+    documentation: "Set the var to use custom Cluster Observability Operator bundle image. Tempo and OpenTelemetry operators will be installed from redhat-operators catalog source."
+  - name: CYPRESS_DT_CONSOLE_IMAGE
+    default: ""
+    documentation: "Set the var to use custom Distributed Tracing UI plugin image. The image will be patched in Cluster Observability Operator CSV."
+  documentation: |-
+    The distributed-tracing-tests-tracing-integration step executes the Distributed Tracing Console Plugin Integration Cypress tests. 
diff --git a/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/upstream/OWNERS b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/upstream/OWNERS
new file mode 100644
index 0000000000000..cdee7e32bb795
--- /dev/null
+++ b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/upstream/OWNERS
@@ -0,0 +1,13 @@
+approvers:
+- pavolloffay
+- andreasgerstmayr
+- rubenvp8510
+- frzifus
+- IshwarKanse
+options: {}
+reviewers:
+- pavolloffay
+- andreasgerstmayr
+- rubenvp8510
+- frzifus
+- IshwarKanse
diff --git a/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/upstream/distributed-tracing-tests-tracing-ui-upstream-commands.sh b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/upstream/distributed-tracing-tests-tracing-ui-upstream-commands.sh
new file mode 100755
index 0000000000000..c204431389504
--- /dev/null
+++ b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/upstream/distributed-tracing-tests-tracing-ui-upstream-commands.sh
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+set -o nounset
+set -o errexit
+set -o pipefail
+
+# List of variables to check.
+vars=(
+  CYPRESS_SKIP_COO_INSTALL
+  CYPRESS_COO_UI_INSTALL
+  CYPRESS_KONFLUX_COO_BUNDLE_IMAGE
+  CYPRESS_CUSTOM_COO_BUNDLE_IMAGE
+  CYPRESS_DT_CONSOLE_IMAGE
+)
+
+# Loop through each variable.
+for var in "${vars[@]}"; do
+  if [[ -z "${!var}" ]]; then
+    unset "$var"
+    echo "Unset variable: $var"
+  else
+    echo "$var is set to '${!var}'"
+  fi
+done
+
+# Set proxy vars.
+if [ -f "${SHARED_DIR}/proxy-conf.sh" ] ; then
+  source "${SHARED_DIR}/proxy-conf.sh"
+fi
+
+## skip all tests when console is not installed.
+if ! (oc get clusteroperator console --kubeconfig=${KUBECONFIG}) ; then
+  echo "console is not installed, skipping all console tests."
+  exit 0
+fi
+
+# Function to copy artifacts to the artifact directory after test run.
+function copyArtifacts {
+  if [ -d "gui_test_screenshots" ]; then
+    cp -r gui_test_screenshots "${ARTIFACT_DIR}/gui_test_screenshots"
+    echo "Artifacts copied successfully."
+  else
+    echo "Directory gui_test_screenshots does not exist. Nothing to copy."
+  fi
+}
+
+## Add IDP for testing
+# prepare users
+users=""
+htpass_file=/tmp/users.htpasswd
+
+for i in $(seq 1 5); do
+    username="uiauto-test-${i}"
+    password=$(tr </dev/urandom -dc 'a-z0-9' | fold -w 12 | head -n 1 || true)
+    users+="${username}:${password},"
+    if [ -f "${htpass_file}" ]; then
+        htpasswd -B -b ${htpass_file} "${username}" "${password}"
+    else
+        htpasswd -c -B -b ${htpass_file} "${username}" "${password}"
+    fi
+done
+
+# remove trailing ',' for case parsing
+users=${users%?}
+
+# current generation
+gen=$(oc get deployment oauth-openshift -n openshift-authentication -o jsonpath='{.metadata.generation}')
+
+# add users to cluster
+oc create secret generic uiauto-htpass-secret --from-file=htpasswd=${htpass_file} -n openshift-config
+oc patch oauth cluster --type='json' -p='[{"op": "add", "path": "/spec/identityProviders", "value": [{"type": "HTPasswd", "name": "uiauto-htpasswd-idp", "mappingMethod": "claim", "htpasswd":{"fileData":{"name": "uiauto-htpass-secret"}}}]}]'
+
+## wait for oauth-openshift to rollout
+wait_auth=true
+expected_replicas=$(oc get deployment oauth-openshift -n openshift-authentication -o jsonpath='{.spec.replicas}')
+while $wait_auth; do
+    available_replicas=$(oc get deployment oauth-openshift -n openshift-authentication -o jsonpath='{.status.availableReplicas}')
+    new_gen=$(oc get deployment oauth-openshift -n openshift-authentication -o jsonpath='{.metadata.generation}')
+    if [[ $expected_replicas == "$available_replicas" && $((new_gen)) -gt $((gen)) ]]; then
+        wait_auth=false
+    else
+        sleep 10
+    fi
+done
+echo "authentication operator finished updating"
+
+# Copy the artifacts to the aritfact directory at the end of the test run.
+trap copyArtifacts EXIT
+
+# Set Kubeconfig var for Cypress.
+cp -L $KUBECONFIG /tmp/kubeconfig && export CYPRESS_KUBECONFIG_PATH=/tmp/kubeconfig
+
+# Set Cypress base URL var.
+console_route=$(oc get route console -n openshift-console -o jsonpath='{.spec.host}')
+export CYPRESS_BASE_URL=https://$console_route
+
+# Set Cypress authentication username and password.
+export CYPRESS_LOGIN_IDP=uiauto-htpasswd-idp
+export CYPRESS_LOGIN_USERS=${users}
+
+# Run the Cypress tests.
+export NO_COLOR=1
+export CYPRESS_CACHE_FOLDER=/tmp/Cypress
+
+# Install npm modules
+ls -ltr
+npm install
+
+# Run the Cypress tests
+npm run test-cypress-console-headless
diff --git a/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/upstream/distributed-tracing-tests-tracing-ui-upstream-ref.metadata.json b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/upstream/distributed-tracing-tests-tracing-ui-upstream-ref.metadata.json
new file mode 100644
index 0000000000000..b380e75d71936
--- /dev/null
+++ b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/upstream/distributed-tracing-tests-tracing-ui-upstream-ref.metadata.json
@@ -0,0 +1,19 @@
+{
+	"path": "distributed-tracing/tests/tracing-ui/upstream/distributed-tracing-tests-tracing-ui-upstream-ref.yaml",
+	"owners": {
+		"approvers": [
+			"pavolloffay",
+			"andreasgerstmayr",
+			"rubenvp8510",
+			"frzifus",
+			"IshwarKanse"
+		],
+		"reviewers": [
+			"pavolloffay",
+			"andreasgerstmayr",
+			"rubenvp8510",
+			"frzifus",
+			"IshwarKanse"
+		]
+	}
+}
\ No newline at end of file
diff --git a/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/upstream/distributed-tracing-tests-tracing-ui-upstream-ref.yaml b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/upstream/distributed-tracing-tests-tracing-ui-upstream-ref.yaml
new file mode 100644
index 0000000000000..d516f68cf47da
--- /dev/null
+++ b/ci-operator/step-registry/distributed-tracing/tests/tracing-ui/upstream/distributed-tracing-tests-tracing-ui-upstream-ref.yaml
@@ -0,0 +1,33 @@
+ref:
+  as: distributed-tracing-tests-tracing-ui-upstream
+  from: tracing-ui-tests-runner
+  commands: distributed-tracing-tests-tracing-ui-upstream-commands.sh
+  timeout: 2h0m0s
+  grace_period: 60s
+  resources:
+    requests:
+      cpu: "1"
+      memory: 3Gi
+    limits:
+      memory: 4Gi
+  env:
+  - name: CYPRESS_SKIP_COO_INSTALL
+    default: ""
+    documentation: "Set the var to skip Cluster Observability and all the required operators installation from the Cypress test run."
+  - name: CYPRESS_COO_UI_INSTALL
+    default: ""
+    documentation: "Set the var to install Cluster Observability, OpenTelemetry and Tempo operators from redhat-operators catalog source."
+  - name: CYPRESS_KONFLUX_COO_BUNDLE_IMAGE
+    default: ""
+    documentation: "Set the var to install Cluster Observability Operator using Konflux bundle. Tempo and OpenTelemetry operators will be installed from redhat-operators catalog source."
+  - name: CYPRESS_CUSTOM_COO_BUNDLE_IMAGE
+    default: ""
+    documentation: "Set the var to use custom Cluster Observability Operator bundle image. Tempo and OpenTelemetry operators will be installed from redhat-operators catalog source."
+  - name: CYPRESS_DT_CONSOLE_IMAGE
+    default: ""
+    documentation: "Set the var to use custom Distributed Tracing UI plugin image. The image will be patched in Cluster Observability Operator CSV."
+  dependencies:
+  - name: "distributed-tracing-console-plugin"
+    env: CYPRESS_DT_CONSOLE_IMAGE
+  documentation: |-
+    The distributed-tracing-tests-tracing-upstream step executes the Distributed Tracing Console Plugin Upstream Cypress tests. 


Reviews:
user: login: lihongyan1
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T02:01:55Z
user: login: IshwarKanse
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-15T02:05:53Z
user: login: lihongyan1
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T02:32:40Z
user: login: IshwarKanse
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-15T03:04:45Z
user: login: IshwarKanse
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-15T03:09:33Z
user: login: IshwarKanse
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-15T03:10:51Z
user: login: IshwarKanse
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-15T03:14:58Z

Review comments:
diff_hunk: @@ -0,0 +1,33 @@
+ref:
+  as: distributed-tracing-tests-tracing-ui-integration
+  from_image:
+    name: cypress-base
+    namespace: ci
+    tag: latest
+  commands: distributed-tracing-tests-tracing-ui-integration-commands.sh
+  timeout: 2h0m0s
+  grace_period: 60s
+  resources:
+    requests:
+      cpu: "1"
+      memory: 3Gi
+    limits:
+      memory: 4Gi
+  env:
+  - name: CYPRESS_SKIP_COO_INSTALL
+    default: "true"
+    documentation: "Set the var to skip Cluster Observability and all the required operators installation from the Cypress test run."
+  - name: CYPRESS_COO_UI_INSTALL
+    default: ""
+    documentation: "Set the var to install Cluster Observability, OpenTelemetry and Tempo operators from redhat-operators catalog source."
+  - name: CYPRESS_KONFLUX_COO_BUNDLE_IMAGE
+    default: ""
+    documentation: "Set the var to install Cluster Observability Operator using Konflux bundle. Tempo and OpenTelemetry operators will be installed from redhat-operators catalog source."
path: ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-ref.yaml
user: login: lihongyan1
body: Is there a way we can install COO with stage Image and install Tempo and OpenTelemetry operators from redhat-operators catalog source?
created_at: 2025-05-15T01:58:25Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,33 @@
+ref:
+  as: distributed-tracing-tests-tracing-ui-integration
+  from_image:
+    name: cypress-base
+    namespace: ci
+    tag: latest
+  commands: distributed-tracing-tests-tracing-ui-integration-commands.sh
+  timeout: 2h0m0s
+  grace_period: 60s
+  resources:
+    requests:
+      cpu: "1"
+      memory: 3Gi
+    limits:
+      memory: 4Gi
+  env:
+  - name: CYPRESS_SKIP_COO_INSTALL
+    default: "true"
+    documentation: "Set the var to skip Cluster Observability and all the required operators installation from the Cypress test run."
+  - name: CYPRESS_COO_UI_INSTALL
+    default: ""
+    documentation: "Set the var to install Cluster Observability, OpenTelemetry and Tempo operators from redhat-operators catalog source."
+  - name: CYPRESS_KONFLUX_COO_BUNDLE_IMAGE
+    default: ""
+    documentation: "Set the var to install Cluster Observability Operator using Konflux bundle. Tempo and OpenTelemetry operators will be installed from redhat-operators catalog source."
path: ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-ref.yaml
user: login: IshwarKanse
body: We can use the konflux bundle for COO and rest of the operators will be installed from redhat-operators catalog source. But for stage, we should be having a common step in our job which installs all the operators. 
created_at: 2025-05-15T02:05:53Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,148 @@
+#!/bin/bash
+
+set -o nounset
+set -o errexit
+set -o pipefail
+
+# List of variables to check.
+vars=(
+  CYPRESS_SKIP_COO_INSTALL
+  CYPRESS_COO_UI_INSTALL
+  CYPRESS_KONFLUX_COO_BUNDLE_IMAGE
+  CYPRESS_CUSTOM_COO_BUNDLE_IMAGE
+  CYPRESS_DT_CONSOLE_IMAGE
+)
+
+# Loop through each variable.
+for var in "${vars[@]}"; do
+  if [[ -z "${!var}" ]]; then
+    unset "$var"
+    echo "Unset variable: $var"
+  else
+    echo "$var is set to '${!var}'"
+  fi
+done
+
+# Set proxy vars.
+if [ -f "${SHARED_DIR}/proxy-conf.sh" ] ; then
+  source "${SHARED_DIR}/proxy-conf.sh"
+fi
+
+## skip all tests when console is not installed.
+if ! (oc get clusteroperator console --kubeconfig=${KUBECONFIG}) ; then
+  echo "console is not installed, skipping all console tests."
+  exit 0
+fi
+
+# Function to copy artifacts to the artifact directory after test run.
+function copyArtifacts {
+  if [ -d "gui_test_screenshots" ]; then
+    cp -r gui_test_screenshots "${ARTIFACT_DIR}/gui_test_screenshots"
path: ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-commands.sh
user: login: lihongyan1
body: Not sure if better change /gui_test_screenshots to /coo_tracing_gui_test_screenshots
created_at: 2025-05-15T02:27:14Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,148 @@
+#!/bin/bash
+
+set -o nounset
+set -o errexit
+set -o pipefail
+
+# List of variables to check.
+vars=(
+  CYPRESS_SKIP_COO_INSTALL
+  CYPRESS_COO_UI_INSTALL
+  CYPRESS_KONFLUX_COO_BUNDLE_IMAGE
+  CYPRESS_CUSTOM_COO_BUNDLE_IMAGE
+  CYPRESS_DT_CONSOLE_IMAGE
+)
+
+# Loop through each variable.
+for var in "${vars[@]}"; do
+  if [[ -z "${!var}" ]]; then
+    unset "$var"
+    echo "Unset variable: $var"
+  else
+    echo "$var is set to '${!var}'"
+  fi
+done
path: ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-commands.sh
user: login: lihongyan1
body: I found nowhere there vars are used in the step shell, seems currently we can't testing by using bundle image
created_at: 2025-05-15T02:32:36Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,148 @@
+#!/bin/bash
+
+set -o nounset
+set -o errexit
+set -o pipefail
+
+# List of variables to check.
+vars=(
+  CYPRESS_SKIP_COO_INSTALL
+  CYPRESS_COO_UI_INSTALL
+  CYPRESS_KONFLUX_COO_BUNDLE_IMAGE
+  CYPRESS_CUSTOM_COO_BUNDLE_IMAGE
+  CYPRESS_DT_CONSOLE_IMAGE
+)
+
+# Loop through each variable.
+for var in "${vars[@]}"; do
+  if [[ -z "${!var}" ]]; then
+    unset "$var"
+    echo "Unset variable: $var"
+  else
+    echo "$var is set to '${!var}'"
+  fi
+done
+
+# Set proxy vars.
+if [ -f "${SHARED_DIR}/proxy-conf.sh" ] ; then
+  source "${SHARED_DIR}/proxy-conf.sh"
+fi
+
+## skip all tests when console is not installed.
+if ! (oc get clusteroperator console --kubeconfig=${KUBECONFIG}) ; then
+  echo "console is not installed, skipping all console tests."
+  exit 0
+fi
+
+# Function to copy artifacts to the artifact directory after test run.
+function copyArtifacts {
+  if [ -d "gui_test_screenshots" ]; then
+    cp -r gui_test_screenshots "${ARTIFACT_DIR}/gui_test_screenshots"
path: ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-commands.sh
user: login: IshwarKanse
body: Its a standard name across all the ui tests for the artifacts directory used by our Red Hat teams. 
created_at: 2025-05-15T03:04:45Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,148 @@
+#!/bin/bash
+
+set -o nounset
+set -o errexit
+set -o pipefail
+
+# List of variables to check.
+vars=(
+  CYPRESS_SKIP_COO_INSTALL
+  CYPRESS_COO_UI_INSTALL
+  CYPRESS_KONFLUX_COO_BUNDLE_IMAGE
+  CYPRESS_CUSTOM_COO_BUNDLE_IMAGE
+  CYPRESS_DT_CONSOLE_IMAGE
+)
+
+# Loop through each variable.
+for var in "${vars[@]}"; do
+  if [[ -z "${!var}" ]]; then
+    unset "$var"
+    echo "Unset variable: $var"
+  else
+    echo "$var is set to '${!var}'"
+  fi
+done
path: ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-commands.sh
user: login: IshwarKanse
body: This step you are referencing just unsets the vars which don't have any value. In the job logs, you can see this.
```

CYPRESS_SKIP_COO_INSTALL is set to 'true'
Unset variable: CYPRESS_COO_UI_INSTALL
Unset variable: CYPRESS_KONFLUX_COO_BUNDLE_IMAGE
Unset variable: CYPRESS_CUSTOM_COO_BUNDLE_IMAGE
Unset variable: CYPRESS_DT_CONSOLE_IMAGE
```

Since CYPRESS_SKIP_COO_INSTALL has a value true, it wont be unset.

As for using Konflux bundle image, to use the bundle, we set CYPRESS_KONFLUX_COO_BUNDLE_IMAGE with the COO bundle image. Once set, COO will be installed from the Cypress test run using the bundle and rest of the operators will be installed from redhat-operators catalog source required by test run. 
created_at: 2025-05-15T03:09:33Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,148 @@
+#!/bin/bash
+
+set -o nounset
+set -o errexit
+set -o pipefail
+
+# List of variables to check.
+vars=(
+  CYPRESS_SKIP_COO_INSTALL
+  CYPRESS_COO_UI_INSTALL
+  CYPRESS_KONFLUX_COO_BUNDLE_IMAGE
+  CYPRESS_CUSTOM_COO_BUNDLE_IMAGE
+  CYPRESS_DT_CONSOLE_IMAGE
+)
+
+# Loop through each variable.
+for var in "${vars[@]}"; do
+  if [[ -z "${!var}" ]]; then
+    unset "$var"
+    echo "Unset variable: $var"
+  else
+    echo "$var is set to '${!var}'"
+  fi
+done
path: ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-commands.sh
user: login: IshwarKanse
body: The CYPRESS_KONFLUX_COO_BUNDLE_IMAGE can either be set directly from step env vars or the job env vars. 
created_at: 2025-05-15T03:10:51Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,148 @@
+#!/bin/bash
+
+set -o nounset
+set -o errexit
+set -o pipefail
+
+# List of variables to check.
+vars=(
+  CYPRESS_SKIP_COO_INSTALL
+  CYPRESS_COO_UI_INSTALL
+  CYPRESS_KONFLUX_COO_BUNDLE_IMAGE
+  CYPRESS_CUSTOM_COO_BUNDLE_IMAGE
+  CYPRESS_DT_CONSOLE_IMAGE
+)
+
+# Loop through each variable.
+for var in "${vars[@]}"; do
+  if [[ -z "${!var}" ]]; then
+    unset "$var"
+    echo "Unset variable: $var"
+  else
+    echo "$var is set to '${!var}'"
+  fi
+done
path: ci-operator/step-registry/distributed-tracing/tests/tracing-ui/integration/distributed-tracing-tests-tracing-ui-integration-commands.sh
user: login: IshwarKanse
body: You can check the Cypress spec from the tracing console repo on how the vars are used. https://github.com/openshift/distributed-tracing-console-plugin/blob/main/tests/tests/dt-plugin-tests.cy.ts#L60
created_at: 2025-05-15T03:14:58Z
author_association: MEMBER

PR comments:
user: login: openshift-ci-robot
created_at: 2025-05-12T09:37:17Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-12T10:00:27Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-12T11:25:08Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-12T11:57:43Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-12T13:22:51Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-13T05:06:16Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: IshwarKanse
created_at: 2025-05-13T06:50:24Z
body: Upstream testing job passed:
Job link: https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_release/64779/rehearse-64779-pull-ci-openshift-distributed-tracing-console-plugin-release-0.4-upstream-amd64-aws-e2e/1922157254807654400 
Test run logs: https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/pr-logs/pull/openshift_release/64779/rehearse-64779-pull-ci-openshift-distributed-tracing-console-plugin-release-0.4-upstream-amd64-aws-e2e/1922157254807654400/artifacts/e2e/distributed-tracing-tests-tracing-ui-upstream/build-log.txt

author_association: MEMBER
user: login: openshift-ci-robot
created_at: 2025-05-13T07:02:32Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-13T08:45:49Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-13T09:05:40Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-13T17:25:51Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-14T02:25:38Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-14T07:27:38Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-14T07:41:44Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-14T11:36:18Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-14T13:08:46Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-14T13:39:55Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-14T14:35:09Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: IshwarKanse
created_at: 2025-05-14T16:02:48Z
body: /pj-rehearse periodic-ci-rhobs-observability-operator-main-ocp-coo-interop-production
author_association: MEMBER
user: login: openshift-ci-robot
created_at: 2025-05-14T16:02:51Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci[bot]
created_at: 2025-05-14T16:50:00Z
body: @IshwarKanse: The following test **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
ci/rehearse/openshift/distributed-tracing-console-plugin/main/upstream-amd64-aws-e2e | 866756b1f6dfc5113b345273489b94c5d0e079e1 | [link](https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_release/64779/rehearse-64779-pull-ci-openshift-distributed-tracing-console-plugin-main-upstream-amd64-aws-e2e/1922343435918905344) | unknown | `/pj-rehearse pull-ci-openshift-distributed-tracing-console-plugin-main-upstream-amd64-aws-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=release&pr=64779). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:IshwarKanse).

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes-sigs/prow](https://github.com/kubernetes-sigs/prow/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
author_association: CONTRIBUTOR
user: login: IshwarKanse
created_at: 2025-05-14T17:52:24Z
body: /pj-rehearse periodic-ci-rhobs-observability-operator-main-ocp-coo-interop-production
author_association: MEMBER
user: login: openshift-ci-robot
created_at: 2025-05-14T17:52:27Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: IshwarKanse
created_at: 2025-05-14T18:09:18Z
body: /pj-rehearse periodic-ci-rhobs-observability-operator-main-ocp-coo-interop-production
author_association: MEMBER
user: login: openshift-ci-robot
created_at: 2025-05-14T18:09:21Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: openshift-ci-robot
created_at: 2025-05-14T18:10:17Z
body: [REHEARSALNOTIFIER] 
@IshwarKanse: the `pj-rehearse` plugin accommodates running rehearsal tests for the changes in this PR. Expand **'Interacting with pj-rehearse'** for usage details. The following rehearsable tests have been affected by this change:

Test name | Repo | Type | Reason
--- | --- | --- | ---
pull-ci-openshift-distributed-tracing-console-plugin-main-upstream-amd64-aws-e2e | openshift/distributed-tracing-console-plugin | presubmit | Presubmit changed
pull-ci-openshift-distributed-tracing-console-plugin-release-0.4-upstream-amd64-aws-e2e | openshift/distributed-tracing-console-plugin | presubmit | Presubmit changed
pull-ci-openshift-distributed-tracing-console-plugin-release-0.4-upstream-amd64-aws-fips-image-scan | openshift/distributed-tracing-console-plugin | presubmit | Ci-operator config changed
pull-ci-openshift-distributed-tracing-console-plugin-release-0.4-upstream-amd64-aws-images | openshift/distributed-tracing-console-plugin | presubmit | Ci-operator config changed
pull-ci-openshift-distributed-tracing-console-plugin-release-0.4-upstream-amd64-aws-lint | openshift/distributed-tracing-console-plugin | presubmit | Ci-operator config changed
pull-ci-openshift-distributed-tracing-console-plugin-main-upstream-amd64-aws-fips-image-scan | openshift/distributed-tracing-console-plugin | presubmit | Ci-operator config changed
pull-ci-openshift-distributed-tracing-console-plugin-main-upstream-amd64-aws-images | openshift/distributed-tracing-console-plugin | presubmit | Ci-operator config changed
pull-ci-openshift-distributed-tracing-console-plugin-main-upstream-amd64-aws-lint | openshift/distributed-tracing-console-plugin | presubmit | Ci-operator config changed
periodic-ci-rhobs-observability-operator-main-ocp-coo-interop-production | N/A | periodic | Ci-operator config changed

<details>
<summary>Interacting with pj-rehearse</summary>

Comment: `/pj-rehearse` to run up to 5 rehearsals
Comment: `/pj-rehearse skip` to opt-out of rehearsals
Comment: `/pj-rehearse {test-name}`, with each test separated by a space, to run one or more specific rehearsals
Comment: `/pj-rehearse more` to run up to 10 rehearsals
Comment: `/pj-rehearse max` to run up to 25 rehearsals
Comment: `/pj-rehearse auto-ack` to run up to 5 rehearsals, and add the `rehearsals-ack` label on success
Comment: `/pj-rehearse list` to get an up-to-date list of affected jobs
Comment: `/pj-rehearse abort` to abort all active rehearsals
Comment: `/pj-rehearse network-access-allowed` to allow rehearsals of tests that have the `restrict_network_access` field set to `false`. This must be executed by an `openshift` org member who is **not** the PR author

Once you are satisfied with the results of the rehearsals, comment: `/pj-rehearse ack` to unblock merge. When the `rehearsals-ack` label is present on your PR, merge will no longer be blocked by rehearsals.
If you would like the `rehearsals-ack` label removed, comment: `/pj-rehearse reject` to re-block merging.
</details>
author_association: CONTRIBUTOR
user: login: IshwarKanse
created_at: 2025-05-15T01:19:32Z
body: Integration test job successful:
Job link: https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_release/64779/rehearse-64779-periodic-ci-rhobs-observability-operator-main-ocp-coo-interop-production/1922716725409746944
Job logs: https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/pr-logs/pull/openshift_release/64779/rehearse-64779-periodic-ci-rhobs-observability-operator-main-ocp-coo-interop-production/1922716725409746944/artifacts/production/distributed-tracing-tests-tracing-ui-integration/
author_association: MEMBER
user: login: IshwarKanse
created_at: 2025-05-15T01:19:43Z
body: /pj-rehearse ack
author_association: MEMBER
user: login: openshift-ci-robot
created_at: 2025-05-15T01:19:45Z
body: @IshwarKanse: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.
author_association: CONTRIBUTOR
user: login: lihongyan1
created_at: 2025-05-15T03:40:05Z
body: /lgtm
author_association: CONTRIBUTOR
user: login: IshwarKanse
created_at: 2025-05-15T04:17:44Z
body: /approve
author_association: MEMBER
user: login: danielmellado
created_at: 2025-05-15T07:22:54Z
body: /lgtm
author_association: CONTRIBUTOR
user: login: danielmellado
created_at: 2025-05-15T07:47:20Z
body: /approve
author_association: CONTRIBUTOR
user: login: openshift-ci[bot]
created_at: 2025-05-15T07:48:44Z
body: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/openshift/release/pull/64779#issuecomment-2882886907" title="Approved">danielmellado</a>*, *<a href="https://github.com/openshift/release/pull/64779#issuecomment-2882191971" title="Approved">IshwarKanse</a>*, *<a href="https://github.com/openshift/release/pull/64779#issuecomment-2882137646" title="LGTM">lihongyan1</a>*

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=openshift%2Frelease).

The pull request process is described [here](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process)

<details >
Needs approval from an approver in each of these files:

- ~~[ci-operator/config/openshift/distributed-tracing-console-plugin/OWNERS](https://github.com/openshift/release/blob/master/ci-operator/config/openshift/distributed-tracing-console-plugin/OWNERS)~~ [IshwarKanse]
- ~~[ci-operator/config/rhobs/observability-operator/OWNERS](https://github.com/openshift/release/blob/master/ci-operator/config/rhobs/observability-operator/OWNERS)~~ [danielmellado]
- ~~[ci-operator/jobs/openshift/distributed-tracing-console-plugin/OWNERS](https://github.com/openshift/release/blob/master/ci-operator/jobs/openshift/distributed-tracing-console-plugin/OWNERS)~~ [IshwarKanse]
- ~~[ci-operator/step-registry/distributed-tracing/tests/OWNERS](https://github.com/openshift/release/blob/master/ci-operator/step-registry/distributed-tracing/tests/OWNERS)~~ [IshwarKanse]

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":[]} -->
author_association: CONTRIBUTOR