diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bcf2a01df9368440fac801c8d77df47952b15e78..1cfd226d040fd041490d069430cb7d25f3e80647 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -62,9 +62,9 @@ include:
 # app rules
 #
 # Define the rules when/if app specific jobs are run.
-# Just add the variable APP to the job like this:
+# Just add the variable RESOURCE to the job like this:
 #   variables:
-#     APP: "eventrouter"
+#     RESOURCE: "eventrouter"
 # and import the templates with i.e.
 #   extends: .eventrouter_rules
 # .eventrouter_rules will ensure that the job is only executed:
@@ -91,8 +91,8 @@ include:
 .nextcloud_rules:
   rules:
     - changes:
-        - flux2/apps/$APP/*.yaml
-        - flux2/cluster/optional/$APP/*.yaml
+        - flux2/apps/$RESOURCE/*.yaml
+        - flux2/cluster/optional/$RESOURCE/*.yaml
         - install/install-app.sh
         - test/taiko/*
     - if: '$TRIGGER_JOBS =~ /enable-nextcloud/'
@@ -114,8 +114,8 @@ include:
 .rocketchat_rules:
   rules:
     - changes:
-        - flux2/apps/$APP/*.yaml
-        - flux2/cluster/optional/$APP/*.yaml
+        - flux2/apps/$RESOURCE/*.yaml
+        - flux2/cluster/optional/$RESOURCE/*.yaml
         - install/install-app.sh
         - test/taiko/*
     - if: '$TRIGGER_JOBS =~ /enable-rocketchat/'
@@ -125,7 +125,7 @@ include:
 .single_sign_on_rules:
   rules:
     - changes:
-        - flux2/core/base/$APP/*.yaml
+        - flux2/core/base/$RESOURCE/*.yaml
         - install/install-openappstack.sh
         - test/taiko/*
     - if: '$TRIGGER_JOBS =~ /enable-single-sign-on/'
@@ -135,8 +135,8 @@ include:
 .wekan_rules:
   rules:
     - changes:
-        - flux2/apps/$APP/*.yaml
-        - flux2/cluster/optional/$APP/*.yaml
+        - flux2/apps/$RESOURCE/*.yaml
+        - flux2/cluster/optional/$RESOURCE/*.yaml
         - flux2/infrastructure/sources/wekan.yaml
         - install/install-app.sh
         - test/taiko/*
@@ -147,8 +147,8 @@ include:
 .wordpress_rules:
   rules:
     - changes:
-        - flux2/apps/$APP/*.yaml
-        - flux2/cluster/optional/$APP/*.yaml
+        - flux2/apps/$RESOURCE/*.yaml
+        - flux2/cluster/optional/$RESOURCE/*.yaml
         - flux2/infrastructure/sources/wordpress.yaml
         - install/install-app.sh
         - test/taiko/*
@@ -349,7 +349,7 @@ setup-openappstack:
     - *debug_information
     - cd ansible/
     - export KUBECONFIG="${PWD}/../clusters/${HOSTNAME}/kube_config_cluster.yml"
-    - pytest -v -s -m 'kustomizations' --app="$APP" --connection=ansible --ansible-inventory=${CLUSTER_DIR}/inventory.yml --hosts='ansible://*' --reruns 120 --reruns-delay 20
+    - pytest -v -s -m 'kustomizations' --app="$RESOURCE" --connection=ansible --ansible-inventory=${CLUSTER_DIR}/inventory.yml --hosts='ansible://*' --reruns 120 --reruns-delay 20
   extends:
     - .ssh_setup
     - .general_rules
@@ -357,7 +357,7 @@ setup-openappstack:
 
 base-kustomizations-ready:
   variables:
-    APP: "base"
+    RESOURCE: "base"
   extends:
     - .kustomization-ready
 
@@ -366,7 +366,7 @@ base-kustomizations-ready:
     - *debug_information
     - cd ansible/
     - export KUBECONFIG="${PWD}/../clusters/${HOSTNAME}/kube_config_cluster.yml"
-    - pytest -v -s -m 'helmreleases' --app="$APP" --namespace="$NAMESPACE" --connection=ansible --ansible-inventory=${CLUSTER_DIR}/inventory.yml --hosts='ansible://*' --reruns 120 --reruns-delay 20
+    - pytest -v -s -m 'helmreleases' --app="$RESOURCE" --namespace="$NAMESPACE" --connection=ansible --ansible-inventory=${CLUSTER_DIR}/inventory.yml --hosts='ansible://*' --reruns 120 --reruns-delay 20
   extends:
     - .ssh_setup
   interruptible: true
@@ -388,7 +388,7 @@ base-kustomizations-ready:
 
 cert-manager-helm-release:
   variables:
-    APP: "cert-manager"
+    RESOURCE: "cert-manager"
     NAMESPACE: "cert-manager"
   extends:
     - .base-helm-release
@@ -396,7 +396,7 @@ cert-manager-helm-release:
 
 eventrouter-helm-release:
   variables:
-    APP: "eventrouter"
+    RESOURCE: "eventrouter"
     NAMESPACE: "oas"
   extends:
     - .base-helm-release
@@ -404,7 +404,7 @@ eventrouter-helm-release:
 
 local-path-provisioner-helm-release:
   variables:
-    APP: "local-path-provisioner"
+    RESOURCE: "local-path-provisioner"
     NAMESPACE: "kube-system"
   extends:
     - .base-helm-release
@@ -412,7 +412,7 @@ local-path-provisioner-helm-release:
 
 loki-helm-release:
   variables:
-    APP: "loki"
+    RESOURCE: "loki"
     NAMESPACE: "oas"
   extends:
     - .base-helm-release
@@ -420,7 +420,7 @@ loki-helm-release:
 
 promtail-helm-release:
   variables:
-    APP: "promtail"
+    RESOURCE: "promtail"
     NAMESPACE: "oas"
   extends:
     - .base-helm-release
@@ -428,7 +428,7 @@ promtail-helm-release:
 
 kube-prometheus-stack-helm-release:
   variables:
-    APP: "kube-prometheus-stack"
+    RESOURCE: "kube-prometheus-stack"
     NAMESPACE: "oas"
   extends:
     - .base-helm-release
@@ -436,7 +436,7 @@ kube-prometheus-stack-helm-release:
 
 single-sign-on-helm-release:
   variables:
-    APP: "single-sign-on"
+    RESOURCE: "single-sign-on"
     NAMESPACE: "oas"
   extends:
     - .base-helm-release
@@ -452,36 +452,36 @@ single-sign-on-helm-release:
   script:
     - *debug_information
     # Add optional override values we need for the CI pipeline only
-    - '[ -f ./install/overrides/oas-${APP}-override.yaml ] && kubectl apply -n oas-apps -f ./install/overrides/oas-${APP}-override.yaml'
-    - bash ./install/install-app.sh ${APP}
+    - '[ -f ./install/overrides/oas-${RESOURCE}-override.yaml ] && kubectl apply -n oas-apps -f ./install/overrides/oas-${RESOURCE}-override.yaml'
+    - bash ./install/install-app.sh ${RESOURCE}
   extends:
     - .ssh_setup
   interruptible: true
 
 enable-nextcloud:
   variables:
-    APP: "nextcloud"
+    RESOURCE: "nextcloud"
   extends:
     - .enable_app_template
     - .nextcloud_rules
 
 enable-rocketchat:
   variables:
-    APP: "rocketchat"
+    RESOURCE: "rocketchat"
   extends:
     - .enable_app_template
     - .rocketchat_rules
 
 enable-wekan:
   variables:
-    APP: "wekan"
+    RESOURCE: "wekan"
   extends:
     - .enable_app_template
     - .wekan_rules
 
 enable-wordpress:
   variables:
-    APP: "wordpress"
+    RESOURCE: "wordpress"
   extends:
     - .enable_app_template
     - .wordpress_rules
@@ -499,7 +499,7 @@ enable-wordpress:
 
 nextcloud-helm-release:
   variables:
-    APP: "nextcloud"
+    RESOURCE: "nextcloud"
     NAMESPACE: "oas-apps"
   needs:
     - job: base-kustomizations-ready
@@ -512,7 +512,7 @@ nextcloud-helm-release:
 
 rocketchat-helm-release:
   variables:
-    APP: "rocketchat"
+    RESOURCE: "rocketchat"
     NAMESPACE: "oas-apps"
   needs:
     - job: base-kustomizations-ready
@@ -525,7 +525,7 @@ rocketchat-helm-release:
 
 wekan-helm-release:
   variables:
-    APP: "wekan"
+    RESOURCE: "wekan"
     NAMESPACE: "oas-apps"
   needs:
     - job: base-kustomizations-ready
@@ -538,7 +538,7 @@ wekan-helm-release:
 
 wordpress-helm-release:
   variables:
-    APP: "wordpress"
+    RESOURCE: "wordpress"
     NAMESPACE: "oas-apps"
   needs:
     - job: base-kustomizations-ready
@@ -561,14 +561,14 @@ wordpress-helm-release:
     - *debug_information
     - cd ansible/
     - export KUBECONFIG="${PWD}/../clusters/${HOSTNAME}/kube_config_cluster.yml"
-    - pytest -v -s -m 'apps_running' --app="$APP" --connection=ansible --ansible-inventory=${CLUSTER_DIR}/inventory.yml --hosts='ansible://*' --reruns 120 --reruns-delay 10
+    - pytest -v -s -m 'apps_running' --app="$RESOURCE" --connection=ansible --ansible-inventory=${CLUSTER_DIR}/inventory.yml --hosts='ansible://*' --reruns 120 --reruns-delay 10
   extends:
     - .ssh_setup
   interruptible: true
 
 cert-manager-ready:
   variables:
-    APP: "cert-manager"
+    RESOURCE: "cert-manager"
   needs:
     - job: cert-manager-helm-release
     - job: setup-openappstack  # Needs makes sure the artifacts from that job are downloaded
@@ -578,7 +578,7 @@ cert-manager-ready:
 
 eventrouter-ready:
   variables:
-    APP: "eventrouter"
+    RESOURCE: "eventrouter"
   needs:
     - job: eventrouter-helm-release
     - job: setup-openappstack
@@ -588,7 +588,7 @@ eventrouter-ready:
 
 local-path-provisioner-ready:
   variables:
-    APP: "local-path-provisioner"
+    RESOURCE: "local-path-provisioner"
   needs:
     - job: local-path-provisioner-helm-release
     - job: setup-openappstack
@@ -598,7 +598,7 @@ local-path-provisioner-ready:
 
 loki-ready:
   variables:
-    APP: "loki"
+    RESOURCE: "loki"
   needs:
     - job: loki-helm-release
     - job: setup-openappstack
@@ -608,7 +608,7 @@ loki-ready:
 
 promtail-ready:
   variables:
-    APP: "promtail"
+    RESOURCE: "promtail"
   needs:
     - job: promtail-helm-release
     - job: setup-openappstack
@@ -618,7 +618,7 @@ promtail-ready:
 
 nextcloud-ready:
   variables:
-    APP: "nextcloud"
+    RESOURCE: "nextcloud"
   needs:
     - job: nextcloud-helm-release
     - job: setup-openappstack
@@ -628,7 +628,7 @@ nextcloud-ready:
 
 kube-prometheus-stack-ready:
   variables:
-    APP: "kube-prometheus-stack"
+    RESOURCE: "kube-prometheus-stack"
   needs:
     - job: kube-prometheus-stack-helm-release
     - job: setup-openappstack
@@ -638,7 +638,7 @@ kube-prometheus-stack-ready:
 
 rocketchat-ready:
   variables:
-    APP: "rocketchat"
+    RESOURCE: "rocketchat"
   needs:
     - job: rocketchat-helm-release
     - job: setup-openappstack
@@ -648,7 +648,7 @@ rocketchat-ready:
 
 single-sign-on-ready:
   variables:
-    APP: "single-sign-on"
+    RESOURCE: "single-sign-on"
   needs:
     - job: single-sign-on-helm-release
     - job: setup-openappstack
@@ -658,7 +658,7 @@ single-sign-on-ready:
 
 wekan-ready:
   variables:
-    APP: "wekan"
+    RESOURCE: "wekan"
   needs:
     - job: wekan-helm-release
     - job: setup-openappstack
@@ -668,7 +668,7 @@ wekan-ready:
 
 wordpress-ready:
   variables:
-    APP: "wordpress"
+    RESOURCE: "wordpress"
   needs:
     - job: wordpress-helm-release
     - job: setup-openappstack
@@ -686,14 +686,14 @@ wordpress-ready:
   script:
     - *debug_information
     - cd ansible/
-    - pytest -v -s -m 'certs' --app="$APP" --connection=ansible --ansible-inventory=${CLUSTER_DIR}/inventory.yml --hosts='ansible://*' --reruns 120 --reruns-delay 10
+    - pytest -v -s -m 'certs' --app="$RESOURCE" --connection=ansible --ansible-inventory=${CLUSTER_DIR}/inventory.yml --hosts='ansible://*' --reruns 120 --reruns-delay 10
   extends:
     - .ssh_setup
   interruptible: true
 
 nextcloud-cert:
   variables:
-    APP: "nextcloud"
+    RESOURCE: "nextcloud"
   needs:
     - job: nextcloud-ready
     - job: setup-openappstack
@@ -703,7 +703,7 @@ nextcloud-cert:
 
 kube-prometheus-stack-cert:
   variables:
-    APP: "kube-prometheus-stack"
+    RESOURCE: "kube-prometheus-stack"
   needs:
     - job: kube-prometheus-stack-ready
     - job: setup-openappstack
@@ -713,7 +713,7 @@ kube-prometheus-stack-cert:
 
 rocketchat-cert:
   variables:
-    APP: "rocketchat"
+    RESOURCE: "rocketchat"
   needs:
     - job: rocketchat-ready
     - job: setup-openappstack
@@ -723,7 +723,7 @@ rocketchat-cert:
 
 single-sign-on-cert:
   variables:
-    APP: "single-sign-on"
+    RESOURCE: "single-sign-on"
   needs:
     - job: single-sign-on-ready
     - job: setup-openappstack
@@ -733,7 +733,7 @@ single-sign-on-cert:
 
 wekan-cert:
   variables:
-    APP: "wekan"
+    RESOURCE: "wekan"
   needs:
     - job: wekan-ready
     - job: setup-openappstack
@@ -743,7 +743,7 @@ wekan-cert:
 
 wordpress-cert:
   variables:
-    APP: "wordpress"
+    RESOURCE: "wordpress"
   needs:
     - job: wordpress-ready
     - job: setup-openappstack
@@ -771,8 +771,8 @@ testinfra:
 kube-prometheus-stack-alerts:
   stage: health-test
   variables:
-    # APP var is used in job specific rules (i.e. .kube_prometheus_stack_rules)
-    APP: "kube-prometheus-stack"
+    # RESOURCE var is used in job specific rules (i.e. .kube_prometheus_stack_rules)
+    RESOURCE: "kube-prometheus-stack"
   allow_failure: true
   script:
     - *debug_information
@@ -797,7 +797,7 @@ kube-prometheus-stack-alerts:
   script:
     - *debug_information
     # Run the taiko tests for specific app
-    - python3 -m openappstack $HOSTNAME test --apps $APP
+    - python3 -m openappstack $HOSTNAME test --apps $RESOURCE
   retry: 2
   artifacts:
     paths:
@@ -810,7 +810,7 @@ kube-prometheus-stack-alerts:
 
 grafana-taiko:
   variables:
-    APP: "grafana"
+    RESOURCE: "grafana"
   needs:
     - job: kube-prometheus-stack-cert
     - job: setup-openappstack
@@ -820,7 +820,7 @@ grafana-taiko:
 
 nextcloud-taiko:
   variables:
-    APP: "nextcloud"
+    RESOURCE: "nextcloud"
   needs:
     - job: nextcloud-cert
     - job: setup-openappstack
@@ -830,7 +830,7 @@ nextcloud-taiko:
 
 rocketchat-taiko:
   variables:
-    APP: "rocketchat"
+    RESOURCE: "rocketchat"
   needs:
     - job: rocketchat-cert
     - job: setup-openappstack
@@ -840,7 +840,7 @@ rocketchat-taiko:
 
 wekan-taiko:
   variables:
-    APP: "wekan"
+    RESOURCE: "wekan"
   needs:
     - job: wekan-cert
     - job: setup-openappstack
@@ -850,7 +850,7 @@ wekan-taiko:
 
 wordpress-taiko:
   variables:
-    APP: "wordpress"
+    RESOURCE: "wordpress"
   needs:
     - job: wordpress-cert
     - job: setup-openappstack
diff --git a/test/conftest.py b/test/conftest.py
index c865ae39b7c79a609e88996b53011ba4b7321d2a..e21517b9d85f14ccbb35f781d419afd2949b897e 100644
--- a/test/conftest.py
+++ b/test/conftest.py
@@ -3,26 +3,26 @@ import pytest
 
 def pytest_addoption(parser):
     """Add pytest options:
-       --app: Select specific app to test
-       --namespace: Use specific namespace to look for app
+       --resource: Select specific resource to test
+       --namespace: Use specific namespace to look for resource
 
     See https://docs.pytest.org/en/stable/example/simple.html#pass-different-values-to-a-test-function-depending-on-command-line-options
     """
     parser.addoption(
-        "--app", action="store", default="all",
-        help="Name of the app to test, default: all"
+        "--resource", action="store", default="all",
+        help="Name of the resource to test, default: all"
     )
 
     parser.addoption(
         "--namespace", action="store", default="",
-        help="Namespace of the app to test, default: <empty>"
+        help="Namespace of the resource to test, default: <empty>"
     )
 
 
 @pytest.fixture
-def app(request):
+def resource(request):
     """Process new cli option."""
-    return request.config.getoption("--app")
+    return request.config.getoption("--resource")
 
 @pytest.fixture
 def namespace(request):
diff --git a/test/pytest.ini b/test/pytest.ini
index a32f20b33542a3888e4887864e4f5556700e5383..7a503f6d6283b0521bbd101fe0e8a0f03c5027bf 100644
--- a/test/pytest.ini
+++ b/test/pytest.ini
@@ -1,7 +1,7 @@
 [pytest]
 # Register custom markers, see https://docs.pytest.org/en/latest/mark.html
 markers =
-    app: Run all tests for a specific app
+    resource: Run all tests for a specific resource
     certs: Run tests related to TLS certificates
     testinfra: Run testinfra tests (test OS/package versions etc)
     prometheus: Test prometheus
diff --git a/test/pytest/test_app_deployments.py b/test/pytest/test_app_deployments.py
index 7ddf634e43d561d04601f9b524fc9fda789b74ef..7e4c15061ec3f66bcc9c9d74a8ee03882d6ebc67 100644
--- a/test/pytest/test_app_deployments.py
+++ b/test/pytest/test_app_deployments.py
@@ -122,9 +122,9 @@ def check_resources(api, api_group, api_version, plural, name, namespace='flux-s
 
 # Pytest functions
 
-@pytest.mark.app
+@pytest.mark.resource
 @pytest.mark.kustomizations
-def test_kustomizations(app, namespace):
+def test_kustomizations(resource, namespace):
     """
     Checks if all kustomizations installed by weave flux are in
     'Ready' state.
@@ -136,13 +136,13 @@ def test_kustomizations(app, namespace):
         api_group='kustomize.toolkit.fluxcd.io',
         api_version='v1beta1',
         plural='kustomizations',
-        name=app,
+        name=resource,
         namespace=namespace)
 
 
-@pytest.mark.app
+@pytest.mark.resource
 @pytest.mark.helmreleases
-def test_helmreleases(app, namespace):
+def test_helmreleases(resource, namespace):
     """
     Checks if all HelmReleases installed by weave flux are in
     'Ready' state.
@@ -154,34 +154,23 @@ def test_helmreleases(app, namespace):
         api_group='helm.toolkit.fluxcd.io',
         api_version='v2beta1',
         plural='helmreleases',
-        name=app,
+        name=resource,
         namespace=namespace)
 
 
-@pytest.mark.app
+@pytest.mark.resource
 @pytest.mark.deployments
-def test_deployments(app):
+def test_deployments(resource, namespace):
     """
     Checks if all the pods related to releases in EXPECTED_RELEASES are
     ready
     """
 
     api = client.CoreV1Api()
-    failed = 0
-    print('\n')
-
-    # if app == 'all':
-
-
-
-    for app_name, info in EXPECTED_APP_LABELS.items():
-        if app in (app_name, 'all'):
-            print("{}: ".format(app_name))
-            result = api.list_namespaced_pod(
-                namespace=info['namespace'],
-                label_selector=info['label_selector'],
-            )
-            if not check_all_pods_running(result.items):
-                failed += 1
-            print()
-    assert failed == 0, "Error: {} apps not 'Running'!".format(failed)
+    check_resources(
+        api=api,
+        api_group='',
+        api_version='',
+        plural='deployments',
+        name=resource,
+        namespace=namespace)