diff --git a/test_set/cvp-sanity/README.md b/test_set/cvp-sanity/README.md
index 564f236..3b36f6f 100644
--- a/test_set/cvp-sanity/README.md
+++ b/test_set/cvp-sanity/README.md
@@ -52,7 +52,7 @@
 ```
 For array-type settings please do:
 ```bash
-export skipped_nodes='ctl01.example.com,ctl02.example.com'
+export skipped_nodes=ctl01.example.com,ctl02.example.com
 ```
 
 5) Start tests:
@@ -63,3 +63,11 @@
 ```bash
    # pytest -sv cvp-sanity/tests/ --ignore cvp-sanity/tests/test_mtu.py
 ```
+CVP-sanity-checks supports tags (labels/marks/sets). As of now we have smoke,
+full and sl_dup sets. Smoke will run essential tests only, full set runs all
+tests and sl_dup is a special set that collects the tests that already exist in
+Stacklight. Please do not forget to mark your test when you add it.
+Example (run smoke tests only):
+```bash
+   # pytest -v -m smoke
+```
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
