You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2023/03/01 12:20:46 UTC

[camel-kamelets] branch main updated: chore: Fix YAKS tests

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

acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-kamelets.git


The following commit(s) were added to refs/heads/main by this push:
     new 02933800 chore: Fix YAKS tests
02933800 is described below

commit 0293380079a1e70b6f33ea0fcbd61789d891fea4
Author: Christoph Deppisch <cd...@redhat.com>
AuthorDate: Tue Feb 28 10:45:07 2023 +0100

    chore: Fix YAKS tests
    
    - Update GitHub workflow to (re)enable YAKS tests
    - Use Camel 4.0.0-M1 in tests
    - Run tests locally via JBang
---
 .github/workflows/yaks-tests.yaml                  | 72 ++++++++--------------
 .gitignore                                         |  1 +
 test/aws-ddb-sink/aws-ddb-sink-binding.yaml        |  2 +-
 test/aws-ddb-sink/aws-ddb-sink-deleteItem.feature  | 27 ++++----
 test/aws-ddb-sink/aws-ddb-sink-putItem.feature     | 33 +++++-----
 test/aws-ddb-sink/aws-ddb-sink-updateItem.feature  | 29 ++++-----
 test/aws-ddb-sink/verifyItems.groovy               | 27 ++++----
 test/aws-ddb-sink/yaks-config.yaml                 |  2 +
 test/aws-s3/aws-s3-knative-binding.feature         | 27 ++++----
 test/aws-s3/aws-s3-source-property-conf.feature    | 20 +++---
 test/aws-s3/aws-s3-source-secret-conf.feature      | 22 +++----
 test/aws-s3/aws-s3-source-uri-conf.feature         | 20 +++---
 test/aws-s3/aws-s3-uri-binding.feature             | 23 +++----
 .../{ => aws-s3}/utils/knative-channel-to-log.yaml |  0
 test/{ => aws-s3}/utils/knative-to-log.yaml        |  0
 test/aws-s3/yaks-config.yaml                       |  6 +-
 test/earthquake-source/earthquake-source.feature   |  5 +-
 test/earthquake-source/yaks-config.yaml            |  2 +
 .../aws-ddb-sink-exp/aws-ddb-sink-binding.yaml     |  4 +-
 .../aws-ddb-sink-deleteItem.feature                | 33 +++++-----
 .../aws-ddb-sink-exp/aws-ddb-sink-putItem.feature  | 39 ++++++------
 .../aws-ddb-sink-updateItem.feature                | 35 +++++------
 .../aws-ddb-sink-exp/verifyItems.groovy            | 27 ++++----
 .../experimental/aws-ddb-sink-exp/yaks-config.yaml |  2 +
 .../aws-s3-exp/aws-s3-cloudevents.feature          | 31 ++++------
 .../experimental/aws-s3-exp/aws-s3-knative.feature | 30 ++++-----
 test/experimental/aws-s3-exp/yaks-config.yaml      |  4 +-
 .../extract-field-action-binding.yaml              |  2 +-
 .../extract-field-action.feature                   |  9 +--
 test/extract-field-action/yaks-config.yaml         |  2 +
 .../insert-field-action-binding.yaml               |  2 +-
 .../insert-field-action.feature                    |  9 +--
 test/insert-field-action/yaks-config.yaml          |  2 +
 test/kafka/kafka-sink-binding.yaml                 |  2 +-
 test/kafka/kafka-sink.feature                      | 19 +++---
 test/kafka/kafka-source-binding.yaml               |  4 +-
 test/kafka/kafka-source.feature                    | 27 ++++----
 test/kafka/yaks-config.yaml                        |  4 ++
 test/mail-sink/mail-sink.feature                   |  6 +-
 test/mail-sink/timer-to-mail.yaml                  |  1 +
 test/mail-sink/yaks-config.yaml                    |  2 +
 test/rest-openapi-sink/openapi.json                |  9 +--
 .../rest-openapi-sink-binding.yaml                 |  2 +-
 test/rest-openapi-sink/rest-openapi-sink.feature   | 13 ++--
 test/rest-openapi-sink/yaks-config.yaml            |  2 +
 test/salesforce-sink/yaks-config.yaml              |  2 +
 test/timer-source/timer-source.feature             | 11 ++--
 test/timer-source/yaks-config.yaml                 |  2 +
 48 files changed, 297 insertions(+), 358 deletions(-)

diff --git a/.github/workflows/yaks-tests.yaml b/.github/workflows/yaks-tests.yaml
index 10354e39..0c382784 100644
--- a/.github/workflows/yaks-tests.yaml
+++ b/.github/workflows/yaks-tests.yaml
@@ -41,20 +41,23 @@ concurrency:
   cancel-in-progress: true
 
 env:
-  CAMEL_K_VERSION: 1.12.0-nightly
-  YAKS_VERSION: 0.14.1
-  YAKS_IMAGE_NAME: "docker.io/citrusframework/yaks"
-  YAKS_RUN_OPTIONS: "--timeout=15m"
+  YAKS_VERSION: 0.14.2
+  YAKS_RUN_OPTIONS: "--timeout=15m --local -e YAKS_CAMELK_MAX_ATTEMPTS=10 -e YAKS_JBANG_CAMEL_VERSION=4.0.0-M1"
 
 jobs:
   test:
-    if: ${{ false }}  # disable until YAKS support Camel 4
-
     runs-on: ubuntu-latest
-
     steps:
     - name: Checkout code
-      uses: actions/checkout@v2
+      uses: actions/checkout@v3
+      with:
+        persist-credentials: false
+    - name: Set up JDK
+      uses: actions/setup-java@v3
+      with:
+        distribution: 'temurin'
+        java-version: 17
+        cache: 'maven'
     - name: Set JitPack coordinates for pull requests
       if: github.event_name == 'pull_request'
       env:
@@ -67,14 +70,6 @@ jobs:
         
         # Overwrite JitPack coordinates in the local Kamelets so the tests can use the utility classes in this PR
         find kamelets -maxdepth 1 -name '*.kamelet.yaml' -exec sed -i "s/github:apache.camel-kamelets:camel-kamelets-utils:${PROJECT_VERSION}/github:${HEAD_REPO/\//.}:camel-kamelets-utils:${HEAD_REF//\//'~'}-SNAPSHOT/g" {} +
-    - name: Get Camel K CLI
-      run: |
-        curl --fail -L --silent https://github.com/apache/camel-k/releases/download/${CAMEL_K_VERSION}/camel-k-client-${CAMEL_K_VERSION}-linux-64bit.tar.gz -o kamel.tar.gz
-        mkdir -p _kamel
-        tar -zxf kamel.tar.gz --directory ./_kamel
-        sudo mv ./_kamel/kamel /usr/local/bin/
-        rm kamel.tar.gz
-        rm -r _kamel
     - name: Get YAKS CLI
       run: |
         curl --fail -L --silent https://github.com/citrusframework/yaks/releases/download/v${YAKS_VERSION}/yaks-${YAKS_VERSION}-linux-64bit.tar.gz -o yaks.tar.gz
@@ -83,51 +78,38 @@ jobs:
         sudo mv ./_yaks/yaks /usr/local/bin/
         rm yaks.tar.gz
         rm -r _yaks
-    - name: Kubernetes KinD Cluster
-      uses: container-tools/kind-action@v1
-      with:
-        version: v0.14.0
-        node_image: kindest/node:v1.23.6@sha256:b1fa224cc6c7ff32455e0b1fd9cbfd3d3bc87ecaa8fcb06961ed1afb3db0f9ae
     - name: Info
       run: |
-        kubectl version
-        kubectl cluster-info
-        kubectl describe nodes
-    - name: Install Knative
-      uses: ./.github/actions/install-knative
-    - name: Install Camel K
+        yaks version
+    - name: YAKS Tests
       run: |
-        # Configure install options
-        export KAMEL_INSTALL_BUILD_PUBLISH_STRATEGY=Spectrum
-        export KAMEL_INSTALL_REGISTRY=$KIND_REGISTRY
-        export KAMEL_INSTALL_REGISTRY_INSECURE=true
+        echo "Install JBang via SDKMAN"
 
-        kamel install -w --operator-env-vars KAMEL_INSTALL_DEFAULT_KAMELETS=false --maven-repository=https://repository.apache.org/content/repositories/snapshots@id=apache-snapshots@snapshots
+        curl -s "https://get.sdkman.io" | bash 
+        source "/home/runner/.sdkman/bin/sdkman-init.sh"
+        sdk install jbang
+        
+        jbang trust add https://github.com/citrusframework/yaks/
+        jbang trust add https://github.com/apache/camel/
 
-        # Install the local kamelets
-        find kamelets -maxdepth 1 -name '*.kamelet.yaml' -exec kubectl apply -f {} \;
-    - name: Install YAKS
-      run: |
-        yaks install --operator-image $YAKS_IMAGE_NAME:$YAKS_VERSION
-    - name: YAKS Tests
-      run: |
-        echo "Running tests for Kamelets"
+        jbang yaks@citrusframework/yaks --version
+        jbang camel@apache/camel --version
+        
+        echo "Running YAKS tests for Kamelets"
+        
         yaks run test/aws-ddb-sink $YAKS_RUN_OPTIONS
         yaks run test/aws-s3 $YAKS_RUN_OPTIONS
         
         yaks run test/extract-field-action $YAKS_RUN_OPTIONS
         yaks run test/insert-field-action $YAKS_RUN_OPTIONS
+        
         yaks run test/mail-sink $YAKS_RUN_OPTIONS
         yaks run test/timer-source $YAKS_RUN_OPTIONS
         yaks run test/earthquake-source $YAKS_RUN_OPTIONS
         yaks run test/rest-openapi-sink $YAKS_RUN_OPTIONS
         yaks run test/kafka $YAKS_RUN_OPTIONS
-    - name: YAKS Report
-      if: failure()
-      run: |
-        yaks report
     - uses: actions/upload-artifact@v2
       if: failure()
       with:
         name: dumps
-        path: _output/*-dump.log
+        path: test/**/.yaks-jbang/*-output.txt
diff --git a/.gitignore b/.gitignore
index ae7d387f..6d9d189e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,5 +31,6 @@ node_modules/
 terraform.*
 .terraform*
 .camel-jbang*
+.yaks-jbang*
 
 _output
diff --git a/test/aws-ddb-sink/aws-ddb-sink-binding.yaml b/test/aws-ddb-sink/aws-ddb-sink-binding.yaml
index e7ba6d10..87f805a8 100644
--- a/test/aws-ddb-sink/aws-ddb-sink-binding.yaml
+++ b/test/aws-ddb-sink/aws-ddb-sink-binding.yaml
@@ -44,7 +44,7 @@ spec:
       table: ${aws.ddb.tableName}
       operation: ${aws.ddb.operation}
       overrideEndpoint: true
-      uriEndpointOverride: ${YAKS_TESTCONTAINERS_LOCALSTACK_DYNAMODB_URL}
+      uriEndpointOverride: ${YAKS_TESTCONTAINERS_LOCALSTACK_DYNAMODB_LOCAL_URL}
       accessKey: ${YAKS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}
       secretKey: ${YAKS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}
       region: ${YAKS_TESTCONTAINERS_LOCALSTACK_REGION}
diff --git a/test/aws-ddb-sink/aws-ddb-sink-deleteItem.feature b/test/aws-ddb-sink/aws-ddb-sink-deleteItem.feature
index a6d2ee85..9ad6bde5 100644
--- a/test/aws-ddb-sink/aws-ddb-sink-deleteItem.feature
+++ b/test/aws-ddb-sink/aws-ddb-sink-deleteItem.feature
@@ -18,10 +18,6 @@
 Feature: AWS DDB Sink - DeleteItem
 
   Background:
-    Given Kamelet aws-ddb-sink is available
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 2000  |
     Given variables
       | timer.source.period  | 10000 |
       | aws.ddb.operation    | DeleteItem |
@@ -31,12 +27,11 @@ Feature: AWS DDB Sink - DeleteItem
       | aws.ddb.item.title   | Back to the future |
       | aws.ddb.json.data    | {"id": ${aws.ddb.item.id}} |
 
-  Scenario: Start LocalStack container
+  Scenario: Create infrastructure
+    # Start LocalStack container
     Given Enable service DYNAMODB
     Given start LocalStack container
-    And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}'
-
-  Scenario: Create AWS-DDB client
+    # Create AWS-DDB client
     Given New global Camel context
     Given load to Camel registry amazonDDBClient.groovy
 
@@ -44,23 +39,23 @@ Feature: AWS DDB Sink - DeleteItem
     Given run script putItem.groovy
     Given variables
       | maxRetryAttempts  | 20 |
-      | aws.ddb.items     | [{year=AttributeValue(N=${aws.ddb.item.year}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title})}] |
+      | aws.ddb.items     | [[year:AttributeValue(N=${aws.ddb.item.year}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title})]] |
     Then apply actions verifyItems.groovy
 
-  Scenario: Create AWS-DDB Kamelet sink binding
+  Scenario: Verify AWS-DDB Kamelet sink binding
+    # Create binding
     When load KameletBinding aws-ddb-sink-binding.yaml
     And KameletBinding aws-ddb-sink-binding is available
     And Camel K integration aws-ddb-sink-binding is running
-    And Camel K integration aws-ddb-sink-binding should print Routes startup
-
-  Scenario: Verify Kamelet sink
+    And Camel K integration aws-ddb-sink-binding should print Started aws-ddb-sink-binding
+    # Verify Kamelet sink
     Given variables
       | maxRetryAttempts  | 20 |
       | aws.ddb.items     | [] |
     Then apply actions verifyItems.groovy
 
-  Scenario: Remove Camel K resources
+  Scenario: Remove resources
+    # Remove Camel K resources
     Given delete KameletBinding aws-ddb-sink-binding
-
-  Scenario: Stop container
+    # Stop LocalStack container
     Given stop LocalStack container
diff --git a/test/aws-ddb-sink/aws-ddb-sink-putItem.feature b/test/aws-ddb-sink/aws-ddb-sink-putItem.feature
index 15847511..0ea36122 100644
--- a/test/aws-ddb-sink/aws-ddb-sink-putItem.feature
+++ b/test/aws-ddb-sink/aws-ddb-sink-putItem.feature
@@ -18,10 +18,6 @@
 Feature: AWS DDB Sink - PutItem
 
   Background:
-    Given Kamelet aws-ddb-sink is available
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 2000  |
     Given variables
       | timer.source.period  | 10000 |
       | aws.ddb.operation    | PutItem |
@@ -31,29 +27,34 @@ Feature: AWS DDB Sink - PutItem
       | aws.ddb.item.title   | Star Wars IV |
       | aws.ddb.json.data    | { "id":${aws.ddb.item.id}, "year":${aws.ddb.item.year}, "title":"${aws.ddb.item.title}" } |
 
-  Scenario: Start LocalStack container
+  Scenario: Create infrastructure
+    # Start LocalStack container
     Given Enable service DYNAMODB
     Given start LocalStack container
-    And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}'
-
-  Scenario: Create AWS-DDB client
+    # Create AWS-DDB client
     Given New global Camel context
     Given load to Camel registry amazonDDBClient.groovy
 
-  Scenario: Create AWS-DDB Kamelet sink binding
+  Scenario: Verify empty items on AWS-DDB
+    Given variables
+      | maxRetryAttempts  | 20 |
+      | aws.ddb.items | [] |
+    Then apply actions verifyItems.groovy
+
+  Scenario: Verify AWS-DDB Kamelet sink binding
+    # Create binding
     When load KameletBinding aws-ddb-sink-binding.yaml
     And KameletBinding aws-ddb-sink-binding is available
     And Camel K integration aws-ddb-sink-binding is running
-    And Camel K integration aws-ddb-sink-binding should print Routes startup
-
-  Scenario: Verify Kamelet sink
+    And Camel K integration aws-ddb-sink-binding should print Started aws-ddb-sink-binding
+    # Verify Kamelet sink
     Given variables
       | maxRetryAttempts  | 20 |
-      | aws.ddb.items     | [{year=AttributeValue(N=${aws.ddb.item.year}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title})}] |
+      | aws.ddb.items     | [[year:AttributeValue(N=${aws.ddb.item.year}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title})]] |
     Then apply actions verifyItems.groovy
 
-  Scenario: Remove Camel K resources
+  Scenario: Remove resources
+    # Remove Camel K binding
     Given delete KameletBinding aws-ddb-sink-binding
-
-  Scenario: Stop container
+    # Stop LocalStack container
     Given stop LocalStack container
diff --git a/test/aws-ddb-sink/aws-ddb-sink-updateItem.feature b/test/aws-ddb-sink/aws-ddb-sink-updateItem.feature
index feba0e23..d8cc5840 100644
--- a/test/aws-ddb-sink/aws-ddb-sink-updateItem.feature
+++ b/test/aws-ddb-sink/aws-ddb-sink-updateItem.feature
@@ -18,10 +18,6 @@
 Feature: AWS DDB Sink - UpdateItem
 
   Background:
-    Given Kamelet aws-ddb-sink is available
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 2000  |
     Given variables
       | timer.source.period    | 10000 |
       | aws.ddb.operation      | UpdateItem |
@@ -33,12 +29,11 @@ Feature: AWS DDB Sink - UpdateItem
       | aws.ddb.item.directors | ["Merian C. Cooper", "Ernest B. Schoedsack"] |
       | aws.ddb.json.data      | { "key": {"id": ${aws.ddb.item.id}}, "item": {"title": "${aws.ddb.item.title.new}", "year": ${aws.ddb.item.year}, "directors": ${aws.ddb.item.directors}} } |
 
-  Scenario: Start LocalStack container
+  Scenario: Create infrastructure
+    # Start LocalStack container
     Given Enable service DYNAMODB
     Given start LocalStack container
-    And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}'
-
-  Scenario: Create AWS-DDB client
+    # Create AWS-DDB client
     Given New global Camel context
     Given load to Camel registry amazonDDBClient.groovy
 
@@ -46,24 +41,24 @@ Feature: AWS DDB Sink - UpdateItem
     Given run script putItem.groovy
     Given variables
       | maxRetryAttempts  | 20 |
-      | aws.ddb.items | [{year=AttributeValue(N=${aws.ddb.item.year}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title})}] |
+      | aws.ddb.items | [[year:AttributeValue(N=${aws.ddb.item.year}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title})]] |
     Then apply actions verifyItems.groovy
 
-  Scenario: Create AWS-DDB Kamelet sink binding
+  Scenario: Verify AWS-DDB Kamelet sink binding
+    # Create binding
     When load KameletBinding aws-ddb-sink-binding.yaml
     And KameletBinding aws-ddb-sink-binding is available
     And Camel K integration aws-ddb-sink-binding is running
-    And Camel K integration aws-ddb-sink-binding should print Routes startup
-
-  Scenario: Verify Kamelet sink
+    And Camel K integration aws-ddb-sink-binding should print Started aws-ddb-sink-binding
+    # Verify Kamelet sink
     Given variables
       | maxRetryAttempts  | 200 |
       | aws.ddb.item.directors | [Ernest B. Schoedsack, Merian C. Cooper] |
-      | aws.ddb.items | [{year=AttributeValue(N=${aws.ddb.item.year}), directors=AttributeValue(SS=${aws.ddb.item.directors}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title.new})}] |
+      | aws.ddb.items | [[year:AttributeValue(N=${aws.ddb.item.year}), directors:AttributeValue(SS=${aws.ddb.item.directors}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title.new})]] |
     Then apply actions verifyItems.groovy
 
-  Scenario: Remove Camel K resources
+  Scenario: Remove resources
+    # Remove Camel K resources
     Given delete KameletBinding aws-ddb-sink-binding
-
-  Scenario: Stop container
+    # Stop LocalStack container
     Given stop LocalStack container
diff --git a/test/aws-ddb-sink/verifyItems.groovy b/test/aws-ddb-sink/verifyItems.groovy
index b65ca27f..b89dad5a 100644
--- a/test/aws-ddb-sink/verifyItems.groovy
+++ b/test/aws-ddb-sink/verifyItems.groovy
@@ -15,19 +15,16 @@
  * limitations under the License.
  */
 
-$actions {
-    $(repeatOnError()
-        .until('i > ${maxRetryAttempts}')
-        .actions(new com.consol.citrus.TestAction() {
-            @Override
-            void execute(com.consol.citrus.context.TestContext context) {
-                try {
-                    assert context.getVariable('aws.ddb.items')
-                            .equals(amazonDDBClient.scan(b -> b.tableName(context.getVariable('aws.ddb.tableName')))?.items()?.toString())
-                } catch (AssertionError e) {
-                    throw new com.consol.citrus.exceptions.CitrusRuntimeException("AWS DDB item verification failed", e)
-                }
+$(repeatOnError()
+    .until('i > ${maxRetryAttempts}')
+    .actions(new com.consol.citrus.TestAction() {
+        @Override
+        void execute(com.consol.citrus.context.TestContext context) {
+            try {
+                assert context.getVariable('aws.ddb.items').equals(amazonDDBClient.scan(b -> b.tableName(context.getVariable('aws.ddb.tableName')))?.items()?.toListString())
+            } catch (AssertionError e) {
+                throw new com.consol.citrus.exceptions.CitrusRuntimeException("AWS DDB item verification failed", e)
             }
-        })
-    )
-}
+        }
+    })
+)
diff --git a/test/aws-ddb-sink/yaks-config.yaml b/test/aws-ddb-sink/yaks-config.yaml
index dbe4c7f2..c3fe0232 100644
--- a/test/aws-ddb-sink/yaks-config.yaml
+++ b/test/aws-ddb-sink/yaks-config.yaml
@@ -28,6 +28,8 @@ config:
         value: false
       - name: YAKS_KAMELETS_AUTO_REMOVE_RESOURCES
         value: false
+      - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT
+        value: true
       - name: YAKS_TESTCONTAINERS_AUTO_REMOVE_RESOURCES
         value: false
       - name: CITRUS_TYPE_CONVERTER
diff --git a/test/aws-s3/aws-s3-knative-binding.feature b/test/aws-s3/aws-s3-knative-binding.feature
index cf67b4c9..0f26ea4f 100644
--- a/test/aws-s3/aws-s3-knative-binding.feature
+++ b/test/aws-s3/aws-s3-knative-binding.feature
@@ -2,48 +2,45 @@
 Feature: AWS S3 Kamelet - binding to Knative channel
 
   Background:
-    Given Kamelet aws-s3-source is available
     Given variables
       | aws.s3.bucketNameOrArn | mybucket |
       | aws.s3.message | Hello from S3 Kamelet |
       | aws.s3.key | hello.txt |
 
-  Scenario: Start LocalStack container
+  Scenario: Create infrastructure
+    # Start LocalStack container
     Given Enable service S3
     Given start LocalStack container
-    And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}'
-
-  Scenario: Create AWS-S3 client
+    # Create AWS-S3 client
     Given New global Camel context
     Given load to Camel registry amazonS3Client.groovy
-
-  Scenario: Create Knative broker and channel
+    # Create Knative broker and channel
     Given create Knative broker default
     And Knative broker default is running
     And create Knative channel messages
 
-  Scenario: Create AWS-S3 Kamelet to InMemoryChannel binding
-    Given variable loginfo is "Installed features"
+  Scenario: Verify AWS-S3 Kamelet to InMemoryChannel binding
+    # Create binding
     Given load KameletBinding aws-s3-to-knative-channel.yaml
     Given load KameletBinding knative-channel-to-log.yaml
     Then KameletBinding aws-s3-to-knative-channel should be available
     And KameletBinding knative-channel-to-log should be available
     And Camel K integration aws-s3-to-knative-channel is running
     And Camel K integration knative-channel-to-log is running
-    And Camel K integration aws-s3-to-knative-channel should print ${loginfo}
-    And Camel K integration knative-channel-to-log should print ${loginfo}
+    And Camel K integration aws-s3-to-knative-channel should print Started aws-s3-to-knative-channel
+    And Camel K integration knative-channel-to-log should print Installed features
     Then sleep 10000 ms
-
-  Scenario: Verify Kamelet source
+    # Verify Kamelet source
     Given Camel exchange message header CamelAwsS3Key="${aws.s3.key}"
     Given send Camel exchange to("aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#amazonS3Client") with body: ${aws.s3.message}
     Then Camel K integration knative-channel-to-log should print ${aws.s3.message}
 
   Scenario: Remove resources
+    # Remove Camel K resources
     Given delete KameletBinding aws-s3-to-knative-channel
     Given delete KameletBinding knative-channel-to-log
+    # Remove Knative resources
     Given delete Knative broker default
     Given delete Knative channel messages
-
-  Scenario: Stop container
+    # Stop LocalStack container
     Given stop LocalStack container
diff --git a/test/aws-s3/aws-s3-source-property-conf.feature b/test/aws-s3/aws-s3-source-property-conf.feature
index 93a2d353..89363ca3 100644
--- a/test/aws-s3/aws-s3-source-property-conf.feature
+++ b/test/aws-s3/aws-s3-source-property-conf.feature
@@ -1,22 +1,21 @@
 Feature: AWS S3 Kamelet - property based config
 
   Background:
-    Given Kamelet aws-s3-source is available
     Given variables
       | aws.s3.bucketNameOrArn | mybucket |
       | aws.s3.message | Hello from S3 Kamelet |
       | aws.s3.key | hello.txt |
 
-  Scenario: Start LocalStack container
+  Scenario: Create infrastructure
+    # Start LocalStack container
     Given Enable service S3
     Given start LocalStack container
-    And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}'
-
-  Scenario: Create AWS-S3 client
+    # Create AWS-S3 client
     Given New global Camel context
     Given load to Camel registry amazonS3Client.groovy
 
-  Scenario: Create AWS-S3 Kamelet to log binding
+  Scenario: Verify AWS-S3 Kamelet to log binding
+    # Create binding
     Given Camel K integration property file aws-s3-credentials.properties
     Given create Camel K integration aws-s3-to-log-prop-based.groovy
     """
@@ -24,14 +23,13 @@ Feature: AWS S3 Kamelet - property based config
       .to("log:info")
     """
     Then Camel K integration aws-s3-to-log-prop-based should be running
-
-  Scenario: Verify Kamelet source
+    # Verify Kamelet source
     Given Camel exchange message header CamelAwsS3Key="${aws.s3.key}"
     Given send Camel exchange to("aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#amazonS3Client") with body: ${aws.s3.message}
     Then Camel K integration aws-s3-to-log-prop-based should print ${aws.s3.message}
 
-  Scenario: Remove Camel K resources
+  Scenario: Remove resources
+    # Remove Camel K resources
     Given delete Camel K integration aws-s3-to-log-prop-based
-
-  Scenario: Stop container
+    # Stop LocalStack container
     Given stop LocalStack container
diff --git a/test/aws-s3/aws-s3-source-secret-conf.feature b/test/aws-s3/aws-s3-source-secret-conf.feature
index 78ee9be5..c18dff10 100644
--- a/test/aws-s3/aws-s3-source-secret-conf.feature
+++ b/test/aws-s3/aws-s3-source-secret-conf.feature
@@ -2,38 +2,38 @@
 Feature: AWS S3 Kamelet - secret based config
 
   Background:
-    Given Kamelet aws-s3-source is available
     Given variables
       | aws.s3.bucketNameOrArn | mybucket |
       | aws.s3.message | Hello from S3 Kamelet |
       | aws.s3.key | hello.txt |
 
-  Scenario: Start LocalStack container
+  Scenario: Create infrastructure
+    # Start LocalStack container
     Given Enable service S3
     Given start LocalStack container
-    And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}'
-
-  Scenario: Create AWS-S3 client
+    # Create AWS-S3 client
     Given New global Camel context
     Given load to Camel registry amazonS3Client.groovy
-
-  Scenario: Create AWS-S3 Kamelet to log binding
+    # Create Kubernetes secret
     Given create Kubernetes secret aws-s3-source-credentials
       | aws-s3-credentials.properties | citrus:encodeBase64(citrus:readFile(aws-s3-credentials.properties)) |
+
+  Scenario: Verify AWS-S3 Kamelet to log binding
+    # Create binding
     Given create labels on Kubernetes secret aws-s3-source-credentials
       | camel.apache.org/kamelet               | aws-s3-source |
       | camel.apache.org/kamelet.configuration | aws-s3-credentials |
     Given load Camel K integration aws-s3-to-log-secret-based.groovy
     Then Camel K integration aws-s3-to-log-secret-based should be running
-
-  Scenario: Verify Kamelet source
+    # Verify Kamelet source
     Given Camel exchange message header CamelAwsS3Key="${aws.s3.key}"
     Given send Camel exchange to("aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#amazonS3Client") with body: ${aws.s3.message}
     Then Camel K integration aws-s3-to-log-secret-based should print ${aws.s3.message}
 
   Scenario: Remove resources
+    # Remove Camel K resources
     Given delete Camel K integration aws-s3-to-log-secret-based
+    # Remove Kubernetes secret
     Given delete Kubernetes secret aws-s3-source-credentials
-
-  Scenario: Stop container
+    # Stop LocalStack container
     Given stop LocalStack container
diff --git a/test/aws-s3/aws-s3-source-uri-conf.feature b/test/aws-s3/aws-s3-source-uri-conf.feature
index ca65ba7d..281d0e98 100644
--- a/test/aws-s3/aws-s3-source-uri-conf.feature
+++ b/test/aws-s3/aws-s3-source-uri-conf.feature
@@ -1,32 +1,30 @@
 Feature: AWS S3 Kamelet - URI based config
 
   Background:
-    Given Kamelet aws-s3-source is available
     Given variables
       | aws.s3.bucketNameOrArn | mybucket |
       | aws.s3.message | Hello from S3 Kamelet |
       | aws.s3.key | hello.txt |
 
-  Scenario: Start LocalStack container
+  Scenario: Create infrastructure
+    # Start LocalStack container
     Given Enable service S3
     Given start LocalStack container
-    And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}'
-
-  Scenario: Create S3 client
+    # Create AWS-S3 client
     Given New global Camel context
     Given load to Camel registry amazonS3Client.groovy
 
-  Scenario: Create AWS-S3 Kamelet to log binding
+  Scenario: Verify AWS-S3 Kamelet to log binding
+    # Create binding
     Given load Camel K integration aws-s3-to-log-uri-based.groovy
     Then Camel K integration aws-s3-to-log-uri-based should be running
-
-  Scenario: Verify Kamelet source
+    # Verify Kamelet source
     Given Camel exchange message header CamelAwsS3Key="${aws.s3.key}"
     Given send Camel exchange to("aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#amazonS3Client") with body: ${aws.s3.message}
     Then Camel K integration aws-s3-to-log-uri-based should print ${aws.s3.message}
 
-  Scenario: Remove Camel K resources
+  Scenario: Remove resources
+    # Remove Camel K resources
     Given delete Camel K integration aws-s3-to-log-uri-based
-
-  Scenario: Stop container
+    # Stop LocalStack container
     Given stop LocalStack container
diff --git a/test/aws-s3/aws-s3-uri-binding.feature b/test/aws-s3/aws-s3-uri-binding.feature
index ace19177..d8214543 100644
--- a/test/aws-s3/aws-s3-uri-binding.feature
+++ b/test/aws-s3/aws-s3-uri-binding.feature
@@ -1,35 +1,32 @@
 Feature: AWS S3 Kamelet - binding to URI
 
   Background:
-    Given Kamelet aws-s3-source is available
     Given variables
       | aws.s3.bucketNameOrArn | mybucket |
       | aws.s3.message | Hello from S3 Kamelet |
       | aws.s3.key | hello.txt |
 
-  Scenario: Start LocalStack container
+  Scenario: Create infrastructure
+    # Start LocalStack container
     Given Enable service S3
     Given start LocalStack container
-    And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}'
-
-  Scenario: Create AWS-S3 client
+    # Create AWS-S3 client
     Given New global Camel context
     Given load to Camel registry amazonS3Client.groovy
 
-  Scenario: Create AWS-S3 Kamelet to log binding
-    Given variable loginfo is "Installed features"
+  Scenario: Verify AWS-S3 Kamelet to log binding
+    # Create binding
     When load KameletBinding aws-s3-uri-binding.yaml
     And KameletBinding aws-s3-uri-binding is available
     And Camel K integration aws-s3-uri-binding is running
-    Then Camel K integration aws-s3-uri-binding should print ${loginfo}
-
-  Scenario: Verify Kamelet source
+    Then Camel K integration aws-s3-uri-binding should print Started aws-s3-uri-binding
+    # Verify Kamelet source
     Given Camel exchange message header CamelAwsS3Key="${aws.s3.key}"
     Given send Camel exchange to("aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#amazonS3Client") with body: ${aws.s3.message}
     Then Camel K integration aws-s3-uri-binding should print ${aws.s3.message}
 
-  Scenario: Remove Camel K resources
+  Scenario: Remove resources
+    # Remove Camel K resources
     Given delete KameletBinding aws-s3-uri-binding
-
-  Scenario: Stop container
+    # Stop LocalStack container
     Given stop LocalStack container
diff --git a/test/utils/knative-channel-to-log.yaml b/test/aws-s3/utils/knative-channel-to-log.yaml
similarity index 100%
rename from test/utils/knative-channel-to-log.yaml
rename to test/aws-s3/utils/knative-channel-to-log.yaml
diff --git a/test/utils/knative-to-log.yaml b/test/aws-s3/utils/knative-to-log.yaml
similarity index 100%
rename from test/utils/knative-to-log.yaml
rename to test/aws-s3/utils/knative-to-log.yaml
diff --git a/test/aws-s3/yaks-config.yaml b/test/aws-s3/yaks-config.yaml
index c45e02d3..90be09c8 100644
--- a/test/aws-s3/yaks-config.yaml
+++ b/test/aws-s3/yaks-config.yaml
@@ -32,6 +32,8 @@ config:
         value: false
       - name: YAKS_KNATIVE_AUTO_REMOVE_RESOURCES
         value: false
+      - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT
+        value: true
       - name: YAKS_TESTCONTAINERS_AUTO_REMOVE_RESOURCES
         value: false
       - name: CITRUS_TYPE_CONVERTER
@@ -43,10 +45,10 @@ config:
       - aws-s3-to-log-secret-based.groovy
       - aws-s3-uri-binding.yaml
       - aws-s3-to-knative-channel.yaml
-      - ../utils/knative-channel-to-log.yaml
+      - utils/knative-channel-to-log.yaml
     cucumber:
       tags:
-        - "not @ignored"
+        - "not @ignored and not @knative"
     settings:
       loggers:
         - name: INTEGRATION_STATUS
diff --git a/test/earthquake-source/earthquake-source.feature b/test/earthquake-source/earthquake-source.feature
index 0231c04f..92ea6807 100644
--- a/test/earthquake-source/earthquake-source.feature
+++ b/test/earthquake-source/earthquake-source.feature
@@ -25,10 +25,7 @@ Feature: Kamelet earthquake-source
     Given create Kubernetes service test-service with target port 8080
 
   Scenario: Create Kamelet binding
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 2000 |
-    When bind Kamelet earthquake-source to uri http://test-service.${YAKS_NAMESPACE}/test
+    When bind Kamelet earthquake-source to uri yaks:resolveURL('test-service')/test
     And create KameletBinding earthquake-source-uri
     Then KameletBinding earthquake-source-uri should be available
     Then Camel K integration earthquake-source-uri should be running
diff --git a/test/earthquake-source/yaks-config.yaml b/test/earthquake-source/yaks-config.yaml
index 6a93aeec..9977b154 100644
--- a/test/earthquake-source/yaks-config.yaml
+++ b/test/earthquake-source/yaks-config.yaml
@@ -24,6 +24,8 @@ config:
         value: false
       - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES
         value: false
+      - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT
+        value: true
     settings:
       loggers:
         - name: INTEGRATION_STATUS
diff --git a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-binding.yaml b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-binding.yaml
index d1e5fb44..e8588422 100644
--- a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-binding.yaml
+++ b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-binding.yaml
@@ -18,7 +18,7 @@
 apiVersion: camel.apache.org/v1alpha1
 kind: KameletBinding
 metadata:
-  name: aws-ddb-experimental-sink-binding
+  name: aws-ddb-sink-binding
 spec:
   source:
     ref:
@@ -44,7 +44,7 @@ spec:
       table: ${aws.ddb.tableName}
       operation: ${aws.ddb.operation}
       overrideEndpoint: true
-      uriEndpointOverride: ${YAKS_TESTCONTAINERS_LOCALSTACK_DYNAMODB_URL}
+      uriEndpointOverride: ${YAKS_TESTCONTAINERS_LOCALSTACK_DYNAMODB_LOCAL_URL}
       accessKey: ${YAKS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}
       secretKey: ${YAKS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}
       region: ${YAKS_TESTCONTAINERS_LOCALSTACK_REGION}
diff --git a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-deleteItem.feature b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-deleteItem.feature
index 6edb0ae2..fc9f641a 100644
--- a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-deleteItem.feature
+++ b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-deleteItem.feature
@@ -18,10 +18,6 @@
 Feature: AWS DDB Sink - DeleteItem
 
   Background:
-    Given Kamelet aws-ddb-experimental-sink is available
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 2000  |
     Given variables
       | timer.source.period  | 10000 |
       | aws.ddb.operation    | DeleteItem |
@@ -31,12 +27,11 @@ Feature: AWS DDB Sink - DeleteItem
       | aws.ddb.item.title   | Back to the future |
       | aws.ddb.json.data    | {"id": ${aws.ddb.item.id}} |
 
-  Scenario: Start LocalStack container
+  Scenario: Create infrastructure
+    # Start LocalStack container
     Given Enable service DYNAMODB
     Given start LocalStack container
-    And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}'
-
-  Scenario: Create AWS-DDB client
+    # Create AWS-DDB client
     Given New global Camel context
     Given load to Camel registry amazonDDBClient.groovy
 
@@ -44,23 +39,23 @@ Feature: AWS DDB Sink - DeleteItem
     Given run script putItem.groovy
     Given variables
       | maxRetryAttempts  | 20 |
-      | aws.ddb.items     | [{year=AttributeValue(N=${aws.ddb.item.year}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title})}] |
+      | aws.ddb.items     | [[year:AttributeValue(N=${aws.ddb.item.year}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title})]] |
     Then apply actions verifyItems.groovy
 
-  Scenario: Create AWS-DDB Kamelet sink binding
+  Scenario: Verify AWS-DDB Kamelet sink binding
+    # Create binding
     When load KameletBinding aws-ddb-sink-binding.yaml
-    And KameletBinding aws-ddb-experimental-sink-binding is available
-    And Camel K integration aws-ddb-experimental-sink-binding is running
-    And Camel K integration aws-ddb-experimental-sink-binding should print Routes startup
-
-  Scenario: Verify Kamelet sink
+    And KameletBinding aws-ddb-sink-binding is available
+    And Camel K integration aws-ddb-sink-binding is running
+    And Camel K integration aws-ddb-sink-binding should print Started aws-ddb-sink-binding
+    # Verify Kamelet sink
     Given variables
       | maxRetryAttempts  | 20 |
       | aws.ddb.items     | [] |
     Then apply actions verifyItems.groovy
 
-  Scenario: Remove Camel K resources
-    Given delete KameletBinding aws-ddb-experimental-sink-binding
-
-  Scenario: Stop container
+  Scenario: Remove resources
+    # Remove Camel K resources
+    Given delete KameletBinding aws-ddb-sink-binding
+    # Stop LocalStack container
     Given stop LocalStack container
diff --git a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-putItem.feature b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-putItem.feature
index 0d8d759a..49460659 100644
--- a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-putItem.feature
+++ b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-putItem.feature
@@ -18,10 +18,6 @@
 Feature: AWS DDB Sink - PutItem
 
   Background:
-    Given Kamelet aws-ddb-experimental-sink is available
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 2000  |
     Given variables
       | timer.source.period  | 10000 |
       | aws.ddb.operation    | PutItem |
@@ -31,29 +27,34 @@ Feature: AWS DDB Sink - PutItem
       | aws.ddb.item.title   | Star Wars IV |
       | aws.ddb.json.data    | { "id":${aws.ddb.item.id}, "year":${aws.ddb.item.year}, "title":"${aws.ddb.item.title}" } |
 
-  Scenario: Start LocalStack container
+  Scenario: Create infrastructure
+    # Start LocalStack container
     Given Enable service DYNAMODB
     Given start LocalStack container
-    And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}'
-
-  Scenario: Create AWS-DDB client
+    # Create AWS-DDB client
     Given New global Camel context
     Given load to Camel registry amazonDDBClient.groovy
 
-  Scenario: Create AWS-DDB Kamelet sink binding
-    When load KameletBinding aws-ddb-sink-binding.yaml
-    And KameletBinding aws-ddb-experimental-sink-binding is available
-    And Camel K integration aws-ddb-experimental-sink-binding is running
-    And Camel K integration aws-ddb-experimental-sink-binding should print Routes startup
-
-  Scenario: Verify Kamelet sink
+  Scenario: Verify empty items on AWS-DDB
     Given variables
       | maxRetryAttempts  | 20 |
-      | aws.ddb.items     | [{year=AttributeValue(N=${aws.ddb.item.year}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title})}] |
+      | aws.ddb.items | [] |
     Then apply actions verifyItems.groovy
 
-  Scenario: Remove Camel K resources
-    Given delete KameletBinding aws-ddb-experimental-sink-binding
+  Scenario: Verify AWS-DDB Kamelet sink binding
+    # Create binding
+    When load KameletBinding aws-ddb-sink-binding.yaml
+    And KameletBinding aws-ddb-sink-binding is available
+    And Camel K integration aws-ddb-sink-binding is running
+    And Camel K integration aws-ddb-sink-binding should print Started aws-ddb-sink-binding
+    # Verify Kamelet sink
+    Given variables
+      | maxRetryAttempts  | 20 |
+      | aws.ddb.items     | [[year:AttributeValue(N=${aws.ddb.item.year}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title})]] |
+    Then apply actions verifyItems.groovy
 
-  Scenario: Stop container
+  Scenario: Remove resources
+    # Remove Camel K binding
+    Given delete KameletBinding aws-ddb-sink-binding
+    # Stop LocalStack container
     Given stop LocalStack container
diff --git a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-updateItem.feature b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-updateItem.feature
index 14745c26..be5a4c7e 100644
--- a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-updateItem.feature
+++ b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-updateItem.feature
@@ -18,10 +18,6 @@
 Feature: AWS DDB Sink - UpdateItem
 
   Background:
-    Given Kamelet aws-ddb-experimental-sink is available
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 2000  |
     Given variables
       | timer.source.period    | 10000 |
       | aws.ddb.operation      | UpdateItem |
@@ -33,12 +29,11 @@ Feature: AWS DDB Sink - UpdateItem
       | aws.ddb.item.directors | ["Merian C. Cooper", "Ernest B. Schoedsack"] |
       | aws.ddb.json.data      | { "key": {"id": ${aws.ddb.item.id}}, "item": {"title": "${aws.ddb.item.title.new}", "year": ${aws.ddb.item.year}, "directors": ${aws.ddb.item.directors}} } |
 
-  Scenario: Start LocalStack container
+  Scenario: Create infrastructure
+    # Start LocalStack container
     Given Enable service DYNAMODB
     Given start LocalStack container
-    And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}'
-
-  Scenario: Create AWS-DDB client
+    # Create AWS-DDB client
     Given New global Camel context
     Given load to Camel registry amazonDDBClient.groovy
 
@@ -46,24 +41,24 @@ Feature: AWS DDB Sink - UpdateItem
     Given run script putItem.groovy
     Given variables
       | maxRetryAttempts  | 20 |
-      | aws.ddb.items | [{year=AttributeValue(N=${aws.ddb.item.year}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title})}] |
+      | aws.ddb.items | [[year:AttributeValue(N=${aws.ddb.item.year}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title})]] |
     Then apply actions verifyItems.groovy
 
-  Scenario: Create AWS-DDB Kamelet sink binding
+  Scenario: Verify AWS-DDB Kamelet sink binding
+    # Create binding
     When load KameletBinding aws-ddb-sink-binding.yaml
-    And KameletBinding aws-ddb-experimental-sink-binding is available
-    And Camel K integration aws-ddb-experimental-sink-binding is running
-    And Camel K integration aws-ddb-experimental-sink-binding should print Routes startup
-
-  Scenario: Verify Kamelet sink
+    And KameletBinding aws-ddb-sink-binding is available
+    And Camel K integration aws-ddb-sink-binding is running
+    And Camel K integration aws-ddb-sink-binding should print Started aws-ddb-sink-binding
+    # Verify Kamelet sink
     Given variables
       | maxRetryAttempts  | 200 |
       | aws.ddb.item.directors | [Ernest B. Schoedsack, Merian C. Cooper] |
-      | aws.ddb.items | [{year=AttributeValue(N=${aws.ddb.item.year}), directors=AttributeValue(SS=${aws.ddb.item.directors}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title.new})}] |
+      | aws.ddb.items | [[year:AttributeValue(N=${aws.ddb.item.year}), directors:AttributeValue(SS=${aws.ddb.item.directors}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title.new})]] |
     Then apply actions verifyItems.groovy
 
-  Scenario: Remove Camel K resources
-    Given delete KameletBinding aws-ddb-experimental-sink-binding
-
-  Scenario: Stop container
+  Scenario: Remove resources
+    # Remove Camel K resources
+    Given delete KameletBinding aws-ddb-sink-binding
+    # Stop LocalStack container
     Given stop LocalStack container
diff --git a/test/experimental/aws-ddb-sink-exp/verifyItems.groovy b/test/experimental/aws-ddb-sink-exp/verifyItems.groovy
index b65ca27f..b89dad5a 100644
--- a/test/experimental/aws-ddb-sink-exp/verifyItems.groovy
+++ b/test/experimental/aws-ddb-sink-exp/verifyItems.groovy
@@ -15,19 +15,16 @@
  * limitations under the License.
  */
 
-$actions {
-    $(repeatOnError()
-        .until('i > ${maxRetryAttempts}')
-        .actions(new com.consol.citrus.TestAction() {
-            @Override
-            void execute(com.consol.citrus.context.TestContext context) {
-                try {
-                    assert context.getVariable('aws.ddb.items')
-                            .equals(amazonDDBClient.scan(b -> b.tableName(context.getVariable('aws.ddb.tableName')))?.items()?.toString())
-                } catch (AssertionError e) {
-                    throw new com.consol.citrus.exceptions.CitrusRuntimeException("AWS DDB item verification failed", e)
-                }
+$(repeatOnError()
+    .until('i > ${maxRetryAttempts}')
+    .actions(new com.consol.citrus.TestAction() {
+        @Override
+        void execute(com.consol.citrus.context.TestContext context) {
+            try {
+                assert context.getVariable('aws.ddb.items').equals(amazonDDBClient.scan(b -> b.tableName(context.getVariable('aws.ddb.tableName')))?.items()?.toListString())
+            } catch (AssertionError e) {
+                throw new com.consol.citrus.exceptions.CitrusRuntimeException("AWS DDB item verification failed", e)
             }
-        })
-    )
-}
+        }
+    })
+)
diff --git a/test/experimental/aws-ddb-sink-exp/yaks-config.yaml b/test/experimental/aws-ddb-sink-exp/yaks-config.yaml
index dbe4c7f2..c3fe0232 100644
--- a/test/experimental/aws-ddb-sink-exp/yaks-config.yaml
+++ b/test/experimental/aws-ddb-sink-exp/yaks-config.yaml
@@ -28,6 +28,8 @@ config:
         value: false
       - name: YAKS_KAMELETS_AUTO_REMOVE_RESOURCES
         value: false
+      - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT
+        value: true
       - name: YAKS_TESTCONTAINERS_AUTO_REMOVE_RESOURCES
         value: false
       - name: CITRUS_TYPE_CONVERTER
diff --git a/test/experimental/aws-s3-exp/aws-s3-cloudevents.feature b/test/experimental/aws-s3-exp/aws-s3-cloudevents.feature
index 2ce2d0d6..6885c58d 100644
--- a/test/experimental/aws-s3-exp/aws-s3-cloudevents.feature
+++ b/test/experimental/aws-s3-exp/aws-s3-cloudevents.feature
@@ -3,38 +3,31 @@
 Feature: AWS S3 Kamelet - cloud events data type
 
   Background:
-    Given Kamelet aws-s3-experimental-source is available
     Given Knative event consumer timeout is 20000 ms
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 4000  |
     Given variables
       | aws.s3.output | cloudevents |
       | aws.s3.bucketNameOrArn | mybucket |
       | aws.s3.message | Hello from S3 Kamelet |
       | aws.s3.key | hello.txt |
 
-  Scenario: Start LocalStack container
+  Scenario: Create infrastructure
+    # Start LocalStack container
     Given Enable service S3
     Given start LocalStack container
-    And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}'
-
-  Scenario: Create AWS-S3 client
+    # Create AWS-S3 client
     Given New global Camel context
     Given load to Camel registry amazonS3Client.groovy
-
-  Scenario: Create Knative broker
+    # Create Knative broker
     Given create Knative broker default
     And Knative broker default is running
 
-  Scenario: Create AWS-S3 Kamelet to Knative binding
-    Given variable loginfo is "Installed features"
+  Scenario: Verify AWS-S3 Kamelet to Knative binding
+    # Create binding
     When load KameletBinding aws-s3-to-knative.yaml
     And KameletBinding aws-s3-to-knative-binding is available
     And Camel K integration aws-s3-to-knative-binding is running
-    Then Camel K integration aws-s3-to-knative-binding should print ${loginfo}
-
-  Scenario: Verify Kamelet source
+    Then Camel K integration aws-s3-to-knative-binding should print Started aws-s3-to-knative-binding
+    # Verify Kamelet source
     Given create Knative event consumer service event-consumer-service
     Given create Knative trigger event-service-trigger on service event-consumer-service with filter on attributes
       | type   | org.apache.camel.event.aws.s3.getObject |
@@ -47,9 +40,11 @@ Feature: AWS S3 Kamelet - cloud events data type
       | subject         | ${aws.s3.key} |
       | id              | @ignore@ |
 
-  Scenario: Remove Camel K resources
+  Scenario: Remove resources
+    # Remove Camel K resources
     Given delete KameletBinding aws-s3-to-knative-binding
     Given delete Kubernetes service event-consumer-service
-
-  Scenario: Stop container
+    # Remove Knative resources
+    Given delete Knative broker default
+    # Stop LocalStack container
     Given stop LocalStack container
diff --git a/test/experimental/aws-s3-exp/aws-s3-knative.feature b/test/experimental/aws-s3-exp/aws-s3-knative.feature
index bb1bebd3..10ad5264 100644
--- a/test/experimental/aws-s3-exp/aws-s3-knative.feature
+++ b/test/experimental/aws-s3-exp/aws-s3-knative.feature
@@ -3,38 +3,31 @@
 Feature: AWS S3 Kamelet - Knative binding
 
   Background:
-    Given Kamelet aws-s3-experimental-source is available
     Given Knative event consumer timeout is 20000 ms
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 4000  |
     Given variables
       | aws.s3.output | string |
       | aws.s3.bucketNameOrArn | mybucket |
       | aws.s3.message | Hello from S3 Kamelet |
       | aws.s3.key | hello.txt |
 
-  Scenario: Start LocalStack container
+  Scenario: Create infrastructure
+    # Start LocalStack container
     Given Enable service S3
     Given start LocalStack container
-    And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}'
-
-  Scenario: Create AWS-S3 client
+    # Create AWS-S3 client
     Given New global Camel context
     Given load to Camel registry amazonS3Client.groovy
-
-  Scenario: Create Knative broker
+    # Create Knative broker
     Given create Knative broker default
     And Knative broker default is running
 
-  Scenario: Create AWS-S3 Kamelet to Knative binding
-    Given variable loginfo is "Installed features"
+  Scenario: Verify AWS-S3 Kamelet to Knative binding
+    # Create binding
     When load KameletBinding aws-s3-to-knative.yaml
     And KameletBinding aws-s3-to-knative-binding is available
     And Camel K integration aws-s3-to-knative-binding is running
-    Then Camel K integration aws-s3-to-knative-binding should print ${loginfo}
-
-  Scenario: Verify Kamelet source
+    Then Camel K integration aws-s3-to-knative-binding should print Started aws-s3-to-knative-binding
+    # Verify Kamelet source
     Given create Knative event consumer service event-consumer-service
     Given create Knative trigger event-service-trigger on service event-consumer-service with filter on attributes
       | type   | org.apache.camel.event |
@@ -46,10 +39,11 @@ Feature: AWS S3 Kamelet - Knative binding
       | source          | @ignore@ |
       | id              | @ignore@ |
 
-  Scenario: Remove Camel K resources
+  Scenario: Remove resources
+    # Remove Camel K resources
     Given delete KameletBinding aws-s3-to-knative-binding
     Given delete Kubernetes service event-consumer-service
+    # Remove Knative resources
     Given delete Knative broker default
-
-  Scenario: Stop container
+    # Stop LocalStack container
     Given stop LocalStack container
diff --git a/test/experimental/aws-s3-exp/yaks-config.yaml b/test/experimental/aws-s3-exp/yaks-config.yaml
index e8ed3bd5..ce37838a 100644
--- a/test/experimental/aws-s3-exp/yaks-config.yaml
+++ b/test/experimental/aws-s3-exp/yaks-config.yaml
@@ -32,6 +32,8 @@ config:
         value: false
       - name: YAKS_KNATIVE_AUTO_REMOVE_RESOURCES
         value: false
+      - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT
+        value: true
       - name: YAKS_TESTCONTAINERS_AUTO_REMOVE_RESOURCES
         value: false
       - name: CITRUS_TYPE_CONVERTER
@@ -41,7 +43,7 @@ config:
       - aws-s3-to-knative.yaml
     cucumber:
       tags:
-        - "not @ignored"
+        - "not @ignored and not @knative"
     settings:
       loggers:
         - name: INTEGRATION_STATUS
diff --git a/test/extract-field-action/extract-field-action-binding.yaml b/test/extract-field-action/extract-field-action-binding.yaml
index 96f32470..c3955539 100644
--- a/test/extract-field-action/extract-field-action-binding.yaml
+++ b/test/extract-field-action/extract-field-action-binding.yaml
@@ -38,4 +38,4 @@ spec:
       properties:
         field: ${field}
   sink:
-    uri: http://test-extract-service.${YAKS_NAMESPACE}/result
+    uri: yaks:resolveURL('test-service')/result
diff --git a/test/extract-field-action/extract-field-action.feature b/test/extract-field-action/extract-field-action.feature
index d3e15237..5ab22e57 100644
--- a/test/extract-field-action/extract-field-action.feature
+++ b/test/extract-field-action/extract-field-action.feature
@@ -19,16 +19,13 @@ Feature: Extract field Kamelet action
 
   Background:
     Given HTTP server timeout is 15000 ms
-    Given HTTP server "test-extract-service"
+    Given HTTP server "test-service"
     Given variable field = "subject"
 
   Scenario: Create Http server
-    Given create Kubernetes service test-extract-service with target port 8080
+    Given create Kubernetes service test-service with target port 8080
 
   Scenario: Create Kamelet binding
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 2000  |
     Given variable input is
     """
     { "id": "citrus:randomUUID()", "${field}": "Camel K rocks!" }
@@ -44,4 +41,4 @@ Feature: Extract field Kamelet action
 
   Scenario: Remove resources
     Given delete KameletBinding extract-field-action-binding
-    And delete Kubernetes service test-extract-service
+    And delete Kubernetes service test-service
diff --git a/test/extract-field-action/yaks-config.yaml b/test/extract-field-action/yaks-config.yaml
index 26f57fae..ed24e26e 100644
--- a/test/extract-field-action/yaks-config.yaml
+++ b/test/extract-field-action/yaks-config.yaml
@@ -24,6 +24,8 @@ config:
         value: false
       - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES
         value: false
+      - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT
+        value: true
     settings:
       loggers:
         - name: INTEGRATION_STATUS
diff --git a/test/insert-field-action/insert-field-action-binding.yaml b/test/insert-field-action/insert-field-action-binding.yaml
index 86267340..6e2f4490 100644
--- a/test/insert-field-action/insert-field-action-binding.yaml
+++ b/test/insert-field-action/insert-field-action-binding.yaml
@@ -39,4 +39,4 @@ spec:
         field: ${field}
         value: ${value}
   sink:
-    uri: http://test-insert-service.${YAKS_NAMESPACE}/result
+    uri: yaks:resolveURL('test-service')/result
diff --git a/test/insert-field-action/insert-field-action.feature b/test/insert-field-action/insert-field-action.feature
index b882fcdc..21037cc5 100644
--- a/test/insert-field-action/insert-field-action.feature
+++ b/test/insert-field-action/insert-field-action.feature
@@ -19,18 +19,15 @@ Feature: Insert field Kamelet action
 
   Background:
     Given HTTP server timeout is 15000 ms
-    Given HTTP server "test-insert-service"
+    Given HTTP server "test-service"
     Given variables
       | field | subject |
       | value | Camel K rocks! |
 
   Scenario: Create Http server
-    Given create Kubernetes service test-insert-service with target port 8080
+    Given create Kubernetes service test-service with target port 8080
 
   Scenario: Create Kamelet binding
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 2000  |
     Given variable input is
     """
     { "id": "citrus:randomUUID()" }
@@ -50,4 +47,4 @@ Feature: Insert field Kamelet action
 
   Scenario: Remove resources
     Given delete KameletBinding insert-field-action-binding
-    And delete Kubernetes service test-insert-service
+    And delete Kubernetes service test-service
diff --git a/test/insert-field-action/yaks-config.yaml b/test/insert-field-action/yaks-config.yaml
index af5f0a98..fd4059a5 100644
--- a/test/insert-field-action/yaks-config.yaml
+++ b/test/insert-field-action/yaks-config.yaml
@@ -30,6 +30,8 @@ config:
           level: INFO
         - name: INTEGRATION_LOGS
           level: INFO
+        - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT
+          value: true
     resources:
       - insert-field-action-binding.yaml
   dump:
diff --git a/test/kafka/kafka-sink-binding.yaml b/test/kafka/kafka-sink-binding.yaml
index cf04a82b..46666dfb 100644
--- a/test/kafka/kafka-sink-binding.yaml
+++ b/test/kafka/kafka-sink-binding.yaml
@@ -35,7 +35,7 @@ spec:
       apiVersion: camel.apache.org/v1alpha1
       name: kafka-sink
     properties:
-      bootstrapServers: ${bootstrap.server.host}.${YAKS_NAMESPACE}:${bootstrap.server.port}
+      bootstrapServers: ${YAKS_TESTCONTAINERS_REDPANDA_LOCAL_BOOTSTRAP_SERVERS}
       user: ${user}
       password: ${password}
       topic: ${topic}
diff --git a/test/kafka/kafka-sink.feature b/test/kafka/kafka-sink.feature
index 22b0df12..9c22921f 100644
--- a/test/kafka/kafka-sink.feature
+++ b/test/kafka/kafka-sink.feature
@@ -21,25 +21,24 @@ Feature: Kafka Kamelet sink
     Given variable user is ""
     Given variable password is ""
     Given variables
-      | bootstrap.server.host     | my-cluster-kafka-bootstrap |
-      | bootstrap.server.port     | 9092 |
-      | securityProtocol          | PLAINTEXT |
-      | topic                     | my-topic |
-      | message                   | Camel K rocks! |
+      | securityProtocol | PLAINTEXT |
+      | topic            | my-topic |
+      | message          | Camel K rocks! |
     Given Kafka topic: ${topic}
     Given Kafka topic partition: 0
 
+  Scenario: Create infrastructure
+    Given start Redpanda container
+
   Scenario: Create Kamelet binding
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 2000  |
     When load KameletBinding kafka-sink-binding.yaml
     Then Camel K integration kafka-sink-binding should be running
 
-  Scenario: Receive message on Kafka topic and verify sink output
+  Scenario: Verify Kafka sink output
     Given Kafka connection
-      | url         | ${bootstrap.server.host}.${YAKS_NAMESPACE}:${bootstrap.server.port} |
+      | url | ${YAKS_TESTCONTAINERS_REDPANDA_LOCAL_BOOTSTRAP_SERVERS} |
     Then receive Kafka message with body: ${message}
 
   Scenario: Remove resources
     Given delete KameletBinding kafka-sink-binding
+    And stop Redpanda container
diff --git a/test/kafka/kafka-source-binding.yaml b/test/kafka/kafka-source-binding.yaml
index 4b31ecba..2e5e3fb4 100644
--- a/test/kafka/kafka-source-binding.yaml
+++ b/test/kafka/kafka-source-binding.yaml
@@ -26,12 +26,12 @@ spec:
       apiVersion: camel.apache.org/v1alpha1
       name: kafka-source
     properties:
-      bootstrapServers: ${bootstrap.server.host}.${YAKS_NAMESPACE}:${bootstrap.server.port}
+      bootstrapServers: ${YAKS_TESTCONTAINERS_REDPANDA_LOCAL_BOOTSTRAP_SERVERS}
       user: ${user}
       password: ${password}
       topic: ${topic}
       securityProtocol: ${securityProtocol}
       deserializeHeaders: ${deserializeHeaders}
   sink:
-    uri: http://kafka-to-http-service.${YAKS_NAMESPACE}/result
+    uri: yaks:resolveURL('test-service')/result
 
diff --git a/test/kafka/kafka-source.feature b/test/kafka/kafka-source.feature
index 06fdd9f8..c95f1dbe 100644
--- a/test/kafka/kafka-source.feature
+++ b/test/kafka/kafka-source.feature
@@ -21,25 +21,21 @@ Feature: Kafka Kamelet source
     Given variable user is ""
     Given variable password is ""
     Given variables
-      | bootstrap.server.host     | my-cluster-kafka-bootstrap |
-      | bootstrap.server.port     | 9092 |
-      | securityProtocol          | PLAINTEXT |
-      | deserializeHeaders        | true |
-      | topic                     | my-topic |
-      | source                    | Kafka Kamelet source |
-      | message                   | Camel K rocks! |
+      | securityProtocol   | PLAINTEXT |
+      | deserializeHeaders | true |
+      | topic              | my-topic |
+      | source             | Kafka Kamelet source |
+      | message            | Camel K rocks! |
     Given Kafka topic: ${topic}
     Given Kafka topic partition: 0
     Given HTTP server timeout is 15000 ms
-    Given HTTP server "kafka-to-http-service"
+    Given HTTP server "test-service"
 
-  Scenario: Create Http server
-    Given create Kubernetes service kafka-to-http-service with target port 8080
+  Scenario: Create infrastructure
+    Given start Redpanda container
+    Given create Kubernetes service test-service with target port 8080
 
   Scenario: Create Kamelet binding
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 2000  |
     When load KameletBinding kafka-source-binding.yaml
     Then Camel K integration kafka-source-binding should be running
     And Camel K integration kafka-source-binding should print Subscribing ${topic}-Thread 0 to topic ${topic}
@@ -48,7 +44,7 @@ Feature: Kafka Kamelet source
   Scenario: Send message to Kafka topic and verify sink output
     Given variable key is "citrus:randomNumber(4)"
     Given Kafka connection
-      | url         | ${bootstrap.server.host}.${YAKS_NAMESPACE}:${bootstrap.server.port} |
+      | url | ${YAKS_TESTCONTAINERS_REDPANDA_LOCAL_BOOTSTRAP_SERVERS} |
     Given Kafka message key: ${key}
     When send Kafka message with body and headers: ${message}
       | event-source | ${source} |
@@ -63,4 +59,5 @@ Feature: Kafka Kamelet source
 
   Scenario: Remove resources
     Given delete KameletBinding kafka-source-binding
-    And delete Kubernetes service kafka-to-http-service
+    And delete Kubernetes service test-service
+    And stop Redpanda container
diff --git a/test/kafka/yaks-config.yaml b/test/kafka/yaks-config.yaml
index e9d376cc..adfa773a 100644
--- a/test/kafka/yaks-config.yaml
+++ b/test/kafka/yaks-config.yaml
@@ -24,6 +24,10 @@ config:
         value: false
       - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES
         value: false
+      - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT
+        value: true
+      - name: YAKS_TESTCONTAINERS_AUTO_REMOVE_RESOURCES
+        value: false
       - name: CITRUS_TYPE_CONVERTER
         value: camel
     settings:
diff --git a/test/mail-sink/mail-sink.feature b/test/mail-sink/mail-sink.feature
index fb4d942f..a3f1514b 100644
--- a/test/mail-sink/mail-sink.feature
+++ b/test/mail-sink/mail-sink.feature
@@ -19,7 +19,8 @@ Feature: Mail Sink
 
   Background:
     Given variables
-      | host      | mail-server |
+      | host      | yaks:env('MAIL_SERVICE_HOST','localhost') |
+      | port      | yaks:env('MAIL_SERVICE_PORT','22222') |
       | username  | test |
       | password  | secret |
       | from      | user@demo.yaks |
@@ -35,9 +36,6 @@ Feature: Mail Sink
     Given load endpoint mail-server.groovy
 
   Scenario: Create Camel K resources
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 2000  |
     Given load KameletBinding timer-to-mail.yaml
     And Camel K integration timer-to-mail should be running
     And Camel K integration timer-to-mail should print Routes startup
diff --git a/test/mail-sink/timer-to-mail.yaml b/test/mail-sink/timer-to-mail.yaml
index 561c72d0..c223777a 100644
--- a/test/mail-sink/timer-to-mail.yaml
+++ b/test/mail-sink/timer-to-mail.yaml
@@ -34,6 +34,7 @@ spec:
       name: mail-sink
     properties:
       connectionHost: "${host}"
+      connectionPort: "${port}"
       username: "${username}"
       password: "${password}"
       from: "${from}"
diff --git a/test/mail-sink/yaks-config.yaml b/test/mail-sink/yaks-config.yaml
index 302b6886..db3ee83b 100644
--- a/test/mail-sink/yaks-config.yaml
+++ b/test/mail-sink/yaks-config.yaml
@@ -24,6 +24,8 @@ config:
         value: false
       - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES
         value: false
+      - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT
+        value: true
     settings:
       loggers:
         - name: INTEGRATION_STATUS
diff --git a/test/rest-openapi-sink/openapi.json b/test/rest-openapi-sink/openapi.json
index cae57a76..821a30a2 100644
--- a/test/rest-openapi-sink/openapi.json
+++ b/test/rest-openapi-sink/openapi.json
@@ -9,13 +9,8 @@
             "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
         }
     },
-    "servers": [
-        {
-            "url": "http://test-service/petstore"
-        }
-    ],
     "paths": {
-        "/pet": {
+        "/petstore/pet": {
             "put": {
                 "requestBody": {
                     "description": "Pet object that needs to be added to the store",
@@ -92,7 +87,7 @@
                 "description": ""
             }
         },
-        "/pet/{petId}": {
+        "/petstore/pet/{petId}": {
             "get": {
                 "tags": [
                     "pet"
diff --git a/test/rest-openapi-sink/rest-openapi-sink-binding.yaml b/test/rest-openapi-sink/rest-openapi-sink-binding.yaml
index c0c778a4..9122cb5a 100644
--- a/test/rest-openapi-sink/rest-openapi-sink-binding.yaml
+++ b/test/rest-openapi-sink/rest-openapi-sink-binding.yaml
@@ -42,5 +42,5 @@ spec:
       apiVersion: camel.apache.org/v1alpha1
       name: rest-openapi-sink
     properties:
-      specification: http://test-service.${YAKS_NAMESPACE}/petstore/openapi.json
+      specification: yaks:resolveURL('test-service')/petstore/openapi.json
       operation: ${operation}
diff --git a/test/rest-openapi-sink/rest-openapi-sink.feature b/test/rest-openapi-sink/rest-openapi-sink.feature
index c5de6406..dc1ee64d 100644
--- a/test/rest-openapi-sink/rest-openapi-sink.feature
+++ b/test/rest-openapi-sink/rest-openapi-sink.feature
@@ -27,17 +27,14 @@ Feature: REST OpenAPI Kamelet sink
     Given create Kubernetes service test-service
 
   Scenario: Create Kamelet binding for addPet
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 2000  |
     Given variable operation is "addPet"
-    When load KameletBinding rest-openapi-sink-binding.yaml
-    Then Camel K integration rest-openapi-sink-binding should be running
+    Then load KameletBinding rest-openapi-sink-binding.yaml
 
   Scenario: Provide OpenAPI specification to Camel K integration
+    Given load variable openapi from openapi.json
     When receive GET /petstore/openapi.json
     Then HTTP request header Content-Type is "application/json"
-    Then HTTP response body: citrus:readFile(classpath:openapi.json)
+    Then HTTP response body: ${openapi}
     Then send HTTP 200 OK
 
   Scenario: Verify proper addPet request message sent
@@ -52,12 +49,12 @@ Feature: REST OpenAPI Kamelet sink
   Scenario: Create Kamelet binding for deletePet
     Given variable operation is "deletePet"
     When load KameletBinding rest-openapi-sink-binding.yaml
-    Then Camel K integration rest-openapi-sink-binding should be running
 
   Scenario: Provide OpenAPI specification to Camel K integration
+    Given load variable openapi from openapi.json
     When receive GET /petstore/openapi.json
     Then HTTP request header Content-Type is "application/json"
-    Then HTTP response body: citrus:readFile(classpath:openapi.json)
+    Then HTTP response body: ${openapi}
     Then send HTTP 200 OK
 
   Scenario: Verify proper deletePet request message sent
diff --git a/test/rest-openapi-sink/yaks-config.yaml b/test/rest-openapi-sink/yaks-config.yaml
index 5bf4c068..9a99d565 100644
--- a/test/rest-openapi-sink/yaks-config.yaml
+++ b/test/rest-openapi-sink/yaks-config.yaml
@@ -24,6 +24,8 @@ config:
         value: false
       - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES
         value: false
+      - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT
+        value: true
     settings:
       loggers:
         - name: INTEGRATION_STATUS
diff --git a/test/salesforce-sink/yaks-config.yaml b/test/salesforce-sink/yaks-config.yaml
index a831edc2..246d85b1 100644
--- a/test/salesforce-sink/yaks-config.yaml
+++ b/test/salesforce-sink/yaks-config.yaml
@@ -24,6 +24,8 @@ config:
         value: false
       - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES
         value: false
+      - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT
+        value: true
     settings:
       loggers:
         - name: INTEGRATION_STATUS
diff --git a/test/timer-source/timer-source.feature b/test/timer-source/timer-source.feature
index 6fa1e670..50053518 100644
--- a/test/timer-source/timer-source.feature
+++ b/test/timer-source/timer-source.feature
@@ -19,18 +19,15 @@ Feature: Timer Source Kamelet
 
   Background:
     Given HTTP server timeout is 15000 ms
-    Given HTTP server "probe-service"
+    Given HTTP server "test-service"
 
   Scenario: Create Http server
-    Given create Kubernetes service probe-service with target port 8080
+    Given create Kubernetes service test-service with target port 8080
 
   Scenario: Create Kamelet binding
-    Given Camel K resource polling configuration
-      | maxAttempts          | 200   |
-      | delayBetweenAttempts | 2000 |
     And KameletBinding source properties
       | message  | Hello World |
-    And bind Kamelet timer-source to uri http://probe-service.${YAKS_NAMESPACE}/events
+    And bind Kamelet timer-source to uri yaks:resolveURL('test-service')/events
     When create KameletBinding timer-source-binding
     Then KameletBinding timer-source-binding should be available
     Then Camel K integration timer-source-binding should be running
@@ -43,4 +40,4 @@ Feature: Timer Source Kamelet
 
   Scenario: Remove Camel K resources
     Given delete KameletBinding timer-source-binding
-    And delete Kubernetes service probe-service
+    And delete Kubernetes service test-service
diff --git a/test/timer-source/yaks-config.yaml b/test/timer-source/yaks-config.yaml
index 6a93aeec..9977b154 100644
--- a/test/timer-source/yaks-config.yaml
+++ b/test/timer-source/yaks-config.yaml
@@ -24,6 +24,8 @@ config:
         value: false
       - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES
         value: false
+      - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT
+        value: true
     settings:
       loggers:
         - name: INTEGRATION_STATUS