Skip to content

Commit 9b5d00a

Browse files
authored
Merge pull request #278 from CenterForOpenScience/feature/project_edit_contributors_metadata_fix
[ENG-7680] Feature/Project Contributors Metadata
2 parents feb29fe + ed56faa commit 9b5d00a

File tree

2 files changed

+46
-42
lines changed

2 files changed

+46
-42
lines changed

pages/project.py

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -563,11 +563,13 @@ class ProjectMetadataPage(GuidBasePage):
563563
add_contributor_button = Locator(
564564
By.CSS_SELECTOR, 'a.btn.btn-success.btn-sm.m-l-md[href="#addContributors"]'
565565
)
566-
contributor_search_button = Locator(By.XPATH, '//input[@class="btn btn-default"]')
566+
contributor_search_button = Locator(
567+
By.CSS_SELECTOR, '[data-test-user-search-button]'
568+
)
567569
add_displayed_contributor_button = Locator(
568570
By.CSS_SELECTOR, '[a.btn.btn-success.contrib-button.btn-mini]'
569571
)
570-
search_input = Locator(By.XPATH, '//input[@class="form-control"]')
572+
search_input = Locator(By.CSS_SELECTOR, '[data-test-user-search-input]')
571573
resource_type = Locator(
572574
By.CSS_SELECTOR, '[data-test-display-resource-type-general]'
573575
)
@@ -595,6 +597,37 @@ def select_from_dropdown_listbox(self, selection):
595597
resource_information_save_button = Locator(
596598
By.CSS_SELECTOR, '[data-test-save-resource-metadata-button]'
597599
)
600+
# Get the rows of search results matching the locator
601+
rows = GroupLocator(By.CSS_SELECTOR, '[data-test-user-card-main]')
602+
603+
# Select the correct user from the table of search results
604+
def select_from_table_of_rows(self, selection):
605+
for row in self.rows:
606+
cell = row.find_element(
607+
By.CSS_SELECTOR, '[data-analytics-name="View user"]'
608+
)
609+
if selection in cell.text.strip():
610+
row.find_element(
611+
By.CSS_SELECTOR, '[data-test-add-contributor-button]'
612+
).click()
613+
break
614+
615+
contributors_list = GroupLocator(
616+
By.CSS_SELECTOR, '[data-analytics-name="Contributor name"]'
617+
)
618+
619+
# Select new_user from contributors list on metadata page
620+
def select_from_list(self, selection):
621+
for contributor in self.contributors_list:
622+
if selection in contributor.text.strip():
623+
return contributor
624+
625+
search_cancel_button = Locator(
626+
By.CSS_SELECTOR, '[data-test-user-search-cancel-button]'
627+
)
628+
add_contributor_finish_button = Locator(
629+
By.CSS_SELECTOR, '[data-test-finish-node-contributor-editing-button]'
630+
)
598631

599632
funder_name = Locator(By.XPATH, '//span[@class="ember-power-select-status-icon"]')
600633
funder_name_search_input = Locator(

tests/test_metadata.py

Lines changed: 11 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -345,64 +345,35 @@ def test_edit_contributors(
345345

346346
WebDriverWait(driver, 5).until(
347347
EC.element_to_be_clickable(
348-
(By.CSS_SELECTOR, '[data-test-edit-contributors]')
348+
(By.CSS_SELECTOR, '[data-test-edit-node-contributors-button]')
349349
)
350350
).click()
351-
352-
WebDriverWait(driver, 5).until(
353-
EC.element_to_be_clickable(
354-
(
355-
By.CSS_SELECTOR,
356-
'a.btn.btn-success.btn-sm.m-l-md[href="#addContributors"]',
357-
)
358-
)
359-
).click()
360-
361351
project_metadata_page.search_input.click()
362352
project_metadata_page.search_input.send_keys(new_user)
363353
project_metadata_page.contributor_search_button.click()
364354

365-
# Get the row number for the user from the search table
355+
# Select the new_user from the search results and add the user to the project
366356
WebDriverWait(driver, 5).until(
367357
EC.visibility_of_element_located(
368358
(
369-
By.XPATH,
370-
'//div[@class="row"]/div[@class="col-md-4"]/table[@class="table-condensed table-hover"]',
359+
By.CSS_SELECTOR,
360+
'[data-test-user-card]',
371361
)
372362
)
373363
)
374-
search_table_path = '//table[@class="table-condensed table-hover"]'
375-
rno, search_table_data = utils.read_data_from_table(
376-
driver, search_table_path, check_match=True, item_match=new_user
377-
)
378-
# Click on the Add button of the row number for the user from the search table to add the new contributor user
379-
WebDriverWait(driver, 5).until(
380-
EC.element_to_be_clickable(
381-
(By.XPATH, search_table_path + '/tbody/tr[' + str(rno) + ']/td[1]')
382-
)
383-
).click()
384364

385-
WebDriverWait(driver, 5).until(
386-
EC.element_to_be_clickable((By.XPATH, '//a[@class="btn btn-success"]'))
387-
).click()
365+
project_metadata_page.select_from_table_of_rows(new_user)
366+
project_metadata_page.search_cancel_button.click()
367+
project_metadata_page.add_contributor_finish_button.click()
388368

389-
project_metadata_page.reload()
390369
WebDriverWait(driver, 5).until(
391370
EC.visibility_of_element_located(
392-
(By.XPATH, '//table[@id="manageContributorsTable"]')
371+
(By.CSS_SELECTOR, '[data-test-contributors-list]')
393372
)
394373
)
395-
contributor_table_path = '//table[@id="manageContributorsTable"]'
396-
# Get the total number of rows in contributors table
397-
rowno, contributor_table_data = utils.read_data_from_table(
398-
driver, contributor_table_path, check_match=False
399-
)
400-
401-
# Get the user name from the last row which is added recently
402-
user = driver.find_element_by_xpath(
403-
contributor_table_path + '/tbody/tr[' + str(rowno) + ']/td[2]'
404-
)
405-
assert new_user in user.text
374+
# Retrieve the new_user from contributors list
375+
user = project_metadata_page.select_from_list(new_user)
376+
assert new_user in user.text.strip()
406377

407378
def test_edit_resource_information(self, driver, project_metadata_page):
408379
"""This test verifies that user can add/remove

0 commit comments

Comments
 (0)