diff --git a/web/pgadmin/feature_tests/pg_datatype_validation_test.py b/web/pgadmin/feature_tests/pg_datatype_validation_test.py
index 5a49f7b91..f039bae75 100644
--- a/web/pgadmin/feature_tests/pg_datatype_validation_test.py
+++ b/web/pgadmin/feature_tests/pg_datatype_validation_test.py
@@ -81,67 +81,83 @@ class PGDataypeFeatureTest(BaseFeatureTest):
         connection.close()
 
     def _update_preferences(self):
-        file_menu = self.page.find_by_css_selector(
-            NavMenuLocators.file_menu_css)
-        file_menu.click()
-
-        self.page.retry_click(
-            (By.CSS_SELECTOR, NavMenuLocators.preference_menu_item_css),
-            (By.XPATH, NavMenuLocators.specified_preference_tree_node
-             .format('Browser'))
-        )
-
-        wait = WebDriverWait(self.page.driver, 10)
-
-        browser_node = self.page.find_by_xpath(
-            NavMenuLocators.specified_preference_tree_node.format('Browser'))
-        if self.page.find_by_xpath(
-            NavMenuLocators.specified_pref_node_exp_status.
-                format('Browser')).get_attribute('aria-expanded') == 'false':
-            ActionChains(self.driver).double_click(browser_node).perform()
-
-        self.page.retry_click(
-            (By.XPATH, NavMenuLocators.specified_sub_node_of_pref_tree_node.
-             format('Browser', 'Display')),
-            (By.XPATH, NavMenuLocators.show_system_objects_pref_label_xpath))
-
-        # Wait till the preference dialogue box is displayed by checking the
-        # visibility of Show System Object label
-        wait.until(EC.presence_of_element_located(
-            (By.XPATH, NavMenuLocators.show_system_objects_pref_label_xpath))
-        )
-
-        maximize_button = self.page.find_by_xpath(
-            NavMenuLocators.maximize_pref_dialogue_css)
-        maximize_button.click()
-
-        specified_preference_tree_node_name = 'Query Tool'
-        sql_editor = self.page.find_by_xpath(
-            NavMenuLocators.specified_preference_tree_node.
-            format(specified_preference_tree_node_name))
-        if self.page.find_by_xpath(
-            NavMenuLocators.specified_pref_node_exp_status.
-                format(specified_preference_tree_node_name)).\
-                get_attribute('aria-expanded') == 'false':
-            ActionChains(self.driver).double_click(sql_editor).perform()
-
-        option_node = \
-            self.page.find_by_xpath("//*[@id='treeContainer']"
-                                    "//div//span[text()='Editor']")
-        option_node.click()
-
-        switch_box_element = self.page.find_by_xpath(
-            NavMenuLocators.insert_bracket_pair_switch_btn)
-
-        switch_box_element.click()
-
-        maximize_button = self.page.find_by_xpath(
-            NavMenuLocators.maximize_pref_dialogue_css)
-        maximize_button.click()
-        time.sleep(0.5)
-
-        # save and close the preference dialog.
-        self.page.click_modal('Save', react_dialog=True)
+        retry = 2
+        while retry > 0:
+            try:
+                file_menu = self.page.find_by_css_selector(
+                    NavMenuLocators.file_menu_css)
+                file_menu.click()
+
+                self.page.retry_click(
+                    (By.CSS_SELECTOR,
+                     NavMenuLocators.preference_menu_item_css),
+                    (By.XPATH,
+                     NavMenuLocators.specified_preference_tree_node
+                     .format('Browser'))
+                )
+
+                wait = WebDriverWait(self.page.driver, 10)
+
+                browser_node = self.page.find_by_xpath(
+                    NavMenuLocators.specified_preference_tree_node.
+                    format('Browser'))
+                if self.page.find_by_xpath(
+                    NavMenuLocators.specified_pref_node_exp_status.
+                        format('Browser')).\
+                        get_attribute('aria-expanded') == 'false':
+                    ActionChains(self.driver).\
+                        double_click(browser_node).perform()
+
+                self.page.retry_click(
+                    (By.XPATH, NavMenuLocators.
+                     specified_sub_node_of_pref_tree_node.
+                     format('Browser', 'Display')),
+                    (By.XPATH,
+                     NavMenuLocators.show_system_objects_pref_label_xpath))
+
+                # Wait till the preference dialogue
+                # box is displayed by checking the
+                # visibility of Show System Object label
+                wait.until(EC.presence_of_element_located(
+                    (By.XPATH,
+                     NavMenuLocators.show_system_objects_pref_label_xpath))
+                )
+
+                maximize_button = self.page.find_by_xpath(
+                    NavMenuLocators.maximize_pref_dialogue_css)
+                maximize_button.click()
+
+                specified_preference_tree_node_name = 'Query Tool'
+                sql_editor = self.page.find_by_xpath(
+                    NavMenuLocators.specified_preference_tree_node.
+                    format(specified_preference_tree_node_name))
+                if self.page.find_by_xpath(
+                    NavMenuLocators.specified_pref_node_exp_status.
+                        format(specified_preference_tree_node_name)).\
+                        get_attribute('aria-expanded') == 'false':
+                    ActionChains(self.driver).\
+                        double_click(sql_editor).perform()
+
+                option_node = \
+                    self.page.find_by_xpath("//*[@id='treeContainer']"
+                                            "//div//span[text()='Editor']")
+                option_node.click()
+
+                switch_box_element = self.page.find_by_xpath(
+                    NavMenuLocators.insert_bracket_pair_switch_btn)
+
+                switch_box_element.click()
+
+                maximize_button = self.page.find_by_xpath(
+                    NavMenuLocators.maximize_pref_dialogue_css)
+                maximize_button.click()
+                time.sleep(0.5)
+
+                # save and close the preference dialog.
+                self.page.click_modal('Save', react_dialog=True)
+                break
+            except Exception:
+                retry -= 1
 
     def _create_enum_type(self):
         query = """CREATE TYPE public.rainbow AS ENUM ('red', 'orange',
diff --git a/web/pgadmin/feature_tests/query_tool_journey_test.py b/web/pgadmin/feature_tests/query_tool_journey_test.py
index 36521a086..2f907bd01 100644
--- a/web/pgadmin/feature_tests/query_tool_journey_test.py
+++ b/web/pgadmin/feature_tests/query_tool_journey_test.py
@@ -452,32 +452,37 @@ class QueryToolJourneyTest(BaseFeatureTest):
         # first column is rownum
         enumerated_should_be_editable = enumerate(cols_should_be_editable, 2)
 
-        import time
-        time.sleep(0.5)
         for column_index, should_be_editable in enumerated_should_be_editable:
             is_editable = self._check_cell_editable(column_index)
             self.assertEqual(is_editable, should_be_editable)
 
     def _check_cell_editable(self, cell_index):
         """Checks if a cell in the first row of the resultset is editable"""
-        cell_el = self.page.find_by_css_selector(
-            QueryToolLocators.output_row_col.format(2, cell_index))
-
-        # Get existing value
-        cell_value = int(cell_el.text)
-        new_value = cell_value + 1
-        # Try to update value
-        cell_el.click()
-        ActionChains(self.driver).double_click(cell_el).perform()
-        ActionChains(self.driver).send_keys(new_value). \
-            send_keys(Keys.ENTER).perform()
-        time.sleep(0.5)
-        # Check if the value was updated
-        # Finding element again to avoid stale element reference exception
-        cell_el = self.page.\
-            find_by_css_selector(QueryToolLocators.
-                                 output_row_col.format(2, cell_index))
-        return int(cell_el.text) == new_value
+        retry = 2
+        while retry > 0:
+            try:
+                cell_el = self.page.find_by_css_selector(
+                    QueryToolLocators.output_row_col.format(2, cell_index))
+                # Get existing value
+                cell_value = int(cell_el.text)
+                new_value = cell_value + 1
+                # Try to update value
+                ActionChains(self.driver).double_click(cell_el).perform()
+                ActionChains(self.driver).send_keys(new_value).perform()
+                ActionChains(self.driver).send_keys(Keys.TAB).perform()
+                time.sleep(0.5)
+                # Check if the value was updated
+                # Finding element again to avoid stale element
+                # reference exception
+                cell_el = self.page. \
+                    find_by_css_selector(QueryToolLocators.
+                                         output_row_col.format(2, cell_index))
+                return int(cell_el.text) == new_value
+            except Exception as e:
+                print('Exception while reading cell value', file=sys.stderr)
+                retry -= 1
+                if retry == 0:
+                    raise Exception(e)
 
     def _check_can_add_row(self):
         return self.page.check_if_element_exist_by_xpath(
diff --git a/web/pgadmin/feature_tests/test_data.json b/web/pgadmin/feature_tests/test_data.json
index bdbc428e7..0723d772c 100644
--- a/web/pgadmin/feature_tests/test_data.json
+++ b/web/pgadmin/feature_tests/test_data.json
@@ -1,7 +1,7 @@
 {
   "comment": {
     "sample_test_case": {
-      "colno": ["value to set", "value to verfiy", "data type"]
+      "colno": ["value to set", "value to verify", "data type"]
     }
   },
   "table_insert_update_cases": {
@@ -16,9 +16,9 @@
       "8": ["", "[null]", "text"],
       "9": ["", "[51, 52]", "json"],
       "10": ["[61,62]", "[61,62]", "json"],
-      "11": ["", "true", "bool"],
+      "11": ["true", "true", "bool"],
       "12": ["", "[null]", "bool"],
-      "13": ["", "false", "bool"],
+      "13": ["false", "false", "bool"],
       "14": ["", "[null]", "text[]"],
       "15": ["{}", "{}", "text[]"],
       "16": ["{data,NULL,'',\"\"}", "{data,NULL,'',\"\"}", "text[]"],
diff --git a/web/pgadmin/feature_tests/view_data_dml_queries.py b/web/pgadmin/feature_tests/view_data_dml_queries.py
index 1c288664d..19ed5bc21 100644
--- a/web/pgadmin/feature_tests/view_data_dml_queries.py
+++ b/web/pgadmin/feature_tests/view_data_dml_queries.py
@@ -9,6 +9,7 @@
 
 import json
 import os
+import sys
 import time
 import traceback
 
@@ -161,9 +162,6 @@ CREATE TABLE public.nonintpkey
         config_data = config_data_json[config_key]
 
     def _perform_test_for_table(self, table_name, config_data_local):
-        # self.page.click_a_tree_node(
-        #     table_name,
-        #     TreeAreaLocators.sub_nodes_of_tables_node)
         table_node = self.page.check_if_element_exists_with_scroll(
             TreeAreaLocators.table_node(table_name))
         table_node.click()
@@ -220,76 +218,129 @@ CREATE TABLE public.nonintpkey
         Returns: None
 
         """
-        self.wait.until(EC.visibility_of_element_located(
-            (By.XPATH, xpath)), CheckForViewDataTest.TIMEOUT_STRING
-        )
-        cell_el = self.page.find_by_xpath(xpath)
-        self.page.driver.execute_script("arguments[0].scrollIntoView(false)",
-                                        cell_el)
-        cell_el.click()
-        ActionChains(self.driver).move_to_element(cell_el).double_click(
-            cell_el
-        ).perform()
-        cell_type = data[2]
-        value = data[0]
+        retry = 2
+        while retry > 0:
+            self.wait.until(EC.visibility_of_element_located(
+                (By.XPATH, xpath)), CheckForViewDataTest.TIMEOUT_STRING
+            )
+            cell_el = self.page.find_by_xpath(xpath)
+            self.page.driver.execute_script(
+                "arguments[0].scrollIntoView(false)", cell_el)
+            ActionChains(self.driver).move_to_element(cell_el).\
+                double_click(cell_el).perform()
+            cell_type = data[2]
+            value = data[0]
+
+            if cell_type in ['int', 'int[]'] and \
+                    self._update_numeric_cell(cell_el, value):
+                break
+            elif cell_type in ['text', 'text[]', 'boolean[]'] and \
+                    self._update_text_cell(cell_el, value):
+                break
+            elif cell_type in ['json', 'jsonb'] and \
+                    self._update_json_cell(cell_el, value):
+                retry = 0
+            elif cell_type in ['bool'] and \
+                    self._update_boolean_cell(cell_el, value):
+                retry = 0
+            else:
+                print('Unable to update cell in try ' + str(retry),
+                      file=sys.stderr)
+                retry -= 1
 
-        if cell_type in ['int', 'int[]']:
+    def _update_numeric_cell(self, cell_el, value):
+        try:
             if value == 'clear':
                 cell_el.find_element(By.CSS_SELECTOR, 'input').clear()
             else:
                 ActionChains(self.driver).send_keys(value). \
-                    send_keys(Keys.ENTER).perform()
-        elif cell_type in ['text', 'text[]', 'boolean[]']:
-            retry = 2
-            text_area_ele = None
-            while retry > 0:
-                try:
-                    text_area_ele = WebDriverWait(self.driver, 2).until(
-                        EC.visibility_of_element_located(
-                            (By.CSS_SELECTOR,
-                             QueryToolLocators.row_editor_text_area_css)))
-                    retry = 0
-                except Exception:
-                    ActionChains(self.driver).move_to_element(cell_el).\
-                        double_click(cell_el).perform()
-                    retry -= 1
-            self.assertIsNotNone(text_area_ele, 'Text editor did not open.')
-            text_area_ele.clear()
-            text_area_ele.click()
-            text_area_ele.send_keys(value)
-            # Click on editor's Save button
-            self.page.find_by_css_selector(
-                QueryToolLocators.text_editor_ok_btn_css).click()
-        elif cell_type in ['json', 'jsonb']:
-            platform = 'mac'
-            if "platform" in self.driver.capabilities:
-                platform = (self.driver.capabilities["platform"]).lower()
-            elif "platformName" in self.driver.capabilities:
-                platform = (self.driver.capabilities["platformName"]).lower()
-            if 'mac' in platform:
-                key_to_press = Keys.COMMAND
-            else:
-                key_to_press = Keys.CONTROL
-            actions = ActionChains(self.driver)
-            # actions.move_to_element(jsoneditor_area_ele).click().perform()
-            actions.key_down(key_to_press).send_keys('a').key_up(key_to_press)\
-                .send_keys(Keys.DELETE).perform()
-            actions.send_keys(value) .perform()
-            # Click on editor's Save button
-            self.page.find_by_css_selector(
-                QueryToolLocators.text_editor_ok_btn_css).click()
+                    send_keys(Keys.TAB).perform()
+            return True
+        except Exception:
+            print('Exception occurred while updating int cell',
+                  file=sys.stderr)
+            return False
+
+    def _update_text_cell(self, cell_el, value):
+        retry = 2
+        while retry > 0:
+            try:
+                text_area_ele = WebDriverWait(self.driver, 2).until(
+                    EC.visibility_of_element_located(
+                        (By.CSS_SELECTOR,
+                         QueryToolLocators.row_editor_text_area_css)))
+                text_area_ele.clear()
+                text_area_ele.click()
+                text_area_ele.send_keys(value)
+                # Click on editor's Save button
+                self.page.find_by_css_selector(
+                    QueryToolLocators.text_editor_ok_btn_css).click()
+                return True
+            except Exception:
+                print('Exception occurred while updating text cell',
+                      file=sys.stderr)
+                ActionChains(self.driver).move_to_element(cell_el). \
+                    double_click(cell_el).perform()
+                retry -= 1
+        return False
+
+    def _update_json_cell(self, cell_el, value):
+        platform = 'mac'
+        if "platform" in self.driver.capabilities:
+            platform = (self.driver.capabilities["platform"]).lower()
+        elif "platformName" in self.driver.capabilities:
+            platform = (self.driver.capabilities["platformName"]).lower()
+        if 'mac' in platform:
+            key_to_press = Keys.COMMAND
         else:
-            # Boolean editor test for to True click
-            checkbox_el = self.page.find_by_css_selector(
-                QueryToolLocators.row_editor_checkbox_css)
-            if data[1] == 'true':
-                checkbox_el.click()
-            # Boolean editor test for to False click
-            elif data[1] == 'false':
-                # Sets true
-                checkbox_el.click()
-                # Sets false
-                ActionChains(self.driver).click(checkbox_el).perform()
+            key_to_press = Keys.CONTROL
+        retry = 2
+        while retry > 0:
+            try:
+                WebDriverWait(self.driver, 2).until(
+                    EC.visibility_of_element_located(
+                        (By.CSS_SELECTOR,
+                         QueryToolLocators.json_editor_text_area_css)))
+                actions = ActionChains(self.driver)
+                actions.key_down(key_to_press).send_keys('a').\
+                    key_up(key_to_press).send_keys(Keys.DELETE).perform()
+                actions.send_keys(value).perform()
+                # Click on editor's Save button
+                self.page.find_by_css_selector(
+                    QueryToolLocators.text_editor_ok_btn_css).click()
+                return True
+            except Exception:
+                print('Exception occurred while updating json cell',
+                      file=sys.stderr)
+                ActionChains(self.driver).move_to_element(cell_el). \
+                    double_click(cell_el).perform()
+                retry -= 1
+        return False
+
+    def _update_boolean_cell(self, cell_el, value):
+        # Boolean editor test for to True click
+        retry = 2
+        while retry > 0:
+            try:
+                checkbox_el = self.page.find_by_css_selector(
+                    QueryToolLocators.row_editor_checkbox_css)
+                if value == 'true':
+                    checkbox_el.click()
+                # Boolean editor test for to False click
+                elif value == 'false':
+                    # Sets true
+                    checkbox_el.click()
+                    # Sets false
+                    ActionChains(self.driver).click(checkbox_el).perform()
+                    ActionChains(self.driver).send_keys(Keys.TAB).perform()
+                return True
+            except Exception:
+                print('Exception occurred while updating boolean cell',
+                      file=sys.stderr)
+                ActionChains(self.driver).move_to_element(cell_el). \
+                    double_click(cell_el).perform()
+                retry -= 1
+        return False
 
     def _view_data_grid(self, table_name):
         self.page.driver.find_element(By.LINK_TEXT, "Object").click()
diff --git a/web/regression/feature_utils/pgadmin_page.py b/web/regression/feature_utils/pgadmin_page.py
index 8a0e15955..11c9a49cf 100644
--- a/web/regression/feature_utils/pgadmin_page.py
+++ b/web/regression/feature_utils/pgadmin_page.py
@@ -354,14 +354,18 @@ class PgadminPage:
         """
         retry = 2
         while retry > 0:
-            webdriver.ActionChains(self.driver).double_click(
-                tree_node_web_element).perform()
-            if self.check_if_element_exist_by_xpath(tree_node_exp_check_xpath):
-                return True
-            elif retry == 1:
-                return False
-            else:
-                time.sleep(1)
+            try:
+                webdriver.ActionChains(self.driver).double_click(
+                    tree_node_web_element).perform()
+                if self.check_if_element_exist_by_xpath(
+                        tree_node_exp_check_xpath):
+                    return True
+                elif retry == 1:
+                    return False
+                else:
+                    time.sleep(1)
+                    retry -= 1
+            except Exception:
                 retry -= 1
 
     def expand_server_group_node(self, server_group_name):
@@ -418,6 +422,8 @@ class PgadminPage:
                     self.js_executor_scrollintoview_arg, server_node)
                 if self.check_if_element_exist_by_xpath(
                         server_node_exp_status_xpath, 2):
+                    # sleep for a while to expand tree completely
+                    time.sleep(0.4)
                     server_expanded = True
                 else:
                     server_expanded = self.click_expand_server_node(
