diff --git a/test_set/cvp-sanity/tests/test_stacklight.py b/test_set/cvp-sanity/tests/test_stacklight.py
index 03b5a42..78e190c 100644
--- a/test_set/cvp-sanity/tests/test_stacklight.py
+++ b/test_set/cvp-sanity/tests/test_stacklight.py
@@ -143,21 +143,32 @@
 @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')
+    prometheus_password_old = local_salt_client.pillar_get(
+        param='_param:keepalived_prometheus_vip_password_generated')
+    prometheus_password = local_salt_client.pillar_get(
+        param='_param:prometheus_server_proxy_password_generated')
     proto = local_salt_client.pillar_get(
         param='_param:cluster_public_protocol')
+    proxies = {"http": None, "https": None}
     # keystone:server can return 3 nodes instead of 1
     # this will be fixed later
     # TODO
-    nodes_info = local_salt_client.cmd(
-        tgt=ctl_nodes_pillar,
-        param='curl -k -s {0}://{1}:15010/alerts | grep icon-chevron-down | '
-              'grep -v "0 active"'.format(proto, IP),
-        expr_form='pillar')
-
-    result = nodes_info[nodes_info.keys()[0]].replace('</td>', '').replace(
-        '<td><i class="icon-chevron-down"></i> <b>', '').replace('</b>', '')
-    assert result == '', 'AlertManager page has some alerts!\n{}'.format(
-        json.dumps(result), indent=4)
+    if prometheus_password == '':
+        prometheus_password = prometheus_password_old
+    response = requests.get(
+        '{0}://{1}:15010/api/v1/alerts'.format(proto, IP),
+        proxies=proxies,
+        auth=('prometheus', prometheus_password))
+    assert response.status_code == 200, (
+        'Issues with accessing prometheus alerts on {}:\n{}'.format(
+            IP, response.text)
+    )
+    alerts = json.loads(response.content)
+    short_alerts = ''
+    for i in alerts['data']['alerts']:
+        short_alerts = '{}* {}\n'.format(short_alerts, i['annotations']['description'])
+    assert alerts['data']['alerts'] == [], 'AlertManager page has some alerts!\n{}'.format(
+        short_alerts)
 
 
 @pytest.mark.sl_dup
diff --git a/test_set/cvp-sanity/tests/test_ui_addresses.py b/test_set/cvp-sanity/tests/test_ui_addresses.py
index 5e6ccdb..12ff05c 100644
--- a/test_set/cvp-sanity/tests/test_ui_addresses.py
+++ b/test_set/cvp-sanity/tests/test_ui_addresses.py
@@ -1,3 +1,4 @@
+import requests
 import pytest
 
 
@@ -101,15 +102,24 @@
 @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')
+    prometheus_password_old = local_salt_client.pillar_get(
+        param='_param:keepalived_prometheus_vip_password_generated')
+    prometheus_password = local_salt_client.pillar_get(
+        param='_param:prometheus_server_proxy_password_generated')
     proto = local_salt_client.pillar_get(
         param='_param:cluster_public_protocol')
-    port = '15010'
-    url = "{}://{}:{}".format(proto, IP, port)
-    result = local_salt_client.cmd(
-        tgt=ctl_nodes_pillar,
-        param='curl -k {}/graph 2>&1 | grep Prometheus'.format(url),
-        expr_form='pillar')
-    assert len(result[result.keys()[0]]) != 0, (
+    proxies = {"http": None, "https": None}
+    if prometheus_password == '':
+        prometheus_password = prometheus_password_old
+    response = requests.get(
+        '{0}://{1}:15010/graph'.format(proto, IP),
+        proxies=proxies,
+        auth=('prometheus', prometheus_password))
+    assert response.status_code == 200, (
+        'Issues with accessing public prometheus ui on {}:\n{}'.format(
+            IP, response.text)
+    )
+    assert response.content.find('Prometheus Time Series Collection') > -1, (
         'Public Prometheus page is not reachable on {} from ctl '
         'nodes'.format(url)
     )
@@ -138,15 +148,24 @@
 @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')
+    alermanager_password_old = local_salt_client.pillar_get(
+        param='_param:keepalived_prometheus_vip_password_generated')
+    alermanager_password = local_salt_client.pillar_get(
+        param='_param:prometheus_alermanager_proxy_password_generated')
     proto = local_salt_client.pillar_get(
         param='_param:cluster_public_protocol')
-    port = '15011'
-    url = "{}://{}:{}".format(proto, IP, port)
-    result = local_salt_client.cmd(
-        tgt=ctl_nodes_pillar,
-        param='curl -k -s {}/ | grep Alertmanager'.format(url),
-        expr_form='pillar')
-    assert len(result[result.keys()[0]]) != 0, (
+    proxies = {"http": None, "https": None}
+    if alermanager_password == '':
+        alermanager_password = alermanager_password_old
+    response = requests.get(
+        '{0}://{1}:15011/'.format(proto, IP),
+        proxies=proxies,
+        auth=('alertmanager', alermanager_password))
+    assert response.status_code == 200, (
+        'Issues with accessing public alert manager ui on {}:\n{}'.format(
+            IP, response.text)
+    )
+    assert response.content.find('<title>Alertmanager</title>') > -1, (
         'Public AlertManager page is not reachable on {} '
         'from ctl nodes'.format(url)
     )
