diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f720a92a007503b76775732355ff4db9bf1483a1..3c31df376ab8d6ee54c994fa6c64612e3b34b584 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -170,7 +170,7 @@ stages:
   - base-helm-release
   - install-apps
   - apps-helm-release
-  - apps-ready
+  - apps-deployment
   - certs
   - health-test
   - integration-test
@@ -555,13 +555,13 @@ wordpress-helm-release:
 #
 # Tests apps for readiness state
 
-.apps-ready:
-  stage: apps-ready
+.apps-deployment:
+  stage: apps-deployment
   script:
     - *debug_information
     - cd ansible/
     - export KUBECONFIG="${PWD}/../clusters/${HOSTNAME}/kube_config_cluster.yml"
-    - pytest -v -s -m 'apps_running' --resource="$RESOURCE" --connection=ansible --ansible-inventory=${CLUSTER_DIR}/inventory.yml --hosts='ansible://*' --reruns 120 --reruns-delay 10
+    - pytest -v -s -m 'deployment' --resource="$RESOURCE" --namespace="$NAMESPACE" --connection=ansible --ansible-inventory=${CLUSTER_DIR}/inventory.yml --hosts='ansible://*' --reruns 120 --reruns-delay 10
   extends:
     - .ssh_setup
   interruptible: true
@@ -569,111 +569,122 @@ wordpress-helm-release:
 cert-manager-ready:
   variables:
     RESOURCE: "cert-manager"
+    NAMESPACE: "cert-manager"
   needs:
     - job: cert-manager-helm-release
     - job: setup-openappstack  # Needs makes sure the artifacts from that job are downloaded
   extends:
-    - .apps-ready
+    - .apps-deployment
     - .cert_manager_rules
 
 eventrouter-ready:
   variables:
     RESOURCE: "eventrouter"
+    NAMESPACE: "oas"
   needs:
     - job: eventrouter-helm-release
     - job: setup-openappstack
   extends:
-    - .apps-ready
+    - .apps-deployment
     - .eventrouter_rules
 
 local-path-provisioner-ready:
   variables:
     RESOURCE: "local-path-provisioner"
+    NAMESPACE: "kube-system"
   needs:
     - job: local-path-provisioner-helm-release
     - job: setup-openappstack
   extends:
-    - .apps-ready
+    - .apps-deployment
     - .local_path_provisioner_rules
 
 loki-ready:
   variables:
     RESOURCE: "loki"
+    NAMESPACE: "oas"
   needs:
     - job: loki-helm-release
     - job: setup-openappstack
   extends:
-    - .apps-ready
+    - .apps-deployment
     - .loki_rules
 
 promtail-ready:
   variables:
     RESOURCE: "promtail"
+    NAMESPACE: "oas"
   needs:
     - job: promtail-helm-release
     - job: setup-openappstack
   extends:
-    - .apps-ready
+    - .apps-deployment
     - .promtail_rules
 
 nextcloud-ready:
   variables:
     RESOURCE: "nextcloud"
+    NAMESPACE: "oas-apps"
   needs:
     - job: nextcloud-helm-release
     - job: setup-openappstack
   extends:
-    - .apps-ready
+    - .apps-deployment
     - .nextcloud_rules
 
 kube-prometheus-stack-ready:
   variables:
     RESOURCE: "kube-prometheus-stack"
+    NAMESPACE: "oas"
   needs:
     - job: kube-prometheus-stack-helm-release
     - job: setup-openappstack
   extends:
-    - .apps-ready
+    - .apps-deployment
     - .kube_prometheus_stack_rules
 
 rocketchat-ready:
   variables:
     RESOURCE: "rocketchat"
+    NAMESPACE: "oas-apps"
   needs:
     - job: rocketchat-helm-release
     - job: setup-openappstack
   extends:
-    - .apps-ready
+    - .apps-deployment
     - .rocketchat_rules
 
 single-sign-on-ready:
   variables:
     RESOURCE: "single-sign-on"
+    NAMESPACE: "oas"
   needs:
     - job: single-sign-on-helm-release
     - job: setup-openappstack
   extends:
-    - .apps-ready
+    - .apps-deployment
     - .single_sign_on_rules
 
 wekan-ready:
   variables:
     RESOURCE: "wekan"
+    NAMESPACE: "oas-apps"
   needs:
     - job: wekan-helm-release
     - job: setup-openappstack
   extends:
-    - .apps-ready
+    - .apps-deployment
     - .wekan_rules
 
 wordpress-ready:
   variables:
     RESOURCE: "wordpress"
+    NAMESPACE: "oas-apps"
   needs:
     - job: wordpress-helm-release
     - job: setup-openappstack
   extends:
-    - .apps-ready
+    - .apps-deployment
     - .wordpress_rules
 
 # Stage: certs
diff --git a/test/pytest/test_resources.py b/test/pytest/test_resources.py
index f7467d415ac49f9b3e03d0b0cacb1289070b615d..0072298b92d6da5e1b950d3de3e2cc3ca7052ca2 100644
--- a/test/pytest/test_resources.py
+++ b/test/pytest/test_resources.py
@@ -17,10 +17,12 @@ import pytest
 
 # Helper functions
 
-def check_resource(api, api_group, api_version, plural, name, namespace='flux-system'):
+def check_resource(api, api_group, api_version, plural, name, namespace):
     """Returns status contition for resource in given namespace"""
-    print(f'Resource {name} in namespace {namespace} '
-          f'api version: {api_group}/{api_version}): ', end='')
+    if not namespace:
+        namespace='flux-system'
+    print(f'Resource "{name}" in namespace "{namespace}" '
+          f'(api version: {api_group}/{api_version}): ', end='')
     try:
         resource = api.get_namespaced_custom_object(
             group=api_group,
@@ -54,7 +56,6 @@ def check_custom_objects(api, api_group, api_version, plural, name, namespace='f
 
     failed = 0
     failed_resources = []
-    print('\n')
 
     if name != 'all':
         status = check_resource(
@@ -91,50 +92,7 @@ def check_custom_objects(api, api_group, api_version, plural, name, namespace='f
                 if status != 'True':
                     failed += 1
                     failed_resources.append(resource_name)
-    assert failed == 0, f"Error: {failed} kustomizations not ready ({failed_resources})!"
-
-def check_objects(api, api_group, api_version, plural, name, namespace='flux-system'):
-    """
-    Checks if all resoures of a given object are ready.
-    """
-
-    failed = 0
-    failed_resources = []
-    print('\n')
-
-    if name != 'all':
-        status = check_resource(
-            api=api,
-            api_group=api_group,
-            api_version=api_version,
-            plural=plural,
-            name=name,
-            namespace=namespace)
-        if status != 'True':
-            failed += 1
-            failed_resources.append(name)
-    else:
-        objects = api.list_namespaced_custom_object(
-            group=api_group,
-            version=api_version,
-            plural=plural,
-            namespace=namespace_name,
-            watch=False
-        )
-        for custom_object in custom_objects['items']:
-            resource_name = custom_object['metadata']['name']
-            status = check_resource(
-                api=api,
-                api_group=api_group,
-                api_version=api_version,
-                plural=plural,
-                name=resource_name,
-                namespace=namespace_name)
-            if status != 'True':
-                failed += 1
-                failed_resources.append(resource_name)
-    assert failed == 0, f"Error: {failed} kustomizations not ready ({failed_resources})!"
-
+    assert failed == 0, f"Error: {failed} resources not ready ({failed_resources})!"
 
 def check_all_pods_running(pods):
     """
@@ -146,7 +104,7 @@ def check_all_pods_running(pods):
     """
     ret = True
     for pod in pods:
-        print("- {}: {}".format(pod.metadata.name, pod.status.phase))
+        print(f"- {pod.metadata.name}: {pod.status.phase}")
         if pod.status.phase != "Running":
             ret = False
     return ret
@@ -205,15 +163,27 @@ def test_helmreleases(resource, namespace):
 @pytest.mark.deployments
 def test_deployments(resource, namespace):
     """
-    Checks if all the pods related to releases in EXPECTED_RELEASES are
-    ready
+    Check if deployments are ready
     """
 
-    api = client.CoreV1Api()
-    check_custom_objects(
-        api=api,
-        api_group='',
-        api_version='',
-        plural='deployments',
-        name=resource,
-        namespace=namespace)
+    failed = 0
+    failed_resources = []
+    api = client.AppsV1Api()
+
+    if resource != 'all':
+        status = api.read_namespaced_deployment_status(resource, namespace)
+        ready = status.status.conditions[0].status
+        print(f'Deployment "{resource}" in namespace "{namespace}": {ready}')
+    else:
+        deployments = api.list_deployment_for_all_namespaces()
+        for deployment in deployments.items:
+            resource = deployment.metadata.name
+            namespace = deployment.metadata.namespace
+            status = api.read_namespaced_deployment_status(resource, namespace)
+            ready = status.status.conditions[0].status
+            print(f'Deployment "{resource}" in namespace "{namespace}": {ready}')
+        if ready != 'True':
+            failed += 1
+            failed_resources.append(resource)
+
+    assert failed == 0, f"Error: {failed} resources not ready ({failed_resources})!"