From 6b6d3369b31547f5042428a579aa92a1726ba7b5 Mon Sep 17 00:00:00 2001 From: Khushboo Vashi Date: Fri, 23 Jun 2017 14:07:31 +0100 Subject: [PATCH] Wait for the Tools menu to be populated when running the feature tests, instead of failing. Fix by Khushboo, based on Harshal's previous work. --- .../pg_datatype_validation_test.py | 4 +-- .../feature_tests/query_tool_journey_test.py | 5 +--- .../feature_tests/view_data_dml_queries.py | 1 - web/regression/feature_utils/pgadmin_page.py | 27 +++++++++++++++++++ 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/web/pgadmin/feature_tests/pg_datatype_validation_test.py b/web/pgadmin/feature_tests/pg_datatype_validation_test.py index dff5c4881..848387689 100644 --- a/web/pgadmin/feature_tests/pg_datatype_validation_test.py +++ b/web/pgadmin/feature_tests/pg_datatype_validation_test.py @@ -102,9 +102,7 @@ class PGDataypeFeatureTest(BaseFeatureTest): r'\336\255\276\357', r'{"\\336\\255\\276\\357","\\336\\255\\276\\357"}' ] - self.page.driver.find_element_by_link_text("Tools").click() - self.page.find_by_partial_link_text("Query Tool").click() - + self.page.open_query_tool() self.page.fill_codemirror_area_with(query) self.page.find_by_id("btn-flash").click() wait = WebDriverWait(self.page.driver, 5) diff --git a/web/pgadmin/feature_tests/query_tool_journey_test.py b/web/pgadmin/feature_tests/query_tool_journey_test.py index 8d49fc104..76152fdde 100644 --- a/web/pgadmin/feature_tests/query_tool_journey_test.py +++ b/web/pgadmin/feature_tests/query_tool_journey_test.py @@ -87,10 +87,7 @@ class QueryToolJourneyTest(BaseFeatureTest): self.page.toggle_open_tree_item(self.server['name']) self.page.toggle_open_tree_item('Databases') self.page.toggle_open_tree_item('acceptance_test_db') - time.sleep(5) - self.page.find_by_partial_link_text("Tools").click() - self.page.find_by_partial_link_text("Query Tool").click() - self.page.click_tab('Query -') + self.page.open_query_tool() time.sleep(5) def _execute_query(self, query): diff --git a/web/pgadmin/feature_tests/view_data_dml_queries.py b/web/pgadmin/feature_tests/view_data_dml_queries.py index 0d1a1dc55..55b45ad14 100644 --- a/web/pgadmin/feature_tests/view_data_dml_queries.py +++ b/web/pgadmin/feature_tests/view_data_dml_queries.py @@ -95,7 +95,6 @@ CREATE TABLE public.defaults self.page.wait_for_spinner_to_disappear() self.page.add_server(self.server) self._tables_node_expandable() - self.driver.switch_to.default_content() self.page.select_tree_item('defaults') # Open Object -> View data self._view_data_grid() diff --git a/web/regression/feature_utils/pgadmin_page.py b/web/regression/feature_utils/pgadmin_page.py index bb111a1df..c61663a33 100644 --- a/web/regression/feature_utils/pgadmin_page.py +++ b/web/regression/feature_utils/pgadmin_page.py @@ -62,6 +62,33 @@ class PgadminPage: self.find_by_xpath("//*[@id='tree']//*[.='" + server_config['name'] + "']") + def open_query_tool(self): + self.driver.find_element_by_link_text("Tools").click() + tools_menu = self.driver.find_element_by_id('mnu_tools') + + # Query Tool is first li + query_tool = tools_menu.find_element_by_tag_name('li') + + self.enable_menu_item(query_tool, 10) + + self.find_by_partial_link_text("Query Tool").click() + self.click_tab('Query -') + + def enable_menu_item(self, menu_item, wait_time): + start_time = time.time() + # wait until menu becomes enabled. + while time.time() - start_time < wait_time: # wait_time seconds + # if menu is disabled then it will have + # two classes 'menu-item disabled'. + # And if menu is enabled the it will have + # only one class 'menu-item'. + + if 'menu-item' == str(menu_item.get_attribute('class')): + break + time.sleep(0.1) + else: + assert False, "'Tools -> Query Tool' menu did not enable." + def close_query_tool(self): self.driver.switch_to.default_content() tab = self.find_by_xpath("//*[contains(@class,'wcPanelTab') and contains(.,'" + "Query" + "')]")