Skip to content

Commit c1036a3

Browse files
authored
Refactoring miscellaneous UI test compatibility (v3.10.x & v3.11.x) for RTA (#362)
1 parent abc9ded commit c1036a3

12 files changed

+71
-46
lines changed

release_tester/selenium_ui_test/pages/analyzers_page.py

+13-15
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,7 @@ def select_help_filter_btn(self):
3939
help_sitem = self.locator_finder_by_xpath(help_filter)
4040
help_sitem.click()
4141
time.sleep(3)
42-
43-
print("Closing Analyzers help filter \n")
44-
help_filter_close = '//button[@class="button-close"][1]'
45-
help_close_sitem = self.locator_finder_by_xpath(help_filter_close)
46-
help_close_sitem.click()
47-
time.sleep(2)
42+
self.webdriver.refresh()
4843

4944
def select_built_in_analyzers_open(self):
5045
"""Checking in-built analyzers list and description"""
@@ -215,7 +210,7 @@ def checking_all_built_in_analyzer(self):
215210
self.select_built_in_analyzers_close()
216211

217212

218-
def add_new_analyzer(self, name, test_data_dir=None):
213+
def add_new_analyzer(self, name, ui_data_dir=None):
219214
"""Adding analyzer type delimiter with necessary features"""
220215
# pylint: disable=too-many-locals disable=too-many-branches disable=too-many-statements
221216
index = self.index
@@ -281,9 +276,7 @@ def add_new_analyzer(self, name, test_data_dir=None):
281276
frequency = '//div[label[text()="Frequency"]]/input[not(@disabled)]'
282277
norm = '//div[label[text()="Norm"]]/input[not(@disabled)]'
283278
position = '//div[label[text()="Position"]]/input[not(@disabled)]'
284-
switch_view_btn = '//*[@id="modal-content-add-analyzer"]/div[1]/div/div[2]/div/div[2]/button'
285-
switch_form_btn = '//*[@id="modal-content-add-analyzer"]/div[1]/div/div[2]/div/div[2]/button'
286-
create = '//*[@id="modal-content-add-analyzer"]/div[3]/button[2]'
279+
switch_form_btn = "//*[text()='Switch to form view']"
287280
local_placeholder = '//div[label[text()="Locale"]]//input[not(@disabled)]'
288281
case_placeholder = '//div[label[text()="Case"]]//select[not(@disabled)]'
289282

@@ -538,7 +531,7 @@ def add_new_analyzer(self, name, test_data_dir=None):
538531

539532
# for nearest neighbor analyzer introduced on 3.10.x
540533
elif name == "My_Nearest_Neighbor_Analyzer":
541-
location = test_data_dir / "makedata_suites" / "610_model_cooking.bin"
534+
location = ui_data_dir / "ui_data" / "analyzer_page" / "610_model_cooking.bin"
542535
print(f'Selecting model location for {name} \n')
543536
model_location = '//div[label[text()="Model Location"]]//input[not(@disabled)]'
544537
model_location_sitem = self.locator_finder_by_xpath(model_location)
@@ -553,7 +546,7 @@ def add_new_analyzer(self, name, test_data_dir=None):
553546

554547
# for classification analyzer introduced on 3.10.x
555548
elif name == "My_Classification_Analyzer":
556-
location = test_data_dir / "makedata_suites" / "610_model_cooking.bin"
549+
location = ui_data_dir / "ui_data" / "analyzer_page" / "610_model_cooking.bin"
557550
print(f'Selecting model location for {name} \n')
558551
model_location = '//div[label[text()="Model Location"]]//input[not(@disabled)]'
559552
model_location_sitem = self.locator_finder_by_xpath(model_location)
@@ -717,18 +710,23 @@ def add_new_analyzer(self, name, test_data_dir=None):
717710
time.sleep(2)
718711

719712
print(f'Switching current view to form view for {name}\n')
713+
switch_view_btn = '//*[@id="modal-content-add-analyzer"]/div[1]/div/div[2]/div/div[2]/button'
720714
code_view_sitem = self.locator_finder_by_xpath(switch_view_btn)
721715
code_view_sitem.click()
722716
time.sleep(3)
723717

724718
print(f'Switching current view to code view for {name}\n')
725-
form_view_sitem = self.locator_finder_by_xpath(switch_form_btn)
719+
form_view_sitem = self.locator_finder_by_xpath(switch_view_btn)
726720
form_view_sitem.click()
727721
time.sleep(3)
728722

729723
print(f"Selecting the create button for the {name} \n")
730-
create_btn = create
731-
create_btn_sitem = self.locator_finder_by_xpath(create_btn)
724+
if self.package_version >= semver.VersionInfo.parse('3.11.0'):
725+
create = '//*[@id="chakra-modal-2"]/footer/button[2]'
726+
else:
727+
create = "//*[text()='Create']"
728+
729+
create_btn_sitem = self.locator_finder_by_xpath(create)
732730
create_btn_sitem.click()
733731
time.sleep(2)
734732

release_tester/selenium_ui_test/pages/base_page.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,7 @@ def locator_finder_by_link_text(self, locator_name):
323323
)
324324
if self.locator is None:
325325
print("UI-Test: ", locator_name, " locator has not found.")
326+
return None
326327
else:
327328
return self.locator
328329

@@ -392,7 +393,7 @@ def locator_finder_by_css_selectors(self, locator_name, timeout=10):
392393

393394
# pylint: disable=too-many-arguments
394395
def check_expected_error_messages_for_analyzer(
395-
self, error_input, print_statement, error_message, locators_id, error_message_id
396+
self, error_input, print_statement, error_message, locators_id, error_message_id
396397
):
397398
"""This method will take three lists and check for expected error condition against user's inputs"""
398399
i = 0
@@ -438,7 +439,7 @@ def check_expected_error_messages_for_analyzer(
438439

439440
# pylint: disable=too-many-arguments
440441
def check_expected_error_messages_for_database(
441-
self, error_input, print_statement, error_message, locators_id, error_message_id, value=False
442+
self, error_input, print_statement, error_message, locators_id, error_message_id, value=False
442443
):
443444
"""This method will take three lists and check for expected error condition against user's inputs"""
444445
# value represent true because cluster rf and write concern has different wat to catch the error

release_tester/selenium_ui_test/pages/query_page.py

+14-5
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def __init__(self, driver, cfg):
2828
self.save_current_query_id = "saveCurrentQuery"
2929
self.new_query_name_id = "new-query-name"
3030
self.select_query_size_id = "querySize"
31-
self.json_to_table_span_it = "switchTypes"
31+
# self.json_to_table_span_it = "switchTypes"
3232
self.collection_settings_id = "//*[@id='subNavigationBarPage']/ul[2]/li[4]/a"
3333
self.graph_page = "graphs"
3434
self.select_create_graph_id = "createGraph"
@@ -201,6 +201,13 @@ def spot_light_function(self, search):
201201
self.send_key_action(Keys.ENTER)
202202
time.sleep(2)
203203

204+
def navigate_to_col_content_tab(self):
205+
""" this method will take to collection content tab"""
206+
content = "//div[@id='subNavigationBar']/ul[2]//a[.='Content']"
207+
content_sitem = self.locator_finder_by_xpath(content)
208+
content_sitem.click()
209+
time.sleep(1)
210+
204211
def update_documents(self):
205212
"""update some documents"""
206213
print("Navigating to Collection page \n")
@@ -214,6 +221,8 @@ def update_documents(self):
214221
col_name = self.locator_finder_by_xpath(col_name)
215222
col_name.click()
216223
time.sleep(1)
224+
225+
self.navigate_to_col_content_tab()
217226

218227
# get key text from the first row
219228
row_id = "//div[@id='docPureTable']/div[2]/div[1]"
@@ -322,16 +331,16 @@ def bind_parameters_query(self):
322331

323332
self.scroll()
324333

325-
json = self.json_to_table_span_it
326-
table = self.json_to_table_span_it
334+
json = "//*[text()='JSON']"
335+
table = "//*[text()='Table']"
327336

328337
print("Changing execution format JSON format to Table format\n")
329-
json = self.locator_finder_by_id(json)
338+
json = self.locator_finder_by_xpath(json)
330339
json.click()
331340
time.sleep(3)
332341

333342
print("Changing execution format Table format to JSON format\n")
334-
table = self.locator_finder_by_id(table)
343+
table = self.locator_finder_by_xpath(table)
335344
table.click()
336345
time.sleep(3)
337346

release_tester/selenium_ui_test/pages/service_page.py

+20-3
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ def checking_demo_geo_s2_service_github(self):
190190
assert page_title == expected_title, f"Expected text {expected_title} but got {page_title}"
191191
self.webdriver.back()
192192

193-
def install_demo_geo_s2_service(self, mount_path, test_data_dir):
193+
def install_demo_geo_s2_service(self, mount_path, ui_data_dir):
194194
"""Installing demo geo s2 service from the list"""
195195
self.select_demo_geo_s2_service()
196196

@@ -250,12 +250,19 @@ def install_demo_geo_s2_service(self, mount_path, test_data_dir):
250250
if neighbourhoods_collection_sitem.text == 'neighborhoods':
251251
print('open it and populate necessary data into it \n')
252252
neighbourhoods_collection_sitem.click()
253+
254+
# selecting content submenu
255+
content = "//div[@id='subNavigationBar']/ul[2]//a[.='Content']"
256+
content_sitem = self.locator_finder_by_xpath(content)
257+
content_sitem.click()
258+
time.sleep(1)
259+
253260
print('select upload button \n')
254261
upload = '//*[@id="importCollection"]/span/i'
255262
self.locator_finder_by_xpath(upload).click()
256263
time.sleep(1)
257264

258-
path1 = test_data_dir / "ui_data" / "service_page" / "demo_geo_s2" / "neighborhoods.json"
265+
path1 = ui_data_dir / "ui_data" / "service_page" / "demo_geo_s2" / "neighborhoods.json"
259266
print(f'Providing neighborhood collection path {path1} \n')
260267
choose_file_btn = 'importDocuments'
261268
choose_file_btn_sitem = self.locator_finder_by_id(choose_file_btn)
@@ -272,6 +279,10 @@ def install_demo_geo_s2_service(self, mount_path, test_data_dir):
272279
else:
273280
raise Exception('neighbourhood Collection not found!')
274281

282+
collection_page = 'collections'
283+
self.locator_finder_by_id(collection_page).click()
284+
time.sleep(1)
285+
275286
# looking for restaurants collection has been created or not
276287
restaurants_collection = '//*[@id="collection_restaurants"]/div/h5'
277288
restaurants_collection_sitem = self.locator_finder_by_xpath(restaurants_collection)
@@ -280,12 +291,18 @@ def install_demo_geo_s2_service(self, mount_path, test_data_dir):
280291
if restaurants_collection_sitem.text == 'restaurants':
281292
print('open it and populate necessary data into it \n')
282293
restaurants_collection_sitem.click()
294+
# selecting content submenu
295+
content = "//div[@id='subNavigationBar']/ul[2]//a[.='Content']"
296+
content_sitem = self.locator_finder_by_xpath(content)
297+
content_sitem.click()
298+
time.sleep(1)
299+
283300
print('select upload button \n')
284301
upload = '//*[@id="importCollection"]/span/i'
285302
self.locator_finder_by_xpath(upload).click()
286303
time.sleep(1)
287304

288-
path2 = test_data_dir / "ui_data" / "service_page" / "demo_geo_s2" / "neighborhoods.json"
305+
path2 = ui_data_dir / "ui_data" / "service_page" / "demo_geo_s2" / "neighborhoods.json"
289306
print(f'Providing restaurants collection path {path2} \n')
290307
choose_file_btn = 'importDocuments'
291308
choose_file_btn_sitem = self.locator_finder_by_id(choose_file_btn)

release_tester/selenium_ui_test/pages/views_page.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ def __init__(self, driver, cfg):
3232
super().__init__(driver, cfg)
3333
self.current_version = self.current_package_version()
3434
self.testing_version = semver.VersionInfo.parse("3.9.100")
35-
self.select_views_tab_id = "/html//a[@id='views']"
36-
self.create_new_views_id = "/html//a[@id='createView']"
37-
self.naming_new_view_id = "/html//input[@id='newName']"
35+
self.select_views_tab_id = "views"
36+
self.create_new_view = 'createView'
37+
self.naming_new_view_id = '//input[@id="name"]'
3838
self.select_create_btn_id = "//div[@id='modal-dialog']//button[@class='button-success']"
3939
self.select_views_settings_id = "//a[@id='viewsToggle']/span[@title='Settings']"
4040
self.select_sorting_views_id = '//*[@id="viewsDropdown"]/ul/li[2]/a/label/i'
@@ -63,8 +63,8 @@ def __init__(self, driver, cfg):
6363

6464
def select_views_tab(self):
6565
"""selecting views tab"""
66-
select_views_tab_sitem = self.locator_finder_by_xpath(self.select_views_tab_id)
67-
select_views_tab_sitem.click()
66+
create_new_views_sitem = self.locator_finder_by_id(self.select_views_tab_id)
67+
create_new_views_sitem.click()
6868

6969
def create_new_views(self, name):
7070
"""creating new views tab"""
@@ -253,13 +253,13 @@ def create_improved_views(self, view_name, types):
253253
This method will create the improved views for v3.9+
254254
"""
255255
print("Selecting views create button \n")
256-
create_new_views_id = self.locator_finder_by_xpath(self.create_new_views_id)
256+
create_new_views_id = self.locator_finder_by_id(self.create_new_view)
257257
create_new_views_id.click()
258258
time.sleep(2)
259259

260260
self.wait_for_ajax()
261261
print(f"Select name for the {view_name} \n")
262-
name_id = "newName"
262+
name_id = 'newName'
263263
name_id_sitem = self.locator_finder_by_id(name_id)
264264
name_id_sitem.click()
265265
name_id_sitem.clear()
@@ -785,7 +785,7 @@ def checking_views_negative_scenario_for_views(self):
785785
"""This method will check negative input for views name during creation"""
786786
self.select_views_tab()
787787
print('Selecting views create button \n')
788-
create_new_views_id = self.locator_finder_by_xpath(self.create_new_views_id)
788+
create_new_views_id = self.locator_finder_by_id(self.create_new_view)
789789
create_new_views_id.click()
790790
time.sleep(2)
791791
self.wait_for_ajax()

release_tester/selenium_ui_test/test_suites/analyzers_test_suite.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def test_analyzers(self):
3535
analyzers.checking_all_built_in_analyzer()
3636

3737
print('Creating all supported analyzers\n')
38-
analyzers.creating_all_supported_analyzer(self.is_enterprise, self.test_data_dir)
38+
analyzers.creating_all_supported_analyzer(self.is_enterprise, self.ui_data_dir)
3939

4040
print('Checking expected negative scenarios for analyzers\n')
4141
analyzers.analyzer_expected_error_check()

release_tester/selenium_ui_test/test_suites/base_selenium_test_suite.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def __init__(self, selenium_runner):
3838
self.cfg = selenium_runner.cfg
3939
self.importer = selenium_runner.importer
4040
self.restore = selenium_runner.restorer
41-
self.test_data_dir = selenium_runner.cfg.ui_data_dir.resolve()
41+
self.ui_data_dir = selenium_runner.cfg.ui_data_dir.resolve()
4242
self.is_enterprise = selenium_runner.cfg.enterprise
4343
self.is_headless = selenium_runner.is_headless
4444
self.sub_suite_name = self.__doc__ or self.__class__.__name__

release_tester/selenium_ui_test/test_suites/graph_test_suite.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def test_graph(self):
2828
print("Creating '%s' Graph" % graph.get_name())
2929
this_graph.navbar_goto("graphs")
3030
self.webdriver.refresh()
31-
this_graph.create_graph(graph_id, self.importer, self.test_data_dir)
31+
this_graph.create_graph(graph_id, self.importer, self.ui_data_dir)
3232
this_graph.check_required_collections(graph_id)
3333

3434
this_graph.select_graph_page()
@@ -48,7 +48,7 @@ def test_graph(self):
4848
this_graph.navbar_goto("graphs")
4949
self.webdriver.refresh()
5050
print("Creating '%s' Graph" % graph.get_name())
51-
this_graph.create_graph(graph_id, self.importer, self.test_data_dir)
51+
this_graph.create_graph(graph_id, self.importer, self.ui_data_dir)
5252
this_graph.check_required_collections(graph_id)
5353

5454
this_graph.select_graph_page()

release_tester/selenium_ui_test/test_suites/query_test_suite.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def test_query(self):
2626
query_page.saved_query_check()
2727

2828
print("Importing IMDB collections \n")
29-
query_page.import_collections(self.restore, self.test_data_dir, self.is_cluster)
29+
query_page.import_collections(self.restore, self.ui_data_dir, self.is_cluster)
3030

3131
print("Selecting Query page for basic CRUD operation \n")
3232
query_page.selecting_query_page()
@@ -59,7 +59,7 @@ def test_query(self):
5959
query_page.navbar_goto("graphs")
6060
self.webdriver.refresh()
6161
print("Creating '%s' Graph" % get_graph(graph).get_name())
62-
graph_page.create_graph(graph, self.importer, self.test_data_dir)
62+
graph_page.create_graph(graph, self.importer, self.ui_data_dir)
6363
graph_page.check_required_collections(graph)
6464
query_page.world_country_graph_query()
6565
query_page.navbar_goto("graphs")
@@ -71,7 +71,7 @@ def test_query(self):
7171
query_page.navbar_goto("graphs")
7272
self.webdriver.refresh()
7373
print("Creating '%s' Graph" % get_graph(graph).get_name())
74-
graph_page.create_graph(graph, self.importer, self.test_data_dir)
74+
graph_page.create_graph(graph, self.importer, self.ui_data_dir)
7575
graph_page.check_required_collections(graph)
7676
query_page.k_shortest_paths_graph_query()
7777
query_page.navbar_goto("graphs")
@@ -83,7 +83,7 @@ def test_query(self):
8383
graph_page.navbar_goto("graphs")
8484
self.webdriver.refresh()
8585
print("Creating '%s' Graph" % get_graph(graph).get_name())
86-
graph_page.create_graph(graph, self.importer, self.test_data_dir)
86+
graph_page.create_graph(graph, self.importer, self.ui_data_dir)
8787
graph_page.check_required_collections(graph)
8888
print("Executing City Graph query \n")
8989
query_page.city_graph()
@@ -95,7 +95,7 @@ def test_query(self):
9595
self.webdriver.refresh()
9696

9797
print("Importing new queries \n")
98-
query_page.import_queries(str(self.test_data_dir / "ui_data" / "query_page" / "imported_query.json"))
98+
query_page.import_queries(str(self.ui_data_dir / "ui_data" / "query_page" / "imported_query.json"))
9999
print("Saving Current query as custom query\n")
100100
query_page.custom_query()
101101
print("Changing the number of results from 1000 to 100\n")

release_tester/selenium_ui_test/test_suites/support_test_suite.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ def test_support(self):
3232
support.driver_and_integration_link()
3333
print("Checking Community Support tab \n")
3434
support.community_support_link()
35-
print("Checking Rest API tab \n")
36-
support.rest_api()
35+
# print("Checking Rest API tab \n")
36+
# # support.rest_api()
3737

3838
# logging out from the current user
3939
# login.logout_button()

release_tester/selenium_ui_test/test_suites/views_test_suite.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def test_views(self):
2626

2727
try:
2828
print("Selecting Views tab\n")
29-
views.select_views_tab()
29+
views.navbar_goto("views")
3030

3131
# creating v3.9.x and v3.10.x for improved views
3232
if views.current_package_version() >= semver.VersionInfo.parse("3.9.0"):
@@ -130,7 +130,7 @@ def test_views(self):
130130
# deleting improved views for v3.10.x
131131
elif views.current_package_version() > semver.VersionInfo.parse("3.9.100"):
132132
print("Selecting Views tab\n")
133-
views.select_views_tab()
133+
views.navbar_goto("views")
134134

135135
print('Deleting views started for >= v3.10.x\n')
136136
views.delete_new_views('improved_arangosearch_view_01')
Binary file not shown.

0 commit comments

Comments
 (0)