mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Fixed feature tests.
Changes included: 1. Created function for traversing the browser tree. 2. Fixed some synchronization issues. 3. Modified locators. 4. Test cases fix for the recent commits.
This commit is contained in:
committed by
Akshay Joshi
parent
ea0c077180
commit
b48121335c
@@ -47,7 +47,7 @@ class BrowserToolBarFeatureTest(BaseFeatureTest):
|
||||
file=sys.stderr, end="")
|
||||
self.test_view_data_tool_button()
|
||||
print("OK.", file=sys.stderr)
|
||||
|
||||
#
|
||||
# Check for filtered rows button
|
||||
print("\nFiltered Rows ToolBar Button ",
|
||||
file=sys.stderr, end="")
|
||||
@@ -60,9 +60,9 @@ class BrowserToolBarFeatureTest(BaseFeatureTest):
|
||||
self.test_table_name)
|
||||
|
||||
def test_query_tool_button(self):
|
||||
self.page.toggle_open_tree_item(self.server['name'])
|
||||
self.page.toggle_open_tree_item('Databases')
|
||||
self.page.toggle_open_tree_item(self.test_db)
|
||||
self.page.expand_database_node(
|
||||
self.server['name'],
|
||||
self.server['db_password'], self.test_db)
|
||||
self.page.retry_click(
|
||||
(By.CSS_SELECTOR,
|
||||
BrowserToolBarLocators.open_query_tool_button_css),
|
||||
@@ -70,9 +70,12 @@ class BrowserToolBarFeatureTest(BaseFeatureTest):
|
||||
|
||||
def test_view_data_tool_button(self):
|
||||
self.page.select_tree_item(self.test_db)
|
||||
self.page.toggle_open_tree_item('Schemas')
|
||||
self.page.toggle_open_tree_item('public')
|
||||
self.page.toggle_open_tables_node()
|
||||
self.page.toggle_open_schema_node(
|
||||
self.server['name'], self.server['db_password'],
|
||||
self.test_db, 'public')
|
||||
self.page.toggle_open_tables_node(
|
||||
self.server['name'], self.server['db_password'],
|
||||
self.test_db, 'public')
|
||||
self.page.select_tree_item(self.test_table_name)
|
||||
|
||||
self.page.retry_click(
|
||||
|
||||
@@ -39,9 +39,9 @@ class CopySelectedQueryResultsFeatureTest(BaseFeatureTest):
|
||||
self.server, self.test_db, self.test_table_name)
|
||||
|
||||
def runTest(self):
|
||||
self.page.toggle_open_tree_item(self.server['name'])
|
||||
self.page.toggle_open_tree_item('Databases')
|
||||
self.page.toggle_open_tree_item(self.test_db)
|
||||
self.page.expand_database_node(
|
||||
self.server['name'],
|
||||
self.server['db_password'], self.test_db)
|
||||
self.page.open_query_tool()
|
||||
|
||||
self.page.fill_codemirror_area_with(
|
||||
@@ -70,7 +70,7 @@ class CopySelectedQueryResultsFeatureTest(BaseFeatureTest):
|
||||
QueryToolLocators.copy_button_css)
|
||||
copy_button.click()
|
||||
|
||||
self.assertEqual('"Some-Name"\t"6"\t"some info"',
|
||||
self.assertEqual('"Some-Name"\t6\t"some info"',
|
||||
pyperclip.paste())
|
||||
|
||||
def _copies_rows_with_header(self):
|
||||
@@ -87,9 +87,9 @@ class CopySelectedQueryResultsFeatureTest(BaseFeatureTest):
|
||||
copy_button.click()
|
||||
|
||||
self.assertEqual("""\"some_column"\t"value"\t"details"
|
||||
\"Some-Name"\t"6"\t"some info"
|
||||
\"Some-Other-Name"\t"22"\t"some other info"
|
||||
\"Yet-Another-Name"\t"14"\t"cool info\"""", pyperclip.paste())
|
||||
\"Some-Name"\t6\t"some info"
|
||||
\"Some-Other-Name"\t22\t"some other info"
|
||||
\"Yet-Another-Name"\t14\t"cool info\"""", pyperclip.paste())
|
||||
|
||||
def _copies_columns(self):
|
||||
pyperclip.copy("old clipboard contents")
|
||||
@@ -116,7 +116,7 @@ class CopySelectedQueryResultsFeatureTest(BaseFeatureTest):
|
||||
ActionChains(self.page.driver).key_down(
|
||||
Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
|
||||
|
||||
self.assertEqual('"Some-Name"\t"6"\t"some info"',
|
||||
self.assertEqual('"Some-Name"\t6\t"some info"',
|
||||
pyperclip.paste())
|
||||
|
||||
def _copies_column_using_keyboard_shortcut(self):
|
||||
@@ -154,8 +154,8 @@ class CopySelectedQueryResultsFeatureTest(BaseFeatureTest):
|
||||
self.page.driver
|
||||
).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
|
||||
|
||||
self.assertEqual("""\"Some-Other-Name"\t"22"
|
||||
"Yet-Another-Name"\t"14\"""", pyperclip.paste())
|
||||
self.assertEqual(
|
||||
'"Some-Other-Name"\t22\n"Yet-Another-Name"\t14', pyperclip.paste())
|
||||
|
||||
def _shift_resizes_rectangular_selection(self):
|
||||
pyperclip.copy("old clipboard contents")
|
||||
@@ -180,8 +180,8 @@ class CopySelectedQueryResultsFeatureTest(BaseFeatureTest):
|
||||
Keys.CONTROL
|
||||
).send_keys('c').key_up(Keys.CONTROL).perform()
|
||||
|
||||
self.assertEqual("""\"Some-Other-Name"\t"22"\t"some other info"
|
||||
"Yet-Another-Name"\t"14"\t"cool info\"""", pyperclip.paste())
|
||||
self.assertEqual("""\"Some-Other-Name"\t22\t"some other info"
|
||||
"Yet-Another-Name"\t14\t"cool info\"""", pyperclip.paste())
|
||||
|
||||
def _shift_resizes_column_selection(self):
|
||||
pyperclip.copy("old clipboard contents")
|
||||
@@ -198,9 +198,7 @@ class CopySelectedQueryResultsFeatureTest(BaseFeatureTest):
|
||||
Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
|
||||
|
||||
self.assertEqual(
|
||||
"""\"Some-Name"\t"6"
|
||||
"Some-Other-Name"\t"22"
|
||||
"Yet-Another-Name"\t"14\"""",
|
||||
'"Some-Name"\t6\n"Some-Other-Name"\t22\n"Yet-Another-Name"\t14',
|
||||
pyperclip.paste())
|
||||
|
||||
def _mouseup_outside_grid_still_makes_a_selection(self):
|
||||
|
||||
@@ -60,9 +60,9 @@ class CheckFileManagerFeatureTest(BaseFeatureTest):
|
||||
print("OK.", file=sys.stderr)
|
||||
|
||||
def _navigate_to_query_tool(self):
|
||||
self.page.toggle_open_tree_item(self.server['name'])
|
||||
self.page.toggle_open_tree_item('Databases')
|
||||
self.page.toggle_open_tree_item(self.test_db)
|
||||
self.page.expand_database_node(
|
||||
self.server['name'],
|
||||
self.server['db_password'], self.test_db)
|
||||
self.page.open_query_tool()
|
||||
|
||||
def _create_new_file(self):
|
||||
|
||||
@@ -149,9 +149,9 @@ class PGDataypeFeatureTest(BaseFeatureTest):
|
||||
self.page.remove_server(self.server)
|
||||
|
||||
def _schema_node_expandable(self):
|
||||
self.page.toggle_open_tree_item(self.server['name'])
|
||||
self.page.toggle_open_tree_item('Databases')
|
||||
self.page.toggle_open_tree_item(self.test_db)
|
||||
self.page.expand_database_node(
|
||||
self.server['name'],
|
||||
self.server['db_password'], self.test_db)
|
||||
|
||||
def _check_datatype(self):
|
||||
# Slick grid does not render all the column if viewport is not enough
|
||||
|
||||
@@ -64,9 +64,9 @@ class PGUtilitiesBackupFeatureTest(BaseFeatureTest):
|
||||
test_gui_helper.close_bgprocess_popup(self)
|
||||
|
||||
def runTest(self):
|
||||
self.page.toggle_open_server(self.server['name'])
|
||||
self.page.toggle_open_tree_item('Databases')
|
||||
self.page.toggle_open_tree_item(self.database_name)
|
||||
self.page.expand_database_node(
|
||||
self.server['name'],
|
||||
self.server['db_password'], self.database_name)
|
||||
|
||||
# Backup
|
||||
self.page.retry_click(
|
||||
@@ -115,11 +115,11 @@ class PGUtilitiesBackupFeatureTest(BaseFeatureTest):
|
||||
|
||||
self.assertEquals(status, "Successfully completed.")
|
||||
|
||||
self.page.find_by_css_selector(
|
||||
NavMenuLocators.status_alertifier_more_btn_css).click()
|
||||
|
||||
self.wait.until(EC.visibility_of_element_located(
|
||||
(By.XPATH, NavMenuLocators.process_watcher_alertfier)))
|
||||
self.page.retry_click(
|
||||
(By.CSS_SELECTOR,
|
||||
NavMenuLocators.status_alertifier_more_btn_css),
|
||||
(By.XPATH,
|
||||
NavMenuLocators.process_watcher_alertfier))
|
||||
|
||||
backup_file = None
|
||||
# Check for XSS in Backup details
|
||||
@@ -143,9 +143,7 @@ class PGUtilitiesBackupFeatureTest(BaseFeatureTest):
|
||||
backup_file = command[int(command.find('--file')) +
|
||||
8:int(command.find('--host')) - 2]
|
||||
|
||||
close_btn = self.page.find_by_xpath(
|
||||
NavMenuLocators.process_watcher_close_button_xpath)
|
||||
close_btn.click()
|
||||
test_gui_helper.close_process_watcher(self)
|
||||
|
||||
# Restore
|
||||
tools_menu = self.driver.find_element_by_link_text(
|
||||
@@ -186,11 +184,11 @@ class PGUtilitiesBackupFeatureTest(BaseFeatureTest):
|
||||
|
||||
self.assertEquals(status, "Successfully completed.")
|
||||
|
||||
self.page.find_by_css_selector(
|
||||
NavMenuLocators.status_alertifier_more_btn_css).click()
|
||||
|
||||
self.wait.until(EC.visibility_of_element_located(
|
||||
(By.XPATH, NavMenuLocators.process_watcher_alertfier)))
|
||||
self.page.retry_click(
|
||||
(By.CSS_SELECTOR,
|
||||
NavMenuLocators.status_alertifier_more_btn_css),
|
||||
(By.XPATH,
|
||||
NavMenuLocators.process_watcher_alertfier))
|
||||
|
||||
# Check for XSS in Restore details
|
||||
if self.is_xss_check:
|
||||
@@ -206,9 +204,7 @@ class PGUtilitiesBackupFeatureTest(BaseFeatureTest):
|
||||
|
||||
self.assertIn("pg_restore", str(command))
|
||||
|
||||
close_watcher = self.page.find_by_xpath(
|
||||
NavMenuLocators.process_watcher_close_button_xpath)
|
||||
close_watcher.click()
|
||||
test_gui_helper.close_process_watcher(self)
|
||||
|
||||
if backup_file is not None:
|
||||
if os.path.isfile(backup_file):
|
||||
|
||||
@@ -90,20 +90,22 @@ class PGUtilitiesMaintenanceFeatureTest(BaseFeatureTest):
|
||||
self.verify_command()
|
||||
|
||||
def _open_maintenance_dialogue(self):
|
||||
self.page.toggle_open_server(self.server['name'])
|
||||
self.page.toggle_open_tree_item('Databases')
|
||||
self.page.toggle_open_tree_item(self.database_name)
|
||||
self.page.expand_database_node(
|
||||
self.server['name'],
|
||||
self.server['db_password'], self.database_name)
|
||||
if self.test_level == 'table':
|
||||
self.page.toggle_open_tree_item('Schemas')
|
||||
self.page.toggle_open_tree_item('public')
|
||||
self.page.toggle_open_tables_node()
|
||||
self.page.toggle_open_schema_node(self.server['name'],
|
||||
self.server['db_password'],
|
||||
self.database_name, 'public')
|
||||
self.page.toggle_open_tables_node(self.server['name'],
|
||||
self.server['db_password'],
|
||||
self.database_name, 'public')
|
||||
self.page.select_tree_item(self.table_name)
|
||||
|
||||
self.page.retry_click(
|
||||
(By.LINK_TEXT,
|
||||
NavMenuLocators.tools_menu_link_text),
|
||||
(By.CSS_SELECTOR, NavMenuLocators.maintenance_obj_css))
|
||||
|
||||
maintenance_obj = self.wait.until(EC.visibility_of_element_located(
|
||||
(By.CSS_SELECTOR, NavMenuLocators.maintenance_obj_css)))
|
||||
maintenance_obj.click()
|
||||
@@ -118,11 +120,12 @@ class PGUtilitiesMaintenanceFeatureTest(BaseFeatureTest):
|
||||
test_gui_helper.close_bgprocess_popup(self)
|
||||
|
||||
self.assertEquals(status, "Successfully completed.")
|
||||
self.page.find_by_css_selector(
|
||||
NavMenuLocators.status_alertifier_more_btn_css).click()
|
||||
|
||||
self.wait.until(EC.visibility_of_element_located(
|
||||
(By.XPATH, NavMenuLocators.process_watcher_alertfier)))
|
||||
self.page.retry_click(
|
||||
(By.CSS_SELECTOR,
|
||||
NavMenuLocators.status_alertifier_more_btn_css),
|
||||
(By.XPATH,
|
||||
NavMenuLocators.process_watcher_alertfier))
|
||||
|
||||
command = self.page.find_by_css_selector(
|
||||
NavMenuLocators.
|
||||
@@ -148,13 +151,12 @@ class PGUtilitiesMaintenanceFeatureTest(BaseFeatureTest):
|
||||
"\nVACUUM VERBOSE"
|
||||
" public." + self.table_name + ";")
|
||||
|
||||
self.page.find_by_xpath(
|
||||
NavMenuLocators.process_watcher_close_button_xpath).click()
|
||||
test_gui_helper.close_process_watcher(self)
|
||||
|
||||
def after(self):
|
||||
test_gui_helper.close_bgprocess_popup(self)
|
||||
self.page.remove_server(self.server)
|
||||
test_utils.delete_table(self.server, self.test_db,
|
||||
test_utils.delete_table(self.server, self.database_name,
|
||||
self.table_name)
|
||||
connection = test_utils.get_db_connection(
|
||||
self.server['db'],
|
||||
|
||||
@@ -56,9 +56,9 @@ class QueryToolAutoCompleteFeatureTest(BaseFeatureTest):
|
||||
test_utils.create_table(self.server, self.test_db,
|
||||
self.second_table_name)
|
||||
|
||||
self.page.toggle_open_tree_item(self.server['name'])
|
||||
self.page.toggle_open_tree_item('Databases')
|
||||
self.page.toggle_open_tree_item(self.test_db)
|
||||
self.page.expand_database_node(
|
||||
self.server['name'],
|
||||
self.server['db_password'], self.test_db)
|
||||
|
||||
self.page.open_query_tool()
|
||||
self.page.wait_for_spinner_to_disappear()
|
||||
|
||||
@@ -103,7 +103,7 @@ class QueryToolJourneyTest(BaseFeatureTest):
|
||||
QueryToolLocators.copy_button_css)
|
||||
copy_row.click()
|
||||
|
||||
self.assertEqual('"Some-Name"\t"6"\t"some info"',
|
||||
self.assertEqual('"Some-Name"\t6\t"some info"',
|
||||
pyperclip.paste())
|
||||
|
||||
def _test_copies_columns(self):
|
||||
@@ -380,9 +380,9 @@ class QueryToolJourneyTest(BaseFeatureTest):
|
||||
self.page.click_modal('Yes')
|
||||
|
||||
def _navigate_to_query_tool(self):
|
||||
self.page.toggle_open_tree_item(self.server['name'])
|
||||
self.page.toggle_open_tree_item('Databases')
|
||||
self.page.toggle_open_tree_item(self.test_db)
|
||||
self.page.expand_database_node(
|
||||
self.server['name'],
|
||||
self.server['db_password'], self.test_db)
|
||||
self.page.open_query_tool()
|
||||
self.page.wait_for_spinner_to_disappear()
|
||||
|
||||
|
||||
@@ -35,9 +35,9 @@ class QueryToolFeatureTest(BaseFeatureTest):
|
||||
def before(self):
|
||||
self.page.wait_for_spinner_to_disappear()
|
||||
self.page.add_server(self.server)
|
||||
self.page.toggle_open_tree_item(self.server['name'])
|
||||
self.page.toggle_open_tree_item('Databases')
|
||||
self.page.toggle_open_tree_item(self.test_db)
|
||||
self.page.expand_database_node(
|
||||
self.server['name'],
|
||||
self.server['db_password'], self.test_db)
|
||||
self.page.open_query_tool()
|
||||
self.page.wait_for_spinner_to_disappear()
|
||||
self._reset_options()
|
||||
@@ -254,7 +254,7 @@ SELECT generate_series(1, {}) as id1, 'dummy' as id2""".format(
|
||||
)
|
||||
# Table height takes some time to update, for which their is no
|
||||
# particular way
|
||||
time.sleep(1)
|
||||
time.sleep(2)
|
||||
if canvas_ele.size['height'] == scrolling_height:
|
||||
break
|
||||
else:
|
||||
|
||||
@@ -32,12 +32,12 @@ class TableDdlFeatureTest(BaseFeatureTest):
|
||||
test_utils.create_table(self.server, self.test_db,
|
||||
self.test_table_name)
|
||||
|
||||
self.page.toggle_open_server(self.server['name'])
|
||||
self.page.toggle_open_tree_item('Databases')
|
||||
self.page.toggle_open_tree_item(self.test_db)
|
||||
self.page.toggle_open_tree_item('Schemas')
|
||||
self.page.toggle_open_tree_item('public')
|
||||
self.page.toggle_open_tree_item('Tables')
|
||||
self.page.expand_database_node(
|
||||
self.server['name'],
|
||||
self.server['db_password'], self.test_db)
|
||||
self.page.toggle_open_tables_node(
|
||||
self.server['name'], self.server['db_password'],
|
||||
self.test_db, 'public')
|
||||
self.page.select_tree_item(self.test_table_name)
|
||||
self.page.click_tab("SQL")
|
||||
|
||||
|
||||
@@ -122,12 +122,12 @@ CREATE TABLE public.nonintpkey
|
||||
self.page.wait_for_spinner_to_disappear()
|
||||
self.page.add_server(self.server)
|
||||
|
||||
self.page.toggle_open_tree_item(self.server['name'])
|
||||
self.page.toggle_open_tree_item('Databases')
|
||||
self.page.toggle_open_tree_item(self.test_db)
|
||||
self.page.toggle_open_tree_item('Schemas')
|
||||
self.page.toggle_open_tree_item('public')
|
||||
self.page.toggle_open_tree_item('Tables')
|
||||
self.page.expand_database_node(
|
||||
self.server['name'],
|
||||
self.server['db_password'], self.test_db)
|
||||
self.page.toggle_open_tables_node(self.server['name'],
|
||||
self.server['db_password'],
|
||||
self.test_db, 'public')
|
||||
|
||||
self._load_config_data('table_insert_update_cases')
|
||||
# iterate on both tables
|
||||
@@ -349,13 +349,13 @@ CREATE TABLE public.nonintpkey
|
||||
element = result_row.find_element_by_class_name("r" + str(idx))
|
||||
self.page.driver.execute_script(
|
||||
"arguments[0].scrollIntoView(false)", element)
|
||||
|
||||
self.assertEquals(element.text, config_check_data[str(idx)][1])
|
||||
time.sleep(0.4)
|
||||
self.assertEquals(element.text, config_check_data[str(idx)][1])
|
||||
|
||||
# scroll browser back to the left
|
||||
# to reset position so other assertions can succeed
|
||||
for idx in reversed(list(config_check_data.keys())):
|
||||
time.sleep(0.4)
|
||||
element = result_row.find_element_by_class_name("r" + str(idx))
|
||||
self.page.driver.execute_script(
|
||||
"arguments[0].scrollIntoView(false)", element)
|
||||
|
||||
@@ -94,12 +94,12 @@ class CheckForXssFeatureTest(BaseFeatureTest):
|
||||
self.server, self.test_db, self.test_table_name)
|
||||
|
||||
def _tables_node_expandable(self):
|
||||
self.page.toggle_open_server(self.server['name'])
|
||||
self.page.toggle_open_tree_item('Databases')
|
||||
self.page.toggle_open_tree_item(self.test_db)
|
||||
self.page.toggle_open_tree_item('Schemas')
|
||||
self.page.toggle_open_tree_item('public')
|
||||
self.page.toggle_open_tree_item('Tables')
|
||||
self.page.expand_database_node(
|
||||
self.server['name'],
|
||||
self.server['db_password'], self.test_db)
|
||||
self.page.toggle_open_tables_node(self.server['name'],
|
||||
self.server['db_password'],
|
||||
self.test_db, 'public')
|
||||
self.page.select_tree_item(self.test_table_name)
|
||||
|
||||
def _check_xss_in_browser_tree(self):
|
||||
|
||||
@@ -39,10 +39,10 @@ class CheckDebuggerForXssFeatureTest(BaseFeatureTest):
|
||||
self.function_name = "a_test_function" + \
|
||||
str(random.randint(10000, 65535))
|
||||
test_utils.create_debug_function(
|
||||
self.server, "postgres", self.function_name
|
||||
self.server, self.test_db, self.function_name
|
||||
)
|
||||
|
||||
if test_utils.does_function_exist(self.server, 'postgres',
|
||||
if test_utils.does_function_exist(self.server, self.test_db,
|
||||
self.function_name) != 'True':
|
||||
raise Exception("The required function is not found")
|
||||
|
||||
@@ -54,15 +54,16 @@ class CheckDebuggerForXssFeatureTest(BaseFeatureTest):
|
||||
|
||||
def after(self):
|
||||
self.page.remove_server(self.server)
|
||||
test_utils.drop_debug_function(self.server, "postgres",
|
||||
test_utils.drop_debug_function(self.server, self.test_db,
|
||||
self.function_name)
|
||||
|
||||
def _function_node_expandable(self):
|
||||
self.page.toggle_open_server(self.server['name'])
|
||||
self.page.toggle_open_tree_item('Databases')
|
||||
self.page.toggle_open_tree_item('postgres')
|
||||
self.page.toggle_open_tree_item('Schemas')
|
||||
self.page.toggle_open_tree_item('public')
|
||||
self.page.expand_database_node(
|
||||
self.server['name'],
|
||||
self.server['db_password'], self.test_db)
|
||||
self.page.toggle_open_schema_node(self.server['name'],
|
||||
self.server['db_password'],
|
||||
self.test_db, 'public')
|
||||
self.page.toggle_open_function_node()
|
||||
self.page.select_tree_item(self.function_name + "()")
|
||||
|
||||
|
||||
@@ -58,7 +58,8 @@ class CheckRoleMembershipControlFeatureTest(BaseFeatureTest):
|
||||
"<h1>test</h1>")
|
||||
|
||||
def _role_node_expandable(self, role):
|
||||
self.page.toggle_open_server(self.server['name'])
|
||||
self.page.expand_server_node(
|
||||
self.server['name'], self.server['db_password'])
|
||||
self.page.toggle_open_tree_item('Login/Group Roles')
|
||||
self.page.select_tree_item(role)
|
||||
|
||||
@@ -93,6 +94,6 @@ class CheckRoleMembershipControlFeatureTest(BaseFeatureTest):
|
||||
"""This will click and open membership tab of role"""
|
||||
|
||||
self.page.retry_click(
|
||||
(By.XPATH,
|
||||
"//a[normalize-space(text())='Membership']"),
|
||||
(By.LINK_TEXT,
|
||||
"Membership"),
|
||||
(By.XPATH, "//input[@placeholder='Select members']"))
|
||||
|
||||
Reference in New Issue
Block a user