Skip to content

Commit

Permalink
More robust file presence check before testing Collabora files
Browse files Browse the repository at this point in the history
  • Loading branch information
sunetfreitag committed May 1, 2024
1 parent 1753519 commit bc0f828
Showing 1 changed file with 91 additions and 64 deletions.
155 changes: 91 additions & 64 deletions test_collabora_selenium.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,28 +203,30 @@ def test_markup_text(self):

# Check if the folder is empty
try:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'empty-content__name')))
isEmpty = True
self.logger.info(f'Folder ist empty, creating new files')
except:
# wait.until(EC.presence_of_element_located((By.XPATH, "//*[text()='Upload some content or sync with your devices!']")))
if self.version.startswith('27'):
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'files-filestable')))
else:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'files-list__table')))
isEmpty = False
self.logger.info(f'Folder is not empty, adding new content')
except:
self.logger.info(f'Folder is empty, creating new files')
isEmpty = True

# Sort file list so that new files are created at the beginning of the list
if isEmpty == False:
try:
self.logger.info(f'Wait for folder to be sortable')
wait.until(EC.presence_of_element_located((By.LINK_TEXT, 'SeleniumCollaboraTest')))
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'sort-indicator')))
if self.version.startswith('27'):
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'sort-indicator'))).click()
else:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'files-list__column-sort-button'))).click()
self.logger.info(f'Changed sort order to descending')
except:
self.logger.error(f'Unable to sort, save screenshot and continue...')
screenshot = pyautogui.screenshot()
screenshot.save("screenshots/" + collaboranode + "_test_markup_text_" + g_filename + ".png")
# self.assertTrue(False)
self.logger.warn(f'Unable to change sort order to descending')

if (EC.presence_of_element_located((By.CLASS_NAME, 'icon-triangle-n'))):
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'sort-indicator'))).click
self.logger.info(f'Change sorting to descending!')
# Should be replaced with presence check
time.sleep(3)

try:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, self.addIcon))).click()
Expand All @@ -234,9 +236,13 @@ def test_markup_text(self):
wait.until(EC.presence_of_element_located((By.XPATH, "//*[contains(@id, 'input-file')]"))).send_keys(g_filename + Keys.ENTER)
else:
# Starting with Nextcloud 28, we have to rename the file
self.logger.info('Renaming the file we just created')
wait.until(EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'New document')]")))
self.logger.info(f'Renaming the file we just created to {g_filename}.md')
ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
ActionChains(self.driver).send_keys(f'{g_filename}.md{Keys.ENTER}').perform()
time.sleep(0.5)
ActionChains(self.driver).send_keys(f'{g_filename}.md').perform()
time.sleep(0.5)
ActionChains(self.driver).send_keys(Keys.ENTER).perform()
pass
except:
self.logger.error(f'Unable to create new file: {g_filename}, saving screenshot')
Expand Down Expand Up @@ -374,40 +380,47 @@ def test_collabora_document(self):

# Check if the folder is empty
try:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'empty-content__name')))
isEmpty = True
self.logger.info(f'Folder ist empty, creating new files')
except:
# wait.until(EC.presence_of_element_located((By.XPATH, "//*[text()='Upload some content or sync with your devices!']")))
if self.version.startswith('27'):
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'files-filestable')))
else:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'files-list__table')))
isEmpty = False
self.logger.info(f'Folder is not empty, adding new content')
except:
self.logger.info(f'Folder is empty, creating new files')
isEmpty = True

# Sort file list so that new files are created at the beginning of the list
if isEmpty == False:
try:
self.logger.info(f'Wait for folder to be sortable')
wait.until(EC.presence_of_element_located((By.LINK_TEXT, testfolder)))
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'sort-indicator')))
if self.version.startswith('27'):
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'sort-indicator'))).click()
else:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'files-list__column-sort-button'))).click()
self.logger.info(f'Changed sort order to descending')
except:
self.logger.error(f'Unable to sort, save screenshot and continue...')
screenshot = pyautogui.screenshot()
screenshot.save("screenshots/" + collaboranode + "_test_collabora_document_" + g_filename + ".png")
# self.assertTrue(False)
self.logger.warn(f'Unable to change sort order to descending')

if (EC.presence_of_element_located((By.CLASS_NAME, 'icon-triangle-n'))):
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'sort-indicator'))).click
self.logger.info(f'Change sorting to descending!')
# Should be replaced with presence check
time.sleep(3)

try:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, self.addIcon))).click()
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'icon-filetype-document'))).click()

if self.version.startswith('27'):
# Write the filename in the menu
wait.until(EC.presence_of_element_located((By.XPATH, "//*[contains(@id, 'input-file')]"))).send_keys(g_filename + Keys.ENTER)
else:
# Starting with Nextcloud 28, we have to rename the file
self.logger.info('Renaming the file we just created')
wait.until(EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'New document')]")))
self.logger.info(f'Renaming the file we just created to {g_filename}.odt')
ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
ActionChains(self.driver).send_keys(f'{g_filename}.odt{Keys.ENTER}').perform()
time.sleep(0.5)
ActionChains(self.driver).send_keys(f'{g_filename}.odt').perform()
time.sleep(0.5)
ActionChains(self.driver).send_keys(Keys.ENTER).perform()
pass
except:
self.logger.error(f'Unable to create new file: {g_filename}, saving screenshot')
Expand Down Expand Up @@ -538,30 +551,33 @@ def test_collabora_spreadsheet(self):
folderurl = self.drv.get_folder_url(collaboranode, "SeleniumCollaboraTest")
self.driver.get(folderurl)


# Check if the folder is empty
try:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'empty-content__name')))
isEmpty = True
self.logger.info(f'Folder ist empty, creating new files')
except:
# wait.until(EC.presence_of_element_located((By.XPATH, "//*[text()='Upload some content or sync with your devices!']")))
if self.version.startswith('27'):
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'files-filestable')))
else:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'files-list__table')))
isEmpty = False
self.logger.info(f'Folder is not empty, adding new content')
except:
self.logger.info(f'Folder is empty, creating new files')
isEmpty = True

# Sort file list so that new files are created at the beginning of the list
if isEmpty == False:
try:
self.logger.info(f'Wait for folder to be sortable')
wait.until(EC.presence_of_element_located((By.LINK_TEXT, 'SeleniumCollaboraTest')))
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'sort-indicator')))
if self.version.startswith('27'):
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'sort-indicator'))).click()
else:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'files-list__column-sort-button'))).click()
self.logger.info(f'Changed sort order to descending')
except:
self.logger.error(f'Unable to sort, save screenshot and continue...')
screenshot = pyautogui.screenshot()
screenshot.save("screenshots/" + collaboranode + "_test_markup_text_" + g_filename + ".png")
# self.assertTrue(False)
self.logger.warn(f'Unable to change sort order to descending')

if (EC.presence_of_element_located((By.CLASS_NAME, 'icon-triangle-n'))):
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'sort-indicator'))).click
self.logger.info(f'Change sorting to descending!')
# Should be replaced with presence check
time.sleep(3)

try:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, self.addIcon))).click()
Expand All @@ -571,9 +587,13 @@ def test_collabora_spreadsheet(self):
wait.until(EC.presence_of_element_located((By.XPATH, "//*[contains(@id, 'input-file')]"))).send_keys(g_filename + Keys.ENTER)
else:
# Starting with Nextcloud 28, we have to rename the file
self.logger.info('Renaming the file we just created')
wait.until(EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'New document')]")))
self.logger.info(f'Renaming the file we just created to {g_filename}.ods')
ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
ActionChains(self.driver).send_keys(f'{g_filename}.ods{Keys.ENTER}').perform()
time.sleep(0.5)
ActionChains(self.driver).send_keys(f'{g_filename}.ods').perform()
time.sleep(0.5)
ActionChains(self.driver).send_keys(Keys.ENTER).perform()
pass
except:
self.logger.error(f'Unable to create new file: {g_filename}, saving screenshot')
Expand Down Expand Up @@ -704,30 +724,33 @@ def test_collabora_presentation(self):
folderurl = self.drv.get_folder_url(collaboranode, "SeleniumCollaboraTest")
self.driver.get(folderurl)


# Check if the folder is empty
try:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'empty-content__name')))
isEmpty = True
self.logger.info(f'Folder ist empty, creating new files')
except:
# wait.until(EC.presence_of_element_located((By.XPATH, "//*[text()='Upload some content or sync with your devices!']")))
if self.version.startswith('27'):
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'files-filestable')))
else:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'files-list__table')))
isEmpty = False
self.logger.info(f'Folder is not empty, adding new content')
except:
self.logger.info(f'Folder is empty, creating new files')
isEmpty = True

# Sort file list so that new files are created at the beginning of the list
if isEmpty == False:
try:
self.logger.info(f'Wait for folder to be sortable')
wait.until(EC.presence_of_element_located((By.LINK_TEXT, 'SeleniumCollaboraTest')))
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'sort-indicator')))
if self.version.startswith('27'):
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'sort-indicator'))).click()
else:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'files-list__column-sort-button'))).click()
self.logger.info(f'Changed sort order to descending')
except:
self.logger.error(f'Unable to sort, save screenshot and continue...')
screenshot = pyautogui.screenshot()
screenshot.save("screenshots/" + collaboranode + "_test_markup_text_" + g_filename + ".png")
# self.assertTrue(False)
self.logger.warn(f'Unable to change sort order to descending')

if (EC.presence_of_element_located((By.CLASS_NAME, 'icon-triangle-n'))):
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'sort-indicator'))).click
self.logger.info(f'Change sorting to descending!')
# Should be replaced with presence check
time.sleep(3)

try:
wait.until(EC.presence_of_element_located((By.CLASS_NAME, self.addIcon))).click()
Expand All @@ -737,9 +760,13 @@ def test_collabora_presentation(self):
wait.until(EC.presence_of_element_located((By.XPATH, "//*[contains(@id, 'input-file')]"))).send_keys(g_filename + Keys.ENTER)
else:
# Starting with Nextcloud 28, we have to rename the file
self.logger.info('Renaming the file we just created')
wait.until(EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'New document')]")))
self.logger.info(f'Renaming the file we just created to {g_filename}.odp')
ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
ActionChains(self.driver).send_keys(f'{g_filename}.odp{Keys.ENTER}').perform()
time.sleep(0.5)
ActionChains(self.driver).send_keys(f'{g_filename}.odp').perform()
time.sleep(0.5)
ActionChains(self.driver).send_keys(Keys.ENTER).perform()
pass
except:
self.logger.error(f'Unable to create new file: {g_filename}, saving screenshot')
Expand Down

0 comments on commit bc0f828

Please sign in to comment.