From 330b66e39d2c1023691b8e0b15881917a7377db5 Mon Sep 17 00:00:00 2001 From: Radovan Fuchs Date: Tue, 21 Jul 2026 10:21:27 +0200 Subject: [PATCH 1/6] LCORE-2882: make e2e fail on error or test failure in konflux --- .../pipeline/lightspeed-stack-integration-test.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.tekton/integration-tests/pipeline/lightspeed-stack-integration-test.yaml b/.tekton/integration-tests/pipeline/lightspeed-stack-integration-test.yaml index d2254ae73..3919ae64e 100644 --- a/.tekton/integration-tests/pipeline/lightspeed-stack-integration-test.yaml +++ b/.tekton/integration-tests/pipeline/lightspeed-stack-integration-test.yaml @@ -233,7 +233,10 @@ spec: - name: credentials value: credentials - name: run-e2e-tests - onError: continue + #onError: continue + # Do not use onError: continue here unless a later step like + # fail-if-any-step-failed is enabled; otherwise the PipelineRun stays green + # even when pipeline-konflux.sh / behave exit non-zero. resources: requests: cpu: '1' From 1ac89162a9d042cac03bca00366d56f77add1c27 Mon Sep 17 00:00:00 2001 From: Radovan Fuchs Date: Tue, 21 Jul 2026 14:07:47 +0200 Subject: [PATCH 2/6] disable tests temporarily --- tests/e2e/test_list.txt | 36 ------------------------------------ 1 file changed, 36 deletions(-) diff --git a/tests/e2e/test_list.txt b/tests/e2e/test_list.txt index 9a619fba4..053ec899c 100644 --- a/tests/e2e/test_list.txt +++ b/tests/e2e/test_list.txt @@ -2,39 +2,3 @@ features/authorized_noop.feature features/health.feature features/info.feature features/models.feature -features/rest_api.feature -features/smoketests.feature -features/authorized_noop_token.feature -features/conversation_cache_v2.feature -features/conversations.feature -features/prompts.feature -features/faiss.feature -features/inline_rag.feature -features/byok_pdf.feature -features/vector_stores.feature -features/feedback.feature -features/query.feature -features/responses.feature -features/responses_streaming.feature -features/rlsapi_v1.feature -features/streaming_query.feature -features/http_401_unauthorized.feature -features/authorized_rh_identity.feature -features/rbac.feature -features/rlsapi_v1_errors.feature -features/llama_stack_disrupted.feature -features/mcp.feature -features/mcp_servers_api.feature -features/mcp_servers_api_auth.feature -features/mcp_servers_api_no_config.feature -features/proxy.feature -features/tls-ca.feature -features/tls-mtls.feature -features/tls-tlsv13.feature -features/opentelemetry.feature -features/unified-mode-boot.feature -features/unified-mode-legacy.feature -features/unified-mode-validation.feature -features/unified-mode-migration.feature -features/unified-mode-synthesis.feature -features/skills.feature From 5d5c7740e5a061e09f26f16991811619bf57df4d Mon Sep 17 00:00:00 2001 From: Radovan Fuchs Date: Wed, 22 Jul 2026 10:34:09 +0200 Subject: [PATCH 3/6] increase number of tests --- tests/e2e/test_list.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/e2e/test_list.txt b/tests/e2e/test_list.txt index 053ec899c..7d8814d6c 100644 --- a/tests/e2e/test_list.txt +++ b/tests/e2e/test_list.txt @@ -2,3 +2,20 @@ features/authorized_noop.feature features/health.feature features/info.feature features/models.feature +features/rest_api.feature +features/smoketests.feature +features/authorized_noop_token.feature +features/conversation_cache_v2.feature +features/conversations.feature +features/prompts.feature +features/faiss.feature +features/inline_rag.feature +features/byok_pdf.feature +features/vector_stores.feature +features/feedback.feature +features/query.feature +features/responses.feature +features/responses_streaming.feature +features/rlsapi_v1.feature +features/streaming_query.feature +features/http_401_unauthorized.feature \ No newline at end of file From e1362deb7d5eb24fcfbbc871a239bbdb23444906 Mon Sep 17 00:00:00 2001 From: Radovan Fuchs Date: Wed, 22 Jul 2026 15:36:00 +0200 Subject: [PATCH 4/6] restore complete test list --- tests/e2e/test_list.txt | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/tests/e2e/test_list.txt b/tests/e2e/test_list.txt index 7d8814d6c..ad32a1a84 100644 --- a/tests/e2e/test_list.txt +++ b/tests/e2e/test_list.txt @@ -18,4 +18,23 @@ features/responses.feature features/responses_streaming.feature features/rlsapi_v1.feature features/streaming_query.feature -features/http_401_unauthorized.feature \ No newline at end of file +features/http_401_unauthorized.feature +features/authorized_rh_identity.feature +features/rbac.feature +features/rlsapi_v1_errors.feature +features/llama_stack_disrupted.feature +features/mcp.feature +features/mcp_servers_api.feature +features/mcp_servers_api_auth.feature +features/mcp_servers_api_no_config.feature +features/proxy.feature +features/tls-ca.feature +features/tls-mtls.feature +features/tls-tlsv13.feature +features/opentelemetry.feature +features/unified-mode-boot.feature +features/unified-mode-legacy.feature +features/unified-mode-validation.feature +features/unified-mode-migration.feature +features/unified-mode-synthesis.feature +features/skills.feature \ No newline at end of file From ac5c9e6a92932360fbc10a1e2c86914dcf8a83ae Mon Sep 17 00:00:00 2001 From: Radovan Fuchs Date: Thu, 23 Jul 2026 08:00:00 +0200 Subject: [PATCH 5/6] print the actual value on assert --- tests/e2e/utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/utils/utils.py b/tests/e2e/utils/utils.py index a93f05246..811d8c381 100644 --- a/tests/e2e/utils/utils.py +++ b/tests/e2e/utils/utils.py @@ -265,7 +265,7 @@ def validate_json_partially(actual: Any, expected: Any) -> None: continue assert ( matched - ), f"No matching element found in list for schema item {schema_item}" + ), f"No matching element found in list for schema item {schema_item}, got {actual}" else: assert actual == expected, f"Value mismatch: expected {expected}, got {actual}" From 91bdc45bee41bbe637f23b627f5205dab6f0e13f Mon Sep 17 00:00:00 2001 From: Radovan Fuchs Date: Fri, 24 Jul 2026 10:56:46 +0200 Subject: [PATCH 6/6] add skills mounts to konflux env --- .../lightspeed/lightspeed-stack.yaml | 35 +++++++++++++++++++ tests/e2e-prow/rhoai/pipeline-konflux.sh | 13 +++++++ tests/e2e-prow/rhoai/pipeline.sh | 13 +++++++ 3 files changed, 61 insertions(+) diff --git a/tests/e2e-prow/rhoai/manifests/lightspeed/lightspeed-stack.yaml b/tests/e2e-prow/rhoai/manifests/lightspeed/lightspeed-stack.yaml index 83e2f173a..b58175c22 100644 --- a/tests/e2e-prow/rhoai/manifests/lightspeed/lightspeed-stack.yaml +++ b/tests/e2e-prow/rhoai/manifests/lightspeed/lightspeed-stack.yaml @@ -6,6 +6,32 @@ spec: securityContext: seccompProfile: type: RuntimeDefault + # Seed agent-skills fixtures (docker-compose: ./tests/e2e/skills -> /app-root/skills). + # ConfigMap cannot preserve nested skill dirs; extract tarball into emptyDir. + initContainers: + - name: seed-skills + image: busybox:latest + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] + runAsNonRoot: true + runAsUser: 1000 + seccompProfile: + type: RuntimeDefault + command: + - /bin/sh + - -c + - | + set -e + tar xzf /skills-seed/skills.tgz -C /skills-dest + ls -la /skills-dest + volumeMounts: + - name: skills-seed + mountPath: /skills-seed + readOnly: true + - name: skills + mountPath: /skills-dest containers: - name: lightspeed-stack-container securityContext: @@ -58,6 +84,10 @@ spec: - name: config mountPath: /app-root/lightspeed-stack.yaml subPath: lightspeed-stack.yaml + # Agent skills E2E (skills.feature): matches docker-compose mount path + - name: skills + mountPath: /app-root/skills + readOnly: true # MCPFileAuth E2E: must match authorization_headers paths in lightspeed-stack-mcp-file-auth.yaml (/tmp/mcp-token) - name: mcp-file-auth-token mountPath: /tmp/mcp-token @@ -72,6 +102,11 @@ spec: - name: config configMap: name: lightspeed-stack-config + - name: skills-seed + configMap: + name: e2e-skills + - name: skills + emptyDir: {} - name: mcp-file-auth-token secret: secretName: mcp-file-auth-token diff --git a/tests/e2e-prow/rhoai/pipeline-konflux.sh b/tests/e2e-prow/rhoai/pipeline-konflux.sh index c20cbbac0..2e9c8f865 100755 --- a/tests/e2e-prow/rhoai/pipeline-konflux.sh +++ b/tests/e2e-prow/rhoai/pipeline-konflux.sh @@ -221,6 +221,19 @@ else log "⚠️ No kv_store.db found at $RAG_DB_PATH" fi +# Agent skills E2E: same fixture docker-compose mounts at /app-root/skills +SKILLS_DIR="$REPO_ROOT/tests/e2e/skills" +if [ -d "$SKILLS_DIR" ]; then + tar czf /tmp/e2e-skills.tgz -C "$SKILLS_DIR" . + oc create configmap e2e-skills -n "$NAMESPACE" \ + --from-file=skills.tgz=/tmp/e2e-skills.tgz \ + --dry-run=client -o yaml | oc apply -f - + rm -f /tmp/e2e-skills.tgz + log "✅ e2e-skills ConfigMap created from $SKILLS_DIR" +else + log "⚠️ No skills directory at $SKILLS_DIR — skills.feature will fail" +fi + # ConfigMap for Llama Stack run-from-source (init container clones this repo @ this revision) REPO_URL="${REPO_URL:-$(cd "$REPO_ROOT" && git config --get remote.origin.url 2>/dev/null)}" diff --git a/tests/e2e-prow/rhoai/pipeline.sh b/tests/e2e-prow/rhoai/pipeline.sh index 4ae604e1c..374904f46 100755 --- a/tests/e2e-prow/rhoai/pipeline.sh +++ b/tests/e2e-prow/rhoai/pipeline.sh @@ -296,6 +296,19 @@ else echo "⚠️ No kv_store.db found at $RAG_DB_PATH" fi +# Agent skills E2E: same fixture docker-compose mounts at /app-root/skills +SKILLS_DIR="$REPO_ROOT/tests/e2e/skills" +if [ -d "$SKILLS_DIR" ]; then + tar czf /tmp/e2e-skills.tgz -C "$SKILLS_DIR" . + oc create configmap e2e-skills -n "$NAMESPACE" \ + --from-file=skills.tgz=/tmp/e2e-skills.tgz \ + --dry-run=client -o yaml | oc apply -f - + rm -f /tmp/e2e-skills.tgz + echo "✅ e2e-skills ConfigMap created from $SKILLS_DIR" +else + echo "⚠️ No skills directory at $SKILLS_DIR — skills.feature will fail" +fi + ./pipeline-services.sh echo "--> Final wait for both lightspeed-stack-service and llama-stack-service pods..."