Skip to content

Commit bf4533b

Browse files
Ramya Virajamangalajh27539
authored andcommitted
Updated webdriver wait function to wait for presence of an element
1 parent 142e2f8 commit bf4533b

File tree

3 files changed

+153
-179
lines changed

3 files changed

+153
-179
lines changed

api/osf_api.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1159,15 +1159,13 @@ def get_funder_data_registration(registration_guid):
11591159

11601160

11611161
def get_registration_by_title(encoded_registration_title):
1162-
"""Return the registration node id having the title as given in encoded_registration_title
1163-
ToDo: Handle URL encoding in python
1164-
"""
1162+
"""Return the registration node id having the title as given in encoded_registration_title"""
11651163
session = client.Session(
11661164
api_base_url=settings.API_DOMAIN,
11671165
auth=(settings.REGISTRATIONS_USER, settings.REGISTRATIONS_USER_PASSWORD),
11681166
)
11691167
registration_title = quote(encoded_registration_title)
1170-
url = '/v2/registrations/?filter[title] =' + registration_title
1168+
url = '/v2/registrations/?filter[title]=' + registration_title
11711169
data = session.get(url)['data']
11721170
if data:
11731171
return data[0]['id']

tests/test_registration_outputs.py

Lines changed: 0 additions & 175 deletions
This file was deleted.

tests/test_registration_sidebar.py

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import pytest
2+
from selenium.webdriver.common.by import By
3+
from selenium.webdriver.support import expected_conditions as EC
4+
from selenium.webdriver.support.ui import WebDriverWait
25

36
import markers
47
from api import osf_api
@@ -73,3 +76,151 @@ def test_overview_link(self, driver, session):
7376
metadata_page.goto()
7477
metadata_page.side_navbar.overview_link.click()
7578
assert RegistrationDetailPage(driver, verify=True)
79+
80+
81+
@pytest.mark.usefixtures('must_be_logged_in_as_registration_user')
82+
@markers.dont_run_on_prod
83+
@markers.core_functionality
84+
class TestRegistrationOutputs:
85+
@pytest.fixture()
86+
def registration_guid(self, session):
87+
registration_guid = osf_api.get_registration_by_title(
88+
'Selenium Registration For Outputs Testing'
89+
)
90+
return registration_guid
91+
92+
@pytest.fixture()
93+
def registration_details_page(self, driver, registration_guid):
94+
registration_details_page = RegistrationDetailPage(
95+
driver, guid=registration_guid
96+
)
97+
registration_details_page.goto()
98+
return registration_details_page
99+
100+
def create_new_resource(
101+
self, driver, registration_guid, registration_details_page, resource_type
102+
):
103+
"""This method creates new resource of the type given for the given registration"""
104+
doi = '10.17605'
105+
registration_details_page.add_resource_button.click()
106+
registration_details_page.doi_input_field.clear()
107+
registration_details_page.doi_input_field.click()
108+
registration_details_page.doi_input_field.send_keys(doi)
109+
110+
# Select 'Data' from the resource type listbox
111+
registration_details_page.resource_type_dropdown.click()
112+
113+
registration_details_page.select_from_dropdown_listbox(resource_type)
114+
registration_details_page.preview_button.click()
115+
registration_details_page.resource_type_add_button.click()
116+
117+
def test_add_new_resource_data(
118+
self, driver, registration_details_page, registration_guid
119+
):
120+
"""This test verifies adding new Data output resource for a registration
121+
and verifies that the Data icon color changes when resource is added"""
122+
registration_details_page.open_practice_resource_data.click()
123+
WebDriverWait(driver, 5).until(
124+
EC.visibility_of_element_located(
125+
(By.CSS_SELECTOR, '[data-test-add-resource-section]')
126+
)
127+
)
128+
# Verify if resource already exists and delete the resource if already exists
129+
resource_id = osf_api.get_registration_resource_id(
130+
registration_id=registration_guid
131+
)
132+
if resource_id is not None:
133+
osf_api.delete_registration_resource(registration_guid)
134+
registration_details_page.reload()
135+
WebDriverWait(driver, 10).until(
136+
EC.invisibility_of_element_located(
137+
(By.CSS_SELECTOR, '[data-test-resource-card-type]')
138+
)
139+
)
140+
141+
self.create_new_resource(
142+
self, driver, registration_details_page, resource_type='Data'
143+
)
144+
145+
data_resource = WebDriverWait(driver, 10).until(
146+
EC.presence_of_element_located((By.XPATH, '//li/p[text()="Data"]'))
147+
)
148+
assert data_resource is not None
149+
osf_api.delete_registration_resource(registration_guid)
150+
151+
def test_edit_resource_data(
152+
self, driver, registration_details_page, registration_guid, fake
153+
):
154+
"""This test updates the description of data output resource for a given registration"""
155+
resource_description = fake.sentence(nb_words=1)
156+
registration_details_page.open_practice_resource_data.click()
157+
# Verify n and delete the resource if already exists
158+
resource_id = osf_api.get_registration_resource_id(
159+
registration_id=registration_guid
160+
)
161+
if resource_id is not None:
162+
osf_api.delete_registration_resource(registration_guid)
163+
registration_details_page.reload()
164+
WebDriverWait(driver, 10).until(
165+
EC.invisibility_of_element_located((By.XPATH, '//li/p[text()="Data"]'))
166+
)
167+
168+
osf_api.create_registration_resource(registration_guid, resource_type='Data')
169+
registration_details_page.reload()
170+
WebDriverWait(driver, 10).until(
171+
EC.presence_of_element_located((By.XPATH, '//li/p[text()="Data"]'))
172+
)
173+
registration_details_page.resource_type_edit_button.click()
174+
registration_details_page.resource_description.click()
175+
registration_details_page.resource_description.clear()
176+
registration_details_page.resource_description.send_keys(resource_description)
177+
registration_details_page.save_button.click()
178+
179+
registration_details_page.reload()
180+
WebDriverWait(driver, 5).until(
181+
EC.presence_of_element_located((By.XPATH, '//li/p[text()="Data"]'))
182+
)
183+
assert (
184+
registration_details_page.resource_card_description.text
185+
== resource_description
186+
)
187+
osf_api.delete_registration_resource(registration_guid)
188+
189+
def test_delete_resource_data(
190+
self, driver, registration_details_page, registration_guid, fake
191+
):
192+
"""This test verifies delete functionality of data output resource for a registration"""
193+
194+
registration_details_page.open_practice_resource_data.click()
195+
# Verify and delete the resource if already exists
196+
resource_id = osf_api.get_registration_resource_id(
197+
registration_id=registration_guid
198+
)
199+
if resource_id is not None:
200+
osf_api.delete_registration_resource(registration_guid)
201+
registration_details_page.reload()
202+
WebDriverWait(driver, 10).until(
203+
EC.invisibility_of_element_located((By.XPATH, '//li/p[text()="Data"]'))
204+
)
205+
206+
osf_api.create_registration_resource(registration_guid, resource_type='Data')
207+
registration_details_page.reload()
208+
WebDriverWait(driver, 5).until(
209+
EC.visibility_of_element_located((By.XPATH, '//li/p[text()="Data"]'))
210+
)
211+
212+
orig_data_icon_color = driver.find_element_by_css_selector(
213+
'img[data-analytics-name="data"]'
214+
).get_attribute('src')
215+
registration_details_page.resource_type_delete_button.click()
216+
registration_details_page.resource_type_delete_confirm.click()
217+
registration_details_page.reload()
218+
WebDriverWait(driver, 10).until(
219+
EC.visibility_of_element_located(
220+
(By.CSS_SELECTOR, '[data-test-add-resource-section]')
221+
)
222+
)
223+
new_data_icon_color = driver.find_element_by_css_selector(
224+
'img[data-analytics-name="data"]'
225+
).get_attribute('src')
226+
assert new_data_icon_color != orig_data_icon_color

0 commit comments

Comments
 (0)