Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,4 @@

test-setup.bin
/tests/
e2e-spock-geb/files/.gradle
9 changes: 8 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,20 @@
# Changelog

## Unreleased

### Added

### Changed

### Fixed

## [4.12.0] - 2026-03-02
### Changed
- Add specific quickstarter versioning to e2e-spock-geb and e2e-etl-python ([#1148](https://github.com/opendevstack/ods-quickstarters/pull/1148))
- Update Quickstarter Tests to Support New Framework Test Capabilities ([#1144](https://github.com/opendevstack/ods-quickstarters/pull/1144))

### Fixed
- Increase Docker-plain QS default memory resources ([#1147](https://github.com/opendevstack/ods-quickstarters/pull/1147))

## [4.11.0] - 2025-12-03

### Added
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
"stage": "odsPipeline start",
"status": "SUCCESS"
},
{
"stage": "SonarQube Analysis",
"status": "SUCCESS"
},
{
"stage": "Build OpenShift Image (monorepo-iq-test-frontend)",
"status": "SUCCESS"
Expand Down
3 changes: 3 additions & 0 deletions be-fe-mono-repo-plain/testdata/steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,6 @@ steps:
services:
- "{{.ComponentID}}-backend"
- "{{.ComponentID}}-frontend"
runAttachments:
- sonarqube-report-{{.ProjectID}}-{{.ComponentID}}.pdf

4 changes: 4 additions & 0 deletions be-gateway-nginx/testdata/golden/jenkins-build-stages.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
"stage": "odsPipeline start",
"status": "SUCCESS"
},
{
"stage": "SonarQube Analysis",
"status": "SUCCESS"
},
{
"stage": "Build OpenShift Image",
"status": "SUCCESS"
Expand Down
3 changes: 3 additions & 0 deletions be-gateway-nginx/testdata/steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,6 @@ steps:
- "{{.ComponentID}}"
services:
- "{{.ComponentID}}"
runAttachments:
- sonarqube-report-{{.ProjectID}}-{{.ComponentID}}.pdf

8 changes: 7 additions & 1 deletion be-golang-plain/testdata/golden/sonar-scan.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,23 @@
"key": "{{.ProjectID}}-{{.ComponentID}}",
"name": "{{.ProjectID}}-{{.ComponentID}}",
"isFavorite": false,
"branch": "master",
"visibility": "public",
"extensions": [],
"qualityProfiles": [
{
"name": "Sonar way",
"language": "docker",
"deleted": false
},
{
"name": "{{.SonarQualityProfile}}",
"language": "go",
"deleted": false
}
],
"qualityGate": {
"name": "Sonar way",
"name": "{{.SonarQualityGate}}",
"isDefault": true
},
"breadcrumbs": [
Expand Down
3 changes: 1 addition & 2 deletions be-golang-plain/testdata/steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ steps:
jenkinsStages: golden/jenkins-build-stages.json
sonarScan: golden/sonar-scan.json
runAttachments:
- SCRR-{{.ProjectID}}-{{.ComponentID}}.docx
- SCRR-{{.ProjectID}}-{{.ComponentID}}.md
- sonarqube-report-{{.ProjectID}}-{{.ComponentID}}.pdf
testResults: 1
openShiftResources:
imageTags:
Expand Down
9 changes: 8 additions & 1 deletion be-java-springboot/testdata/golden/sonar-scan.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,24 @@
"key": "{{.ProjectID}}-{{.ComponentID}}",
"name": "{{.ProjectID}}-{{.ComponentID}}",
"isFavorite": false,
"branch": "master",
"visibility": "public",
"extensions": [],
"qualityProfiles": [
{
"name": "Sonar way",
"language": "docker",
"deleted": false
},
{
"name": "{{.SonarQualityProfile}}",
"language": "java",
"deleted": false

}
],
"qualityGate": {
"name": "Sonar way",
"name": "{{.SonarQualityGate}}",
"isDefault": true
},
"breadcrumbs": [
Expand Down
3 changes: 1 addition & 2 deletions be-java-springboot/testdata/steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ steps:
jenkinsStages: golden/jenkins-build-stages.json
sonarScan: golden/sonar-scan.json
runAttachments:
- SCRR-{{.ProjectID}}-{{.ComponentID}}.docx
- SCRR-{{.ProjectID}}-{{.ComponentID}}.md
- sonarqube-report-{{.ProjectID}}-{{.ComponentID}}.pdf
testResults: 1
openShiftResources:
imageTags:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"msg":"hello world!"}
25 changes: 25 additions & 0 deletions be-python-flask/testdata/functional/integration/smoke_test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/bin/bash
set -e

echo "Running smoke tests..."

# APP_SERVICE_URL is automatically injected by the test framework
# with the correct resolved URL (route, port-forward, or service DNS)
if [ -z "$APP_SERVICE_URL" ]; then
echo "ERROR: APP_SERVICE_URL not set by test framework"
exit 1
fi

echo "Testing service at: $APP_SERVICE_URL"

# Test 1: Health check
echo "Test 1: Health endpoint"
response=$(curl -f -s "$APP_SERVICE_URL/")
if [ -z "$response" ]; then
echo "FAIL: Health check failed - empty response"
exit 1
fi
echo "PASS: Health endpoint returned: $response"


echo "All smoke tests passed!"
8 changes: 7 additions & 1 deletion be-python-flask/testdata/golden/sonar-scan.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,23 @@
"key": "{{.ProjectID}}-{{.ComponentID}}",
"name": "{{.ProjectID}}-{{.ComponentID}}",
"isFavorite": false,
"branch": "master",
"visibility": "public",
"extensions": [],
"qualityProfiles": [
{
"name": "Sonar way",
"language": "docker",
"deleted": false
},
{
"name": "{{.SonarQualityProfile}}",
"language": "py",
"deleted": false
}
],
"qualityGate": {
"name": "Sonar way",
"name": "{{.SonarQualityGate}}",
"isDefault": true
},
"breadcrumbs": [
Expand Down
100 changes: 77 additions & 23 deletions be-python-flask/testdata/steps.yml
Original file line number Diff line number Diff line change
@@ -1,25 +1,79 @@
componentID: python-flask-iq-test
steps:
- type: provision
provisionParams:
verify:
jenkinsStages: golden/jenkins-provision-stages.json
- type: build
buildParams:
verify:
jenkinsStages: golden/jenkins-build-stages.json
sonarScan: golden/sonar-scan.json
runAttachments:
- SCRR-{{.ProjectID}}-{{.ComponentID}}.docx
- SCRR-{{.ProjectID}}-{{.ComponentID}}.md
testResults: 1
openShiftResources:
imageTags:
- name: "{{.ComponentID}}"
tag: latest
imageStreams:
- "{{.ComponentID}}"
deploymentConfigs:
- "{{.ComponentID}}"
services:
- "{{.ComponentID}}"
- type: provision
provisionParams:
verify:
jenkinsStages: golden/jenkins-provision-stages.json
- type: build
buildParams:
verify:
jenkinsStages: golden/jenkins-build-stages.json
sonarScan: golden/sonar-scan.json
runAttachments:
- sonarqube-report-{{.ProjectID}}-{{.ComponentID}}.pdf
testResults: 1
openShiftResources:
imageTags:
- name: "{{.ComponentID}}"
tag: latest
imageStreams:
- "{{.ComponentID}}"
deploymentConfigs:
- "{{.ComponentID}}"
services:
- "{{.ComponentID}}"
# Step 3: Wait for deployment to be ready
- type: wait
description: Wait for application pod to be ready
waitParams:
condition: pod-ready
resource: "-l app={{.ProjectID}}-{{.ComponentID}}"
namespace: "{{.ProjectID}}-dev"
timeout: "300s"
interval: "5s"

# Step 4: Verify logs don't contain errors (NEW)
- type: inspect
description: Verify container logs
inspectParams:
resource: "deploymentconfig/{{.ComponentID}}"
namespace: "{{.ProjectID}}-dev"
checks:
logs:
contains:
- "Starting gunicorn 23.0.0"
- "Listening at: http://0.0.0.0:8080"
- "Using worker: sync"
- "Booting worker with pid:"
notContains:
- "panic:"
- "fatal error"
- "ERROR"

# Step 5: Expose services
- type: "expose-service"
description: "Expose service with defaults"
exposeServiceParams:
services:
- serviceName: "{{.ComponentID}}"

# Step 6: Test health endpoint
- type: http
description: Verify health endpoint returns 200
httpParams:
url: "http://{{.ComponentID}}.{{.ProjectID}}-dev.svc.cluster.local:8080/"
method: GET
expectedStatus: 200
expectedBody: "functional/api/health-response.json"
timeout: 30
retry:
attempts: 10
delay: "5s"

# Step 7: Run integration smoke tests
- type: run
description: Run integration smoke tests
runParams:
file: "functional/integration/smoke_test.sh"
services:
app: "{{.ComponentID}}"
2 changes: 1 addition & 1 deletion be-rust-axum/testdata/golden/jenkins-build-stages.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"status": "SUCCESS"
},
{
"stage": "Deploy to OpenShift (app=rust-axum-iq-test)",
"stage": "Deploy to OpenShift (app.kubernetes.io/name=rust-axum-iq-test)",
"status": "SUCCESS"
},
{
Expand Down
15 changes: 13 additions & 2 deletions be-rust-axum/testdata/golden/sonar-scan.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,27 @@
"name": "{{.ProjectID}}-{{.ComponentID}}",
"isFavorite": false,
"visibility": "public",
"branch": "master",
"extensions": [],
"qualityProfiles": [
{
"name": "Community Rust",
"name": "Sonar way",
"language": "docker",
"deleted": false
},
{
"name": "Sonar way",
"language": "rust",
"deleted": false
},
{
"name": "Sonar way",
"language": "yaml",
"deleted": false
}
],
"qualityGate": {
"name": "Sonar way",
"name": "{{.SonarQualityGate}}",
"isDefault": true
},
"breadcrumbs": [
Expand Down
3 changes: 1 addition & 2 deletions be-rust-axum/testdata/steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ steps:
jenkinsStages: golden/jenkins-build-stages.json
sonarScan: golden/sonar-scan.json
runAttachments:
- SCRR-{{.ProjectID}}-{{.ComponentID}}.docx
- SCRR-{{.ProjectID}}-{{.ComponentID}}.md
- sonarqube-report-{{.ProjectID}}-{{.ComponentID}}.pdf
testResults: 1
openShiftResources:
imageStreams:
Expand Down
23 changes: 22 additions & 1 deletion be-scala-play/testdata/golden/sonar-scan.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,38 @@
"key": "{{.ProjectID}}-{{.ComponentID}}",
"name": "{{.ProjectID}}-{{.ComponentID}}",
"isFavorite": false,
"branch": "master",
"visibility": "public",
"extensions": [],
"qualityProfiles": [
{
"name": "Sonar way",
"language": "css",
"deleted": false
},
{
"name": "Sonar way",
"language": "docker",
"deleted": false
},
{
"name": "{{.SonarQualityProfile}}",
"language": "js",
"deleted": false
},
{
"name": "{{.SonarQualityProfile}}",
"language": "scala",
"deleted": false
},
{
"name": "Sonar way",
"language": "web",
"deleted": false
}
],
"qualityGate": {
"name": "Sonar way",
"name": "{{.SonarQualityGate}}",
"isDefault": true
},
"breadcrumbs": [
Expand Down
3 changes: 1 addition & 2 deletions be-scala-play/testdata/steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ steps:
jenkinsStages: golden/jenkins-build-stages.json
sonarScan: golden/sonar-scan.json
runAttachments:
- SCRR-{{.ProjectID}}-{{.ComponentID}}.docx
- SCRR-{{.ProjectID}}-{{.ComponentID}}.md
- sonarqube-report-{{.ProjectID}}-{{.ComponentID}}.pdf
testResults: 3
openShiftResources:
imageTags:
Expand Down
Loading