diff --git a/test/e2e-tests-upgrade.sh b/test/e2e-tests-upgrade.sh
index 75b285642ab..68b6dbc8bb3 100755
--- a/test/e2e-tests-upgrade.sh
+++ b/test/e2e-tests-upgrade.sh
@@ -66,17 +66,31 @@ uninstall_pipeline_crd_version $PREVIOUS_PIPELINE_VERSION
 header "Install the previous release of Tekton pipeline $PREVIOUS_PIPELINE_VERSION"
 install_pipeline_crd_version $PREVIOUS_PIPELINE_VERSION
 
+header "Create resources at previous release version"
+kubectl create namespace upgrade
+trap "kubectl delete namespace upgrade" EXIT
+kubectl create -f ./test/upgrade/simpleResources.yaml || fail_test
+
 # Upgrade to the current release.
 header "Upgrade to the current release of Tekton pipeline"
 install_pipeline_crd
 
-# Run the integration tests.
-go_test_e2e -timeout=20m ./test || failed=1
+# Create runs from the Task and Pipeline resources created at the previous release version
+header "Start runs upon resources created at current release version"
+kubectl create -f ./test/upgrade/simpleRuns.yaml || fail_test
 
 # Run the post-integration tests. We do not need to install the resources again, since
 # they are installed before the upgrade. We verify if they still work, after going through
 # the upgrade.
-go_test_e2e -tags=examples -timeout=20m ./test/ || failed=1
+for test in taskrun pipelinerun; do
+  header "Running YAML e2e tests for ${test}s"
+  if ! run_tests ${test}; then
+    echo "ERROR: one or more YAML tests failed"
+    output_yaml_test_results ${test}
+    output_pods_logs ${test}
+    failed=1
+  fi
+done
 
 (( failed )) && fail_test
 
diff --git a/test/upgrade/simpleResources.yaml b/test/upgrade/simpleResources.yaml
new file mode 100644
index 00000000000..03fa3b4b49f
--- /dev/null
+++ b/test/upgrade/simpleResources.yaml
@@ -0,0 +1,67 @@
+apiVersion: tekton.dev/v1
+kind: Task
+metadata:
+  name: simple-task
+  namespace: upgrade
+spec:
+  params:
+    - name: rsp
+      type: string
+      default: "response"
+  steps:
+  - name: echo-param
+    image: alpine
+    script: |
+      echo "$(params.rsp)"
+  - name: check-workspace
+    image: alpine
+    script: |
+      if [ "$(workspaces.workspace.bound)" == "true" ]; then
+        echo "Workspace provided"
+      fi
+  sidecars:
+  - name: server
+    image: alpine:3.12.0
+    command: ['/bin/bash']
+    workingDir: /foo
+    script: echo server
+  workspaces:
+  - name: workspace
+    mountPath: /foo
+---
+apiVersion: tekton.dev/v1
+kind: Pipeline
+metadata:
+  name: simple-pipeline
+  namespace: upgrade
+spec:
+  description: foo
+  tasks:
+  - name: check-workspace
+    taskSpec:
+      params:
+        - name: task1-param
+          type: string
+          default: "1"
+      steps:
+        - image: alpine
+          name: check-workspace
+          script: |
+            if [ "$(workspaces.workspace.bound)" == "true" ]; then
+              echo "Workspace provided \n"
+              echo $(params.task1-param)
+            fi
+    timeout: 180s
+  workspaces:
+  - name: workspace
+  finally:
+  - name: echo-status
+    taskSpec:
+      params:
+        - name: echoStatus
+          type: string
+          default: "Succeeded"
+      steps:
+        - name: verify-status
+          image: ubuntu
+          script: echo $(params.echoStatus)
diff --git a/test/upgrade/simpleRuns.yaml b/test/upgrade/simpleRuns.yaml
new file mode 100644
index 00000000000..cf40a4e6bdd
--- /dev/null
+++ b/test/upgrade/simpleRuns.yaml
@@ -0,0 +1,23 @@
+apiVersion: tekton.dev/v1
+kind: PipelineRun
+metadata:
+  name: simple-pipelinerun
+  namespace: upgrade
+spec:
+  pipelineRef:
+    name: simple-pipeline
+  workspaces:
+    - name: workspace
+      emptyDir: {}
+---
+apiVersion: tekton.dev/v1
+kind: TaskRun
+metadata:
+  name: simple-taskrun
+  namespace: upgrade
+spec:
+  taskRef:
+    name: simple-task
+  workspaces:
+    - name: workspace
+      emptyDir: {}
\ No newline at end of file