diff --git a/repair_tests/preview_repair_test.py b/repair_tests/preview_repair_test.py
index 5333315..df03b36 100644
--- a/repair_tests/preview_repair_test.py
+++ b/repair_tests/preview_repair_test.py
@@ -7,6 +7,7 @@
 from dtest import Tester, create_ks
 from repair_tests.incremental_repair_test import assert_parent_repair_session_count
 from tools.data import create_c1c2_table
+from tools.jmxutils import make_mbean, JolokiaAgent
 
 since = pytest.mark.since
 
@@ -14,12 +15,6 @@
 @since('4.0')
 class TestPreviewRepair(Tester):
 
-    def assert_no_repair_history(self, session):
-        rows = session.execute("select * from system_distributed.repair_history")
-        assert rows.current_rows == []
-        rows = session.execute("select * from system_distributed.parent_repair_history")
-        assert rows.current_rows == []
-
     @since('4.0')
     def test_parent_repair_session_cleanup(self):
         """
@@ -51,7 +46,8 @@
         # everything should be in sync
         result = node1.repair(options=['ks', '--preview'])
         assert "Previewed data was in sync" in result.stdout
-        self.assert_no_repair_history(session)
+        assert_no_repair_history(session)
+        assert preview_failure_count(node1) == 0
 
         # make data inconsistent between nodes
         stmt = SimpleStatement("INSERT INTO ks.tbl (k,v) VALUES (%s, %s)")
@@ -79,16 +75,18 @@
         result = node1.repair(options=['ks', '--preview'])
         assert "Total estimated streaming" in result.stdout
         assert "Previewed data was in sync" not in result.stdout
+        assert preview_failure_count(node1) == 1
 
         result = node1.repair(options=['ks', '--preview', '--full'])
         assert "Total estimated streaming" in result.stdout
         assert "Previewed data was in sync" not in result.stdout
+        assert preview_failure_count(node1) == 2
 
         # repaired data should be in sync anyway
         result = node1.repair(options=['ks', '--validate'])
         assert "Repaired data is in sync" in result.stdout
 
-        self.assert_no_repair_history(session)
+        assert_no_repair_history(session)
 
         # repair the data...
         node1.repair(options=['ks'])
@@ -98,9 +96,28 @@
         # ...and everything should be in sync
         result = node1.repair(options=['ks', '--preview'])
         assert "Previewed data was in sync" in result.stdout
+        # data is repaired, previewFailure metric should remain same
+        assert preview_failure_count(node1) == 2
 
         result = node1.repair(options=['ks', '--preview', '--full'])
         assert "Previewed data was in sync" in result.stdout
+        assert preview_failure_count(node1) == 2
 
         result = node1.repair(options=['ks', '--validate'])
         assert "Repaired data is in sync" in result.stdout
+
+        assert preview_failure_count(node2) == 0
+        assert preview_failure_count(node3) == 0
+
+
+def assert_no_repair_history(session):
+    rows = session.execute("select * from system_distributed.repair_history")
+    assert rows.current_rows == []
+    rows = session.execute("select * from system_distributed.parent_repair_history")
+    assert rows.current_rows == []
+
+
+def preview_failure_count(node):
+    mbean = make_mbean('metrics', type='Repair', name='PreviewFailures')
+    with JolokiaAgent(node) as jmx:
+        return jmx.read_attribute(mbean, 'Count')
