โ† Back to Visual Guide Index

๐Ÿงช Complete Testing Flow

How Konflux E2E Tests Execute on Every PR

๐ŸŽฏ Powered by Ginkgo & Gomega

All Konflux E2E tests are written in Go using the Ginkgo BDD (Behavior-Driven Development) framework with Gomega assertions. Tests are defined in the e2e-tests Repository and validate that component services work correctly together.

๐Ÿ“ BDD Style Describe/Context/It blocks for readable tests
๐Ÿท๏ธ Label Filtering Run specific test suites with --label-filter
โšก Parallel Execution Tests run concurrently for speed
๐Ÿ“Š Rich Reporting JUnit XML and JSON output formats
๐Ÿ”ง Before/After Hooks Setup and teardown per suite/spec
๐ŸŽญ Mage Build System Tasks defined in magefiles for automation

Complete Test Execution Timeline

๐Ÿ“Š Example Data (60-day sample size):
โ€ข Success: ~40 minutes average
โ€ข Failure: ~106 minutes average (waits for timeout)
โ€ข This timeline shows typical test execution phases

Cluster
Setup
5-10m
Bootstrap Konflux
(infra-deployments)
20-25m
Test Execution
(e2e-tests)
12-15m
Report
3-5m
0 min 10 min 20 min 30 min 40 min (โœ… Success) 106 min (โŒ Failure timeout)
1
๐Ÿ—๏ธ Cluster Provisioning
โฑ๏ธ 5-10 minutes (estimated)
โ–ผ
1.1 Request OpenShift Cluster
OpenShift CI (Prow) receives webhook from GitHub PR. Reads cluster requirements from ci-operator config and requests a fresh OpenShift 4.17 cluster from AWS.
# From: openshift/release/ci-operator/config/.../infra-deployments-main.yaml cluster_claim: architecture: amd64 cloud: aws owner: konflux product: ocp version: "4.17" timeout: 1h0m0s
1.2 Cluster Becomes Ready
AWS provisions EC2 instances, installs OpenShift, configures networking. Cluster reaches "Ready" state with all control plane components running.
1.3 Export KUBECONFIG
CI system exports KUBECONFIG credentials. Test runner pod can now execute kubectl/oc commands against the new cluster.
export KUBECONFIG=/tmp/kubeconfig oc get nodes # Verify cluster access
2
๐Ÿš€ Bootstrap Konflux Installation
โฑ๏ธ 20-25 minutes (team reported)
โ–ผ
2.1 Clone infra-deployments
Test runner clones infra-deployments repository at the PR's commit SHA (testing your changes!).
git clone https://github.com/redhat-appstudio/infra-deployments cd infra-deployments git checkout ${PULL_PULL_SHA} # Your PR's commit
2.2 Run Bootstrap Script
Executes hack/bootstrap-cluster.sh which installs ArgoCD and creates all ArgoCD Application resources pointing to your PR branch.
./hack/bootstrap-cluster.sh preview # Installs: # - OpenShift GitOps (ArgoCD) # - All component ArgoCD Applications # - Secrets and ConfigMaps # - Monitoring stack
2.3 Wait for ArgoCD Sync
ArgoCD automatically syncs all applications, deploying 35 Konflux components (development overlay). Waits for all deployments to reach "Healthy" status.
# 35 Components deployed in development overlay: # - build-service, release-service, integration-service # - multi-platform-controller, enterprise-contract # - pipeline-service (Tekton) # - konflux-ui # - All monitoring and infrastructure components # # โš ๏ธ PROBLEM: Only 2 of 35 components use sync waves! # This causes race conditions and unpredictable deployment order. # # Wait command: ./hack/wait-for-all.sh # Polls until all healthy
โ„น๏ธ Bootstrap Notes
Key Points:
  • 35+ components deployed: All Konflux services in development overlay
  • ArgoCD sync waves: Control deployment ordering where needed
  • Deployment time: 20-25 minutes typical
$ ls argo-cd-apps/overlays/development/*.yaml | wc -l 35 # Components deployed in development overlay
3
๐Ÿงช Execute E2E Test Suites
โฑ๏ธ 12 minutes (team reported)
โ–ผ
3.1 Clone e2e-tests Repository
Test runner clones konflux-ci/e2e-tests repo. Uses PR pairing if testing breaking changes across repos.
git clone https://github.com/konflux-ci/e2e-tests cd e2e-tests # If PR paired: git checkout feature-branch # Else: git checkout main
3.2 Run Ginkgo Test Suites
Executes test suites using Ginkgo with label filtering. Tests run in parallel using Gomega assertions.
# Using Mage build system mage test # Or directly with Ginkgo: ginkgo -v --label-filter="build || integration || release" \ --junit-report=results.xml \ --json-report=results.json \ ./tests/...

Test Suites Executed

๐Ÿ—๏ธ Build Tests
Validates that users can trigger container builds, multi-platform builds work correctly, and Tekton pipelines execute successfully.
build templates multi-arch source builds tkn bundles
๐Ÿ”— Integration Tests
Validates integration test execution, snapshot creation, status reporting to GitHub PRs, and GitLab integration.
snapshots status reporting gitlab group snapshots
๐Ÿš€ Release Tests
Validates release workflows including Quay.io pushes, GitHub releases, external registry pushes, and Red Hat advisories.
quay pushes github releases advisories FBC releases
๐Ÿ›ก๏ธ Enterprise Contract Tests
Validates security policy enforcement, supply chain attestation, and compliance checks for container images.
policy validation SLSA attestations
๐ŸŽญ Demo/Happy Path Tests
End-to-end user journeys testing complete workflows from application creation to release.
full workflows user journeys scenarios
โฌ†๏ธ Upgrade Tests
Validates that Konflux survives OpenShift cluster upgrades and component version updates.
cluster upgrade component upgrade workload verification
๐Ÿ“ˆ Load Tests
Performance and scale testing with concurrent users, applications, and pipeline runs.
concurrency performance scale testing
4
๐Ÿ“Š Report Results & Cleanup
โฑ๏ธ 3-5 minutes
โ–ผ
4.1 Generate Test Reports
Ginkgo generates JUnit XML and JSON reports with detailed test results, timings, and failure information.
# Files generated: # - junit-results.xml (for CI parsing) # - json-results.json (detailed data) # - ginkgo-spec-output.txt (console logs) # # Example result: # Ran 47 specs in 35.2 minutes # PASS: 45 specs # FAIL: 2 specs
4.2 Post Status to GitHub
OpenShift CI posts test results as a status check on your PR. Shows โœ… PASS or โŒ FAIL with links to detailed logs.
# GitHub status check: # Context: ci/prow/appstudio-e2e-tests # Status: success or failure # Details URL: Link to Prow job logs # # PR comment may include: # - Failed test names # - Error messages # - Links to artifacts
4.3 Archive Artifacts
Test artifacts (logs, reports, screenshots) are uploaded to GCS bucket for debugging. Cluster is released back to pool.
# Artifacts stored: # - Test reports (XML/JSON) # - Pod logs from failed tests # - kubectl describe output # - Prometheus metrics snapshot # # Available at: # https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/...
4.4 Cleanup
OpenShift cluster is destroyed to free resources. Test runner pod exits. Total run time reported.

๐Ÿ“Š Example Performance Metrics

~40 min
Successful Run
Cluster + Bootstrap + Tests + Report
~106 min
Failed Run (timeout)
Waits for full test timeout
4 Phases
Test Pipeline
Cluster โ†’ Bootstrap โ†’ Test โ†’ Report

Note: Actual timings may vary based on cluster availability, test selection, and infrastructure load. Check DevLake or Prow for current metrics.