diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/9.4_plus/tests.json b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/9.4_plus/tests.json
index 4f6fcfb..2ca0917 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/9.4_plus/tests.json
+++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/9.4_plus/tests.json
@@ -10,7 +10,8 @@
         "schema": "test_extension_schema",
         "version": "1.0"
       },
-      "expected_sql_file": "create_extension_with_all_options.sql"
+      "expected_sql_file": "create_extension_with_all_options.sql",
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='sslinfo' and e2.version='1.0';"
     },
     {
       "type": "alter",
@@ -20,13 +21,15 @@
       "data": {
         "schema": "public"
       },
-      "expected_sql_file": "alter_extension_schema.sql"
+      "expected_sql_file": "alter_extension_schema.sql",
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='sslinfo' and e2.version='1.0';"
     },
     {
       "type": "delete",
       "name": "Drop Extension with all options",
       "endpoint": "NODE-extension.obj_id",
-      "data": {}
+      "data": {},
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='sslinfo' and e2.version='1.0';"
     },
     {
       "type": "create",
@@ -37,7 +40,8 @@
         "name": "citext",
         "version": "1.0"
       },
-      "expected_sql_file": "create_extension_with_default_schema.sql"
+      "expected_sql_file": "create_extension_with_default_schema.sql",
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='citext' and e2.version='1.0';"
     },
     {
       "type": "alter",
@@ -47,13 +51,15 @@
       "data": {
         "version": "1.1"
       },
-      "expected_sql_file": "alter_extension_version.sql"
+      "expected_sql_file": "alter_extension_version.sql",
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='citext' and e2.version='1.1';"
     },
     {
       "type": "delete",
       "name": "Drop Extension default schema",
       "endpoint": "NODE-extension.obj_id",
-      "data": {}
+      "data": {},
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='citext' and e2.version='1.1';"
     }
   ]
 }
diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/9.5_plus/tests.json b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/9.5_plus/tests.json
index bee44eb..db8452a 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/9.5_plus/tests.json
+++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/9.5_plus/tests.json
@@ -10,7 +10,8 @@
         "schema": "test_extension_schema",
         "version": "1.0"
       },
-      "expected_sql_file": "create_extension_with_all_options.sql"
+      "expected_sql_file": "create_extension_with_all_options.sql",
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='sslinfo' and e2.version='1.0';"
     },
     {
       "type": "alter",
@@ -20,13 +21,15 @@
       "data": {
         "schema": "public"
       },
-      "expected_sql_file": "alter_extension_schema.sql"
+      "expected_sql_file": "alter_extension_schema.sql",
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='sslinfo' and e2.version='1.0';"
     },
     {
       "type": "delete",
       "name": "Drop Extension with all options",
       "endpoint": "NODE-extension.obj_id",
-      "data": {}
+      "data": {},
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='sslinfo' and e2.version='1.0';"
     }
   ]
 }
diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/9.6_plus/tests.json b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/9.6_plus/tests.json
index e50ee24..44fb0ec 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/9.6_plus/tests.json
+++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/9.6_plus/tests.json
@@ -10,7 +10,8 @@
         "schema": "test_extension_schema",
         "version": "1.2"
       },
-      "expected_sql_file": "create_extension_with_all_options.sql"
+      "expected_sql_file": "create_extension_with_all_options.sql",
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='sslinfo' and e2.version='1.2';"
     },
     {
       "type": "alter",
@@ -20,13 +21,15 @@
       "data": {
         "schema": "public"
       },
-      "expected_sql_file": "alter_extension_schema.sql"
+      "expected_sql_file": "alter_extension_schema.sql",
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='sslinfo' and e2.version='1.2';"
     },
     {
       "type": "delete",
       "name": "Drop Extension with all options",
       "endpoint": "NODE-extension.obj_id",
-      "data": {}
+      "data": {},
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='sslinfo' and e2.version='1.2';"
     },
     {
       "type": "create",
@@ -37,7 +40,8 @@
         "name": "adminpack",
         "version": "1.0"
       },
-      "expected_sql_file": "create_extension_with_default_schema.sql"
+      "expected_sql_file": "create_extension_with_default_schema.sql",
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='adminpack' and e2.version='1.0';"
     },
     {
       "type": "alter",
@@ -47,13 +51,15 @@
       "data": {
         "version": "1.1"
       },
-      "expected_sql_file": "alter_extension_version.sql"
+      "expected_sql_file": "alter_extension_version.sql",
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='adminpack' and e2.version='1.0';"
     },
     {
       "type": "delete",
       "name": "Drop Extension default schema",
       "endpoint": "NODE-extension.obj_id",
-      "data": {}
+      "data": {},
+      "precondition_sql": "select count(e1.name) \nfrom pg_available_extensions e1, pg_available_extension_versions e2\nwhere e1.name = e2.name and e1.name='adminpack' and e2.version='1.0';"
     }
   ]
 }
diff --git a/web/regression/re_sql/tests/test_resql.py b/web/regression/re_sql/tests/test_resql.py
index 56a98fa..490e02a 100644
--- a/web/regression/re_sql/tests/test_resql.py
+++ b/web/regression/re_sql/tests/test_resql.py
@@ -178,6 +178,11 @@ class ReverseEngineeredSQLTestCases(BaseTestGenerator):
         object_id = None
 
         for scenario in scenarios:
+            if 'precondition_sql' in scenario and \
+                    not self.check_precondition(scenario['precondition_sql']):
+                print(scenario['name'] + "... skipped")
+                continue
+
             if 'type' in scenario and scenario['type'] == 'create':
                 # Get the url and create the specific node.
 
@@ -451,3 +456,22 @@ class ReverseEngineeredSQLTestCases(BaseTestGenerator):
                 return False
 
         return True
+
+    def check_precondition(self, precondition_sql):
+        """
+        This method executes precondition_sql and returns appropriate result
+        :param precondition_sql: SQL query in format select count(*) from ...
+        :return: True/False depending on precondition_sql result
+        """
+        precondition_flag = False
+        self.get_db_connection()
+        pg_cursor = self.connection.cursor()
+        try:
+            pg_cursor.execute(precondition_sql)
+            precondition_result = pg_cursor.fetchone()
+            if len(precondition_result) >= 1 and precondition_result[0] == '1':
+                precondition_flag = True
+        except Exception as e:
+            traceback.print_exc()
+        pg_cursor.close()
+        return precondition_flag
