Fixed feature tests.

This commit is contained in:
Yogesh Mahajan
2022-07-08 18:25:00 +05:30
committed by Akshay Joshi
parent a16e3523bd
commit 1a5e60c44f
7 changed files with 194 additions and 238 deletions

View File

@@ -9,6 +9,7 @@
import sys
import random
import traceback
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
@@ -65,36 +66,42 @@ class QueryToolJourneyTest(BaseFeatureTest):
self.wait = WebDriverWait(self.page.driver, 10)
def runTest(self):
self._navigate_to_query_tool()
self.page.execute_query(
"SELECT * FROM %s ORDER BY value " % self.test_table_name)
try:
self._navigate_to_query_tool()
self.page.execute_query(
"SELECT * FROM %s ORDER BY value " % self.test_table_name)
print("Copy rows...", file=sys.stderr, end="")
self._test_copies_rows()
print(" OK.", file=sys.stderr)
print("Copy rows...", file=sys.stderr, end="")
self._test_copies_rows()
print(" OK.", file=sys.stderr)
print("Copy columns...", file=sys.stderr, end="")
self._test_copies_columns()
print(" OK.", file=sys.stderr)
print("Copy columns...", file=sys.stderr, end="")
self._test_copies_columns()
print(" OK.", file=sys.stderr)
print("History tab...", file=sys.stderr, end="")
self._test_history_tab()
print(" OK.", file=sys.stderr)
print("History tab...", file=sys.stderr, end="")
self._test_history_tab()
print(" OK.", file=sys.stderr)
self._insert_data_into_test_editable_table()
self._insert_data_into_test_editable_table()
print("History query source icons and generated queries toggle...",
file=sys.stderr, end="")
self._test_query_sources_and_generated_queries()
print(" OK.", file=sys.stderr)
print("History query source icons and generated queries toggle...",
file=sys.stderr, end="")
self._test_query_sources_and_generated_queries()
print(" OK.", file=sys.stderr)
print("Updatable result sets...", file=sys.stderr, end="")
self._test_updatable_resultset()
print(" OK.", file=sys.stderr)
print("Updatable result sets...", file=sys.stderr, end="")
self._test_updatable_resultset()
print(" OK.", file=sys.stderr)
print("Is editable column header icons...", file=sys.stderr, end="")
self._test_is_editable_columns_icons()
print(" OK.", file=sys.stderr)
print("Is editable column header icons...",
file=sys.stderr, end="")
self._test_is_editable_columns_icons()
print(" OK.", file=sys.stderr)
except Exception as e:
traceback.print_exc()
self.assertTrue(False, 'Exception occurred in run test Tests the '
'path through the query tool data' + str(e))
def _test_copies_rows(self):
self.page.driver.switch_to.default_content()
@@ -346,27 +353,6 @@ class QueryToolJourneyTest(BaseFeatureTest):
self._commit_transaction()
self.page.wait_for_spinner_to_disappear()
# Turn on autocommit
# self.page.check_execute_option("auto_commit")
# query_options = self.page.find_by_css_selector(
# QueryToolLocators.btn_query_dropdown)
# query_options.click()
# retry = 3
# while retry > 0:
# query_options = self.page.find_by_css_selector(
# QueryToolLocators.btn_query_dropdown)
# query_options.click()
# expanded = query_options.get_attribute("aria-expanded")
# if expanded == "false":
# print("query option not yet expanded clicking commit again",
# file=sys.stderr)
# self._commit_transaction()
# time.sleep(0.5)
# query_options.click()
# break
# else:
# retry -= 1
self.page.check_execute_option("auto_commit")
def _check_history_queries_and_icons(self, history_queries, history_icons):
@@ -396,16 +382,24 @@ class QueryToolJourneyTest(BaseFeatureTest):
"""
Updates a numeric cell in the first row of the resultset
"""
cell_el = self.page.find_by_css_selector(
QueryToolLocators.output_row_col.format(2, 3))
ActionChains(self.driver).double_click(cell_el).perform()
ActionChains(self.driver).send_keys(value). \
send_keys(Keys.ENTER).perform()
save_btn = WebDriverWait(self.driver, 5).until(
EC.element_to_be_clickable(
(By.CSS_SELECTOR, QueryToolLocators.btn_save_data)))
save_btn.click()
retry = 3
while retry > 0:
cell_el = self.page.find_by_css_selector(
QueryToolLocators.output_row_col.format(2, 3))
cell_el.click()
time.sleep(0.2)
ActionChains(self.driver).double_click(cell_el).perform()
ActionChains(self.driver).send_keys(value). \
send_keys(Keys.ENTER).perform()
try:
save_btn = WebDriverWait(self.driver, 2).until(
EC.element_to_be_clickable(
(By.CSS_SELECTOR, QueryToolLocators.btn_save_data)))
save_btn.click()
break
except Exception:
print('Exception occurred')
retry -= 1
def _insert_data_into_test_editable_table(self):
self.page.click_tab(self.query_editor_tab_id, rc_dock=True)
@@ -473,6 +467,7 @@ class QueryToolJourneyTest(BaseFeatureTest):
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()

View File

@@ -118,9 +118,8 @@ class QueryToolFeatureTest(BaseFeatureTest):
# this will set focus to correct iframe.
self.page.fill_codemirror_area_with('')
self.page.retry_click(
(By.CSS_SELECTOR, QueryToolLocators.btn_explain_options_dropdown),
(By.CSS_SELECTOR, QueryToolLocators.btn_explain_verbose))
self.assertTrue(self.page.open_explain_options(),
'Unable to open Explain Options dropdown')
# disable Explain options and auto rollback only if they are enabled.
for op in (QueryToolLocators.btn_explain_verbose,
@@ -261,10 +260,8 @@ SELECT generate_series(1, 1000) as id order by id desc"""
self.page.fill_codemirror_area_with(query)
time.sleep(0.5)
explain_op_btn_click = self.page.retry_click(
(By.CSS_SELECTOR, QueryToolLocators.btn_explain_options_dropdown),
(By.CSS_SELECTOR, QueryToolLocators.btn_explain_verbose))
self.assertTrue(explain_op_btn_click, 'Explain Op button click failed')
self.assertTrue(self.page.open_explain_options(),
'Unable to open Explain Options dropdown')
# disable Explain options and auto rollback only if they are enabled.
for op in (QueryToolLocators.btn_explain_verbose,
@@ -298,10 +295,8 @@ SELECT generate_series(1, 1000) as id order by id desc"""
self.page.fill_codemirror_area_with(query)
explain_op_btn_click = self.page.retry_click(
(By.CSS_SELECTOR, QueryToolLocators.btn_explain_options_dropdown),
(By.CSS_SELECTOR, QueryToolLocators.btn_explain_verbose))
self.assertTrue(explain_op_btn_click, 'Explain Op button click failed')
self.assertTrue(self.page.open_explain_options(),
'Unable to open Explain Options')
# disable Explain options and auto rollback only if they are enabled.
for op in (QueryToolLocators.btn_explain_buffers,
@@ -684,9 +679,8 @@ SELECT 1, pg_sleep(300)"""
self.page.fill_codemirror_area_with(
"SELECT count(*) FROM pg_catalog.pg_class;")
self.page.retry_click(
(By.CSS_SELECTOR, QueryToolLocators.btn_explain_options_dropdown),
(By.CSS_SELECTOR, QueryToolLocators.btn_explain_verbose))
self.assertTrue(self.page.open_explain_options(),
'Unable to open Explain Options')
# disable Explain options and only enable COST option
for op in (QueryToolLocators.btn_explain_verbose,

View File

@@ -10,6 +10,7 @@
import json
import os
import time
import traceback
from selenium.webdriver import ActionChains
from regression.python_test_utils import test_utils
@@ -119,22 +120,29 @@ CREATE TABLE public.nonintpkey
connection.close()
def runTest(self):
self.page.wait_for_spinner_to_disappear()
self.page.add_server(self.server)
self.page.expand_tables_node("Server", self.server['name'],
self.server['db_password'], self.test_db,
'public')
try:
self.page.wait_for_spinner_to_disappear()
self.page.add_server(self.server)
self.page.expand_tables_node("Server", self.server['name'],
self.server['db_password'],
self.test_db,
'public')
self._load_config_data('table_insert_update_cases')
data_local = config_data
# iterate on both tables
for cnt in (1, 2):
self._perform_test_for_table('defaults_{0}'.format(str(cnt)),
data_local)
# test nonint pkey table
self._load_config_data('table_insert_update_nonint')
data_local = config_data
self._perform_test_for_table('nonintpkey', data_local)
self._load_config_data('table_insert_update_cases')
data_local = config_data
# iterate on both tables
for cnt in (1, 2):
self._perform_test_for_table('defaults_{0}'.format(str(cnt)),
data_local)
# test nonint pkey table
self._load_config_data('table_insert_update_nonint')
data_local = config_data
self._perform_test_for_table('nonintpkey', data_local)
except Exception:
traceback.print_exc()
self.assertTrue(False, 'Exception occurred in run test '
'Validate Insert, Update operations in '
'View/Edit data with given test data')
def after(self):
self.page.remove_server(self.server)
@@ -218,6 +226,7 @@ CREATE TABLE public.nonintpkey
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()
@@ -231,10 +240,20 @@ CREATE TABLE public.nonintpkey
ActionChains(self.driver).send_keys(value). \
send_keys(Keys.ENTER).perform()
elif cell_type in ['text', 'text[]', 'boolean[]']:
text_area_ele = WebDriverWait(self.driver, 5).until(
EC.visibility_of_element_located(
(By.CSS_SELECTOR,
QueryToolLocators.row_editor_text_area_css)))
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)
@@ -242,8 +261,6 @@ CREATE TABLE public.nonintpkey
self.page.find_by_css_selector(
QueryToolLocators.text_editor_ok_btn_css).click()
elif cell_type in ['json', 'jsonb']:
jsoneditor_area_ele = self.page.find_by_css_selector(
QueryToolLocators.json_editor_text_area_css)
platform = 'mac'
if "platform" in self.driver.capabilities:
platform = (self.driver.capabilities["platform"]).lower()
@@ -359,7 +376,6 @@ CREATE TABLE public.nonintpkey
"document.querySelector('.rdg').scrollLeft=0"
)
xpath = QueryToolLocators.output_row_xpath.format(2)
scroll_on_arg_for_js = "arguments[0].scrollIntoView(false)"
self.page.wait_for_query_tool_loading_indicator_to_disappear()