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 fcb96f9..862606a 100644
--- a/test_set/cvp-sanity/tests/test_contrail.py
+++ b/test_set/cvp-sanity/tests/test_contrail.py
@@ -14,6 +14,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)
@@ -37,7 +40,7 @@
                                                              broken_services,
                                                              indent=4))
 
-
+@pytest.mark.smoke
 def test_contrail_node_status(local_salt_client, check_openstack):
     command = STATUS_COMMAND
 
@@ -67,7 +70,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)
@@ -87,7 +90,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 f892932..5efc7e8 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 5fe40fc..b79e6db 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 abf0d8a..8da6fad 100644
--- a/test_set/cvp-sanity/tests/test_ntp_sync.py
+++ b/test_set/cvp-sanity/tests/test_ntp_sync.py
@@ -2,7 +2,10 @@
 import utils
 import pytest
 
+
 @pytest.mark.xfail
+@pytest.mark.smoke
+#move to sl?
 def test_ntp_sync(local_salt_client):
     """Test checks that system time is the same across all nodes"""
 
@@ -26,6 +29,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 29f922d..f8f7491 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 0e29bc6..0949851 100644
--- a/test_set/cvp-sanity/tests/test_repo_list.py
+++ b/test_set/cvp-sanity/tests/test_repo_list.py
@@ -1,6 +1,8 @@
 import json
+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
