diff --git a/test_set/cvp-sanity/tests/test_cinder_services.py b/test_set/cvp-sanity/tests/test_cinder_services.py
index a83a3f9..4a6c45e 100644
--- a/test_set/cvp-sanity/tests/test_cinder_services.py
+++ b/test_set/cvp-sanity/tests/test_cinder_services.py
@@ -1,6 +1,9 @@
 import pytest
 
 
+@pytest.mark.sl_dup
+#CinderServiceDown, CinderServicesDownMinor
+@pytest.mark.full
 def test_cinder_services_are_up(local_salt_client, check_cinder_backends):
     """
         # Make sure that cinder backend exists with next command: `salt -C "I@cinder:controller" pillar.get cinder:controller:backend`
@@ -12,7 +15,7 @@
     assert service_down == '', \
         '''Some cinder services are in wrong state'''
 
-
+@pytest.mark.full
 def test_cinder_services_has_all_backends(local_salt_client, check_cinder_backends):
     """
         # Make sure that cinder backend exists with next command: `salt -C "I@cinder:controller" pillar.get cinder:controller:backend`
@@ -31,4 +34,4 @@
     assert cinder_volume == str(backends_num), \
         'Number of cinder-volume services ({0}) does not match ' \
         'number of volume backends ({1})'.format(
-        cinder_volume, str(backends_num))
\ No newline at end of file
+        cinder_volume, str(backends_num))
diff --git a/test_set/cvp-sanity/tests/test_contrail.py b/test_set/cvp-sanity/tests/test_contrail.py
index b7870a3..7d153d4 100644
--- a/test_set/cvp-sanity/tests/test_contrail.py
+++ b/test_set/cvp-sanity/tests/test_contrail.py
@@ -13,6 +13,9 @@
         expr_form='pillar'
     )
 
+@pytest.mark.sl_dup
+#ContrailApiDown, ContrailApiDownMinor
+@pytest.mark.full
 def test_contrail_compute_status(local_salt_client, check_openstack):
     cs = get_contrail_status(local_salt_client, 'nova:compute',
                              STATUS_COMMAND, STATUS_FILTER)
@@ -36,7 +39,7 @@
                                                              broken_services,
                                                              indent=4))
 
-
+@pytest.mark.smoke
 def test_contrail_node_status(local_salt_client, check_openstack):
     command = STATUS_COMMAND
 
@@ -66,7 +69,7 @@
                                                              broken_services,
                                                              indent=4))
 
-
+@pytest.mark.smoke
 def test_contrail_vrouter_count(local_salt_client, check_openstack):
     cs = get_contrail_status(local_salt_client, 'nova:compute',
                              STATUS_COMMAND, STATUS_FILTER)
@@ -86,7 +89,7 @@
         ' from the length of compute nodes {}'.format(actual_vrouter_count,
                                                       len(cs.keys()))
 
-
+@pytest.mark.smoke
 def test_public_ui_contrail(local_salt_client, ctl_nodes_pillar, check_openstack):
     IP = local_salt_client.pillar_get(param='_param:cluster_public_host')
     protocol = 'https'
diff --git a/test_set/cvp-sanity/tests/test_default_gateway.py b/test_set/cvp-sanity/tests/test_default_gateway.py
index 8cea880..c1a36da 100644
--- a/test_set/cvp-sanity/tests/test_default_gateway.py
+++ b/test_set/cvp-sanity/tests/test_default_gateway.py
@@ -1,6 +1,8 @@
 import json
+import pytest
 
 
+@pytest.mark.full
 def test_check_default_gateways(local_salt_client, nodes_in_group):
     netstat_info = local_salt_client.cmd(
         tgt="L@"+','.join(nodes_in_group),
diff --git a/test_set/cvp-sanity/tests/test_drivetrain.py b/test_set/cvp-sanity/tests/test_drivetrain.py
index 3a9f1b6..05ea831 100644
--- a/test_set/cvp-sanity/tests/test_drivetrain.py
+++ b/test_set/cvp-sanity/tests/test_drivetrain.py
@@ -48,6 +48,7 @@
     return password
 
 
+@pytest.mark.full
 def test_drivetrain_gerrit(local_salt_client, check_cicd):
     gerrit_password = get_password(local_salt_client,'gerrit:client')
     gerrit_error = ''
@@ -106,6 +107,7 @@
         'Something is wrong with Gerrit'.format(gerrit_error)
 
 
+@pytest.mark.full
 def test_drivetrain_openldap(local_salt_client, check_cicd):
     """
          1. Create a test user 'DT_test_user' in openldap
@@ -207,6 +209,9 @@
         '''Test user was not found'''
 
 
+@pytest.mark.sl_dup
+#DockerService***Outage
+@pytest.mark.full
 def test_drivetrain_services_replicas(local_salt_client, check_cicd):
     """
         # Execute ` salt -C 'I@gerrit:client' cmd.run 'docker service ls'` command to get info  for each docker service like that:
@@ -234,6 +239,7 @@
     assert len(wrong_items) == 0
 
 
+@pytest.mark.full
 def test_drivetrain_components_and_versions(local_salt_client, check_cicd):
     """
         1. Execute command `docker service ls --format "{{.Image}}"'` on  the 'I@gerrit:client' target
@@ -272,6 +278,7 @@
               {}'''.format(json.dumps(mismatch, indent=4))
 
 
+@pytest.mark.full
 def test_jenkins_jobs_branch(local_salt_client, check_cicd):
     """ This test compares Jenkins jobs versions
         collected from the cloud vs collected from pillars.
@@ -319,6 +326,7 @@
               {}'''.format(json.dumps(version_mismatch, indent=4))
 
 
+@pytest.mark.full
 def test_drivetrain_jenkins_job(local_salt_client, check_cicd):
     """
         # Login to Jenkins on jenkins:client
@@ -362,6 +370,8 @@
          '''.format(jenkins_test_job)
 
 
+@pytest.mark.smoke
+# ??
 def test_kdt_all_pods_are_available(local_salt_client, check_kdt):
     """
      # Run kubectl get pods -n drivetrain on kdt-nodes to get status for each pod
@@ -399,6 +409,8 @@
             report=report_with_errors
         )
 
+@pytest.mark.smoke
+# ??
 def test_kfg_all_pods_are_available(local_salt_client, check_kfg):
     """
      # Run kubectl get pods -n drivetrain on cfg node to get status for each pod
diff --git a/test_set/cvp-sanity/tests/test_duplicate_ips.py b/test_set/cvp-sanity/tests/test_duplicate_ips.py
index 3b55a26..bbd532e 100644
--- a/test_set/cvp-sanity/tests/test_duplicate_ips.py
+++ b/test_set/cvp-sanity/tests/test_duplicate_ips.py
@@ -1,7 +1,7 @@
 from collections import Counter
 from pprint import pformat
 import os
-
+import pytest
 import utils
 
 
@@ -14,6 +14,7 @@
     return dup_ifaces
 
 
+@pytest.mark.smoke
 def test_duplicate_ips(local_salt_client):
     testname = os.path.basename(__file__).split('.')[0]
     config = utils.get_configuration()
diff --git a/test_set/cvp-sanity/tests/test_etc_hosts.py b/test_set/cvp-sanity/tests/test_etc_hosts.py
index 8850ab7..61d36ef 100644
--- a/test_set/cvp-sanity/tests/test_etc_hosts.py
+++ b/test_set/cvp-sanity/tests/test_etc_hosts.py
@@ -1,6 +1,8 @@
 import json
+import pytest
 
 
+@pytest.mark.full
 def test_etc_hosts(local_salt_client):
     nodes_info = local_salt_client.cmd(
         tgt='*',
diff --git a/test_set/cvp-sanity/tests/test_galera_cluster.py b/test_set/cvp-sanity/tests/test_galera_cluster.py
index 73f4932..32b1074 100644
--- a/test_set/cvp-sanity/tests/test_galera_cluster.py
+++ b/test_set/cvp-sanity/tests/test_galera_cluster.py
@@ -1,6 +1,10 @@
 import pytest
 
 
+@pytest.mark.sl_dup
+#GaleraServiceDown
+#TODO: a better test
+@pytest.mark.full
 def test_galera_cluster_status(local_salt_client):
     gs = local_salt_client.cmd(
         tgt='galera:*',
diff --git a/test_set/cvp-sanity/tests/test_mounts.py b/test_set/cvp-sanity/tests/test_mounts.py
index c9ba9ce..2eca9fd 100644
--- a/test_set/cvp-sanity/tests/test_mounts.py
+++ b/test_set/cvp-sanity/tests/test_mounts.py
@@ -2,6 +2,8 @@
 import pytest
 
 
+@pytest.mark.smoke
+#full?
 def test_mounted_file_systems(local_salt_client, nodes_in_group):
     """
         # Get all mount points from each node in the group  with the next command: `df -h | awk '{print $1}'`
diff --git a/test_set/cvp-sanity/tests/test_mtu.py b/test_set/cvp-sanity/tests/test_mtu.py
index 0a3d2d0..b215c1d 100644
--- a/test_set/cvp-sanity/tests/test_mtu.py
+++ b/test_set/cvp-sanity/tests/test_mtu.py
@@ -4,6 +4,7 @@
 import os
 
 
+@pytest.mark.full
 def test_mtu(local_salt_client, nodes_in_group):
     testname = os.path.basename(__file__).split('.')[0]
     config = utils.get_configuration()
diff --git a/test_set/cvp-sanity/tests/test_nodes.py b/test_set/cvp-sanity/tests/test_nodes.py
index 687f3ae..6ab48df 100644
--- a/test_set/cvp-sanity/tests/test_nodes.py
+++ b/test_set/cvp-sanity/tests/test_nodes.py
@@ -2,6 +2,8 @@
 import pytest
 
 
+@pytest.mark.smoke
+#move to sl?
 def test_minions_status(local_salt_client):
     result = local_salt_client.cmd(
         tgt='salt:master',
diff --git a/test_set/cvp-sanity/tests/test_nodes_in_maas.py b/test_set/cvp-sanity/tests/test_nodes_in_maas.py
index fafd150..74ec865 100644
--- a/test_set/cvp-sanity/tests/test_nodes_in_maas.py
+++ b/test_set/cvp-sanity/tests/test_nodes_in_maas.py
@@ -18,6 +18,7 @@
     return login
 
 
+@pytest.mark.full
 def test_nodes_deployed_in_maas(local_salt_client):
     config = utils.get_configuration()
 
diff --git a/test_set/cvp-sanity/tests/test_nova_services.py b/test_set/cvp-sanity/tests/test_nova_services.py
index 6505d30..54ed76e 100644
--- a/test_set/cvp-sanity/tests/test_nova_services.py
+++ b/test_set/cvp-sanity/tests/test_nova_services.py
@@ -1,6 +1,8 @@
 import pytest
 
 
+@pytest.mark.sl_dup
+@pytest.mark.full
 @pytest.mark.usefixtures('check_openstack')
 def test_nova_services_status(local_salt_client):
     result = local_salt_client.cmd_any(
@@ -12,6 +14,7 @@
         '''Some nova services are in wrong state'''
 
 
+@pytest.mark.smoke
 @pytest.mark.usefixtures('check_openstack')
 def test_nova_hosts_consistent(local_salt_client):
     all_cmp_services = local_salt_client.cmd_any(
diff --git a/test_set/cvp-sanity/tests/test_ntp_sync.py b/test_set/cvp-sanity/tests/test_ntp_sync.py
index dd199d1..bf51290 100644
--- a/test_set/cvp-sanity/tests/test_ntp_sync.py
+++ b/test_set/cvp-sanity/tests/test_ntp_sync.py
@@ -1,7 +1,10 @@
 import json
 import utils
+import pytest
 
 
+@pytest.mark.smoke
+#move to sl?
 def test_ntp_sync(local_salt_client):
     """Test checks that system time is the same across all nodes"""
 
@@ -25,6 +28,7 @@
                              json.dumps(result, indent=4))
 
 
+@pytest.mark.smoke
 def test_ntp_peers_state(local_salt_client):
     """Test gets ntpq peers state and checks the system peer is declared"""
     state = local_salt_client.cmd(
diff --git a/test_set/cvp-sanity/tests/test_oss.py b/test_set/cvp-sanity/tests/test_oss.py
index 9e919c5..469323e 100644
--- a/test_set/cvp-sanity/tests/test_oss.py
+++ b/test_set/cvp-sanity/tests/test_oss.py
@@ -1,8 +1,11 @@
 import requests
 import csv
 import json
+import pytest
 
 
+@pytest.mark.full
+#probably in sl
 def test_oss_status(local_salt_client, check_cicd):
     """
        # Get IP of HAPROXY interface from pillar using 'salt -C "I@docker:swarm:role:master" pillar.get haproxy:proxy:listen:stats:binds:address'
diff --git a/test_set/cvp-sanity/tests/test_packet_checker.py b/test_set/cvp-sanity/tests/test_packet_checker.py
index 6c1ccc9..786fba9 100644
--- a/test_set/cvp-sanity/tests/test_packet_checker.py
+++ b/test_set/cvp-sanity/tests/test_packet_checker.py
@@ -3,6 +3,7 @@
 import utils
 
 
+@pytest.mark.full
 def test_check_package_versions(local_salt_client, nodes_in_group):
     exclude_packages = utils.get_configuration().get("skipped_packages", [])
     packages_versions = local_salt_client.cmd(tgt="L@"+','.join(nodes_in_group),
@@ -49,6 +50,7 @@
         json.dumps(pkts_data, indent=4))
 
 
+@pytest.mark.full
 def test_packages_are_latest(local_salt_client, nodes_in_group):
     config = utils.get_configuration()
     skip = config.get("test_packages")["skip_test"]
@@ -70,6 +72,7 @@
             node, "\n".join(result))
 
 
+@pytest.mark.full
 def test_check_module_versions(local_salt_client, nodes_in_group):
     exclude_modules = utils.get_configuration().get("skipped_modules", [])
     pre_check = local_salt_client.cmd(
@@ -115,4 +118,4 @@
             pkts_data.append(row)
     assert len(pkts_data) <= 1, \
         "Several problems found: {0}".format(
-        json.dumps(pkts_data, indent=4))
+        json.dumps(pkts_data, indent=4))
\ No newline at end of file
diff --git a/test_set/cvp-sanity/tests/test_rabbit_cluster.py b/test_set/cvp-sanity/tests/test_rabbit_cluster.py
index 73efb57..d0bb44b 100644
--- a/test_set/cvp-sanity/tests/test_rabbit_cluster.py
+++ b/test_set/cvp-sanity/tests/test_rabbit_cluster.py
@@ -1,6 +1,11 @@
 import utils
+import pytest
 
 
+@pytest.mark.sl_dup
+#RabbitmqServiceDown, RabbitmqErrorLogsTooHigh
+#TODO: a better test
+@pytest.mark.full
 def test_checking_rabbitmq_cluster(local_salt_client):
     # disable config for this test
     # it may be reintroduced in future
diff --git a/test_set/cvp-sanity/tests/test_repo_list.py b/test_set/cvp-sanity/tests/test_repo_list.py
index 5e70eeb..1ba255c 100644
--- a/test_set/cvp-sanity/tests/test_repo_list.py
+++ b/test_set/cvp-sanity/tests/test_repo_list.py
@@ -1,3 +1,7 @@
+import pytest
+
+
+@pytest.mark.full
 def test_list_of_repo_on_nodes(local_salt_client, nodes_in_group):
     # TODO: pillar.get
     info_salt = local_salt_client.cmd(tgt='L@' + ','.join(
diff --git a/test_set/cvp-sanity/tests/test_salt_master.py b/test_set/cvp-sanity/tests/test_salt_master.py
index 546ff75..f0d6499 100644
--- a/test_set/cvp-sanity/tests/test_salt_master.py
+++ b/test_set/cvp-sanity/tests/test_salt_master.py
@@ -1,6 +1,8 @@
 import json
+import pytest
 
 
+@pytest.mark.full
 def test_uncommited_changes(local_salt_client):
     git_status = local_salt_client.cmd(
         tgt='salt:master',
@@ -10,6 +12,7 @@
            ' some unmerged changes {}'''.format(git_status.values()[0])
 
 
+@pytest.mark.smoke
 def test_reclass_smoke(local_salt_client):
     reclass = local_salt_client.cmd(
         tgt='salt:master',
@@ -21,6 +24,7 @@
                           '\n {}'.format(reclass)
 
 
+@pytest.mark.smoke
 def test_reclass_nodes(local_salt_client):
     reclass = local_salt_client.cmd(
         tgt='salt:master',
diff --git a/test_set/cvp-sanity/tests/test_services.py b/test_set/cvp-sanity/tests/test_services.py
index c704437..224c207 100644
--- a/test_set/cvp-sanity/tests/test_services.py
+++ b/test_set/cvp-sanity/tests/test_services.py
@@ -1,6 +1,5 @@
 import pytest
 import json
-import os
 import utils
 
 # Some nodes can have services that are not applicable for other nodes in similar group.
@@ -10,6 +9,7 @@
 inconsistency_rule = {"kvm03": ["srv-volumes-backup.mount", "rsync"]}
 
 
+@pytest.mark.full
 def test_check_services(local_salt_client, nodes_in_group):
     """
     Skips services if they are not consistent for all node.
diff --git a/test_set/cvp-sanity/tests/test_single_vip.py b/test_set/cvp-sanity/tests/test_single_vip.py
index c18c660..91fcd92 100644
--- a/test_set/cvp-sanity/tests/test_single_vip.py
+++ b/test_set/cvp-sanity/tests/test_single_vip.py
@@ -3,6 +3,7 @@
 import pytest
 
 
+@pytest.mark.smoke
 def test_single_vip_exists(local_salt_client):
     """Test checks that there is only one VIP address
        within one group of nodes (where applicable).
diff --git a/test_set/cvp-sanity/tests/test_stacklight.py b/test_set/cvp-sanity/tests/test_stacklight.py
index 703deea..31ac01e 100644
--- a/test_set/cvp-sanity/tests/test_stacklight.py
+++ b/test_set/cvp-sanity/tests/test_stacklight.py
@@ -3,7 +3,9 @@
 import datetime
 import pytest
 
-
+@pytest.mark.sl_dup
+#ElasticsearchClusterHealthStatusMajor or stacklight-pytest
+@pytest.mark.full
 @pytest.mark.usefixtures('check_kibana')
 def test_elasticsearch_cluster(local_salt_client):
     salt_output = local_salt_client.pillar_get(
@@ -34,6 +36,9 @@
         json.dumps(resp, indent=4))
 
 
+@pytest.mark.sl_dup
+#stacklight-pytest
+@pytest.mark.full
 @pytest.mark.usefixtures('check_kibana')
 def test_kibana_status(local_salt_client):
     proxies = {"http": None, "https": None}
@@ -49,6 +54,8 @@
             "Kibana statuses are unexpected: {}".format(i)
 
 
+@pytest.mark.smoke
+#TODO: recheck
 @pytest.mark.usefixtures('check_kibana')
 def test_elasticsearch_node_count(local_salt_client):
     now = datetime.datetime.now()
@@ -62,7 +69,7 @@
     proxies = {"http": None, "https": None}
     data = ('{"size": 0, "aggs": '
             '{"uniq_hostname": '
-            '{"terms": {"size": 1000, '
+            '{"terms": {"size": 500, '
             '"field": "Hostname.keyword"}}}}')
     response = requests.post(
         'http://{0}:9200/log-{1}/_search?pretty'.format(IP, today),
@@ -88,6 +95,9 @@
             format(len(monitored_nodes), len(all_nodes), missing_nodes)
 
 
+@pytest.mark.sl_dup
+#DockerServiceMonitoring*
+@pytest.mark.full
 def test_stacklight_services_replicas(local_salt_client):
     # TODO
     # change to docker:swarm:role:master ?
@@ -110,6 +120,7 @@
               {}'''.format(json.dumps(wrong_items, indent=4))
 
 
+@pytest.mark.smoke
 @pytest.mark.usefixtures('check_prometheus')
 def test_prometheus_alert_count(local_salt_client, ctl_nodes_pillar):
     IP = local_salt_client.pillar_get(param='_param:cluster_public_host')
@@ -128,6 +139,9 @@
                          json.dumps(result), indent=4)
 
 
+@pytest.mark.sl_dup
+#DockerServiceMonitoring* ??
+@pytest.mark.full
 def test_stacklight_containers_status(local_salt_client):
     salt_output = local_salt_client.cmd(
         tgt='I@docker:swarm:role:master and I@prometheus:server',
@@ -159,6 +173,9 @@
               {}'''.format(json.dumps(result, indent=4))
 
 
+@pytest.mark.sl_dup
+#PrometheusTargetDown
+@pytest.mark.full
 def test_running_telegraf_services(local_salt_client):
     salt_output = local_salt_client.cmd(tgt='telegraf:agent',
                                         fun='service.status',
@@ -176,6 +193,9 @@
                          'on following nodes: {}'.format(result)
 
 
+@pytest.mark.sl_dup
+#PrometheusTargetDown
+@pytest.mark.full
 def test_running_fluentd_services(local_salt_client):
     salt_output = local_salt_client.cmd(tgt='fluentd:agent',
                                         fun='service.status',
@@ -185,4 +205,4 @@
               in salt_output.items()
               if status is False]
     assert result == [], 'Fluentd check failed: td-agent service is not ' \
-                         'running on following nodes:'.format(result)
+                         'running on following nodes:'.format(result)
\ No newline at end of file
diff --git a/test_set/cvp-sanity/tests/test_ui_addresses.py b/test_set/cvp-sanity/tests/test_ui_addresses.py
index 0c65451..40ff120 100644
--- a/test_set/cvp-sanity/tests/test_ui_addresses.py
+++ b/test_set/cvp-sanity/tests/test_ui_addresses.py
@@ -1,6 +1,7 @@
 import pytest
 
 
+@pytest.mark.smoke
 @pytest.mark.usefixtures('check_openstack')
 def test_ui_horizon(local_salt_client, ctl_nodes_pillar):
     IP = local_salt_client.pillar_get(
@@ -18,6 +19,7 @@
         IP[0])
 
 
+@pytest.mark.smoke
 @pytest.mark.usefixtures('check_openstack')
 def test_public_openstack(local_salt_client, ctl_nodes_pillar):
     IP = local_salt_client.pillar_get(param='_param:cluster_public_host')
@@ -33,6 +35,9 @@
         'Public Openstack url is not reachable on {} from ctl nodes'.format(url)
 
 
+@pytest.mark.sl_dup
+#stacklight-pytest?
+@pytest.mark.full
 @pytest.mark.usefixtures('check_kibana')
 def test_internal_ui_kibana(local_salt_client, ctl_nodes_pillar):
     IP = local_salt_client.pillar_get(param='_param:stacklight_log_address')
@@ -49,6 +54,7 @@
         'from ctl nodes'.format(url)
 
 
+@pytest.mark.smoke
 @pytest.mark.usefixtures('check_kibana')
 def test_public_ui_kibana(local_salt_client, ctl_nodes_pillar):
     IP = local_salt_client.pillar_get(param='_param:cluster_public_host')
@@ -65,6 +71,9 @@
         'from ctl nodes'.format(url)
 
 
+@pytest.mark.sl_dup
+#stacklight-pytest?
+@pytest.mark.full
 @pytest.mark.usefixtures('check_prometheus')
 def test_internal_ui_prometheus(local_salt_client, ctl_nodes_pillar):
     IP = local_salt_client.pillar_get(param='_param:stacklight_monitor_address')
@@ -81,6 +90,7 @@
         'from ctl nodes'.format(url)
 
 
+@pytest.mark.smoke
 @pytest.mark.usefixtures('check_prometheus')
 def test_public_ui_prometheus(local_salt_client, ctl_nodes_pillar):
     IP = local_salt_client.pillar_get(param='_param:cluster_public_host')
@@ -97,6 +107,9 @@
         'from ctl nodes'.format(url)
 
 
+@pytest.mark.sl_dup
+#stacklight-pytest?
+@pytest.mark.full
 @pytest.mark.usefixtures('check_prometheus')
 def test_internal_ui_alert_manager(local_salt_client, ctl_nodes_pillar):
     IP = local_salt_client.pillar_get(param='_param:stacklight_monitor_address')
@@ -112,6 +125,7 @@
         'from ctl nodes'.format(url)
 
 
+@pytest.mark.smoke
 @pytest.mark.usefixtures('check_prometheus')
 def test_public_ui_alert_manager(local_salt_client, ctl_nodes_pillar):
     IP = local_salt_client.pillar_get(param='_param:cluster_public_host')
@@ -127,6 +141,9 @@
         'from ctl nodes'.format(url)
 
 
+@pytest.mark.sl_dup
+#stacklight-pytest?
+@pytest.mark.full
 @pytest.mark.usefixtures('check_grafana')
 def test_internal_ui_grafana(local_salt_client, ctl_nodes_pillar):
     IP = local_salt_client.pillar_get(param='_param:stacklight_monitor_address')
@@ -142,6 +159,7 @@
         'from ctl nodes'.format(url)
 
 
+@pytest.mark.smoke
 @pytest.mark.usefixtures('check_grafana')
 def test_public_ui_grafana(local_salt_client, ctl_nodes_pillar):
     IP = local_salt_client.pillar_get(param='_param:cluster_public_host')
@@ -156,6 +174,9 @@
         'Public Grafana page is not reachable on {} from ctl nodes'.format(url)
 
 
+@pytest.mark.sl_dup
+#stacklight-pytest?
+@pytest.mark.full
 @pytest.mark.usefixtures('check_alerta')
 def test_internal_ui_alerta(local_salt_client, ctl_nodes_pillar):
     IP = local_salt_client.pillar_get(param='_param:stacklight_monitor_address')
@@ -171,6 +192,7 @@
         'Internal Alerta page is not reachable on {} from ctl nodes'.format(url)
 
 
+@pytest.mark.smoke
 @pytest.mark.usefixtures('check_alerta')
 def test_public_ui_alerta(local_salt_client, ctl_nodes_pillar):
     IP = local_salt_client.pillar_get(param='_param:cluster_public_host')
@@ -186,6 +208,7 @@
         'Public Alerta page is not reachable on {} from ctl nodes'.format(url)
 
 
+@pytest.mark.smoke
 @pytest.mark.usefixtures('check_openstack')
 @pytest.mark.usefixtures('check_drivetrain')
 def test_public_ui_jenkins(local_salt_client, ctl_nodes_pillar):
@@ -202,6 +225,7 @@
         'Public Jenkins page is not reachable on {} from ctl nodes'.format(url)
 
 
+@pytest.mark.smoke
 @pytest.mark.usefixtures('check_openstack')
 @pytest.mark.usefixtures('check_drivetrain')
 def test_public_ui_gerrit(local_salt_client, ctl_nodes_pillar):
@@ -215,4 +239,4 @@
                grep "Gerrit Code Review"'.format(url),
         expr_form='pillar')
     assert len(result[result.keys()[0]]) != 0, \
-        'Public Gerrit page is not reachable on {} from ctl nodes'.format(url)
+        'Public Gerrit page is not reachable on {} from ctl nodes'.format(url)
\ No newline at end of file
