diff options
Diffstat (limited to 'toasteruitest/toaster_automation_test.py')
-rw-r--r-- | toasteruitest/toaster_automation_test.py | 1789 |
1 files changed, 1789 insertions, 0 deletions
diff --git a/toasteruitest/toaster_automation_test.py b/toasteruitest/toaster_automation_test.py new file mode 100644 index 00000000000..e3e5d7f0671 --- /dev/null +++ b/toasteruitest/toaster_automation_test.py @@ -0,0 +1,1789 @@ +#!/usr/bin/python +# +# DESCRIPTION +# This script has toaster_cases class which includes all test cases. +# +import Base_Utility +#from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import Select +from selenium.webdriver.common.action_chains import ActionChains +import time +import Utility + +class toaster_cases(Base_Utility.toaster_cases_base): + + def test_901(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_partial_link_text('builds').click() + option_ids = ['checkbox-started_on', 'checkbox-failed_tasks', \ + 'checkbox-errors_no', 'checkbox-warnings_no', 'checkbox-time', 'checkbox-image_files', \ + 'checkbox-project'] + self.driver.find_element_by_id("edit-columns-button").click() + for item in option_ids: + if not self.driver.find_element_by_id(item).is_selected(): + self.driver.find_element_by_id(item).click() + time.sleep(3) + self.driver.find_element_by_id("edit-columns-button").click() + sorted_column = {'outcome': 1, 'machine': 3, 'completed_on': 4, 'errors_no': 6, 'warnings_no': 8,'project':11} + for key in sorted_column: + self.driver.find_element_by_xpath("//a[@data-sort-field='" + key + "']").click() + time.sleep(3) + column_list = self.get_table_column_text_by_column_number('allbuildstable',int(sorted_column[key])) + time.sleep(3) + if (int(sorted_column[key])!=1): + self.assertTrue(Utility.is_list_inverted(column_list) or Utility.is_list_sequenced(column_list), + msg=("list not in sequence order or not inverted for %d columns" %int(sorted_column[key]))) + self.driver.find_element_by_xpath("//a[@data-sort-field='" + key + "']").click() + time.sleep(3) + column_list = self.get_table_column_text_by_column_number('allbuildstable', int(sorted_column[key])) + if (int(sorted_column[key]) != 1): + self.assertTrue(Utility.is_list_inverted(column_list) or Utility.is_list_sequenced(column_list), + msg=("list not in sequence order or not inverted for %d columns" % int(sorted_column[key]))) + time.sleep(2) + self.log.info("case passed") + + def test_902(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + patterns = ["minimal"] + self.driver.find_element_by_partial_link_text('builds').click() + for pattern in patterns: + self.driver.find_element_by_id("search-input-allbuildstable").clear() + self.driver.find_element_by_id("search-input-allbuildstable").send_keys(pattern) + self.driver.find_element_by_id("search-submit-allbuildstable").click() + time.sleep(3) + new_target_column_texts = self.get_table_column_text('class', 'target') + time.sleep(3) + if new_target_column_texts: + for text in new_target_column_texts: + self.assertTrue(text.find(pattern), msg=("%s item doesn't exist " % pattern)) + self.driver.find_element_by_xpath("(//span[@class='remove-search-btn-allbuildstable glyphicon glyphicon-remove-circle'])[2]").click() + time.sleep(2) + self.assertTrue(self.driver.find_element_by_xpath("//h1[@class='top-air']").text == 'All builds',msg=("All builds not found after clear search" )) + self.log.info("case passed") + def test_903(self): + self.case_no = self.get_case_number() + image_type1 = "core-image-minimal" + image_type2 = "core-image-sato" + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_partial_link_text('builds').click() + if (self.driver.find_element_by_xpath("//h1[@class='top-air']").text == 'All builds'): + self.driver.find_element_by_id("edit-columns-button").click() + self.driver.find_element_by_id("checkbox-started_on").click() + self.driver.find_element_by_id("edit-columns-button").click() + items = ["Outcome", "Completed on", "Started on", 'Failed tasks'] + for item in items: + try: + temp_element = self.find_element_by_text_in_table('allbuildstable', item) + time.sleep(3) + self.assertTrue(temp_element.find_element_by_xpath( + "//a[@data-filter-on='outcome_filter']/i[@class='glyphicon glyphicon-filter filtered']")) + except Exception as e: + self.assertFalse(True, msg=(" %s cannot be found! %s" % (item, e))) + raise + filter_list = ['outcome_filter', 'started_on_filter', 'completed_on_filter','failed_tasks_filter'] + for key in filter_list: + self.driver.find_element_by_xpath("//*[@id='" + key + "']/i").click() + time.sleep(2) + self.driver.find_element_by_xpath("(//label[contains(@for,'" + key + "')] // input[ @ type = 'radio'])[3]").click() + time.sleep(2) + self.driver.find_element_by_xpath("//button[@class='btn btn-primary']").click() + time.sleep(2) + self.driver.find_element_by_id("search-input-allbuildstable").clear() + self.driver.find_element_by_id("search-input-allbuildstable").send_keys(image_type1) + time.sleep(2) + self.driver.find_element_by_id("search-submit-allbuildstable").click() + self.driver.find_element_by_xpath("//*[@id='" + key + "']/i").click() + time.sleep(2) + avail_options = self.driver.find_elements_by_xpath("//label[@class='filter-title']") + radio_button = self.driver.find_element_by_xpath("//*[@id='" + key + ":all']") + self.driver.find_element_by_xpath( + "//*[@id='filter-modal-allbuildstable']/div/div/div[1]/button").click() + time.sleep(2) + if (radio_button.is_selected()): + pass + else: + self.assertFalse(True, msg=("Error: All option is not selected after search")) + self.log.info("case passed") + def test_904(self): + Expected_BreadCrumb_Number = 4 + BreadCrumb_String = ["Builds", "core-image-minimal"] + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + Table_id = ['buildtaskstable', 'buildtimetable', 'buildcputimetable', 'buildiotable'] + self.driver.find_element_by_partial_link_text("core-image-minimal").click() + Checkbox_Table = ["checkbox-order", "checkbox-recipe__name", "checkbox-task_name", + 'checkbox-recipe__version', + "checkbox-task_executed", "checkbox-outcome", "checkbox-sstate_result", + 'checkbox-elapsed_time', + 'checkbox-cpu_time_system', 'checkbox-cpu_time_user', 'checkbox-disk_io'] + Shows_Rows_Id = ['table-chrome-collapse-buildtaskstable', 'table-chrome-collapse-buildtimetable', + 'table-chrome-collapse-buildcputimetable', 'table-chrome-collapse-buildiotable'] + Ui_List = ["Tasks", "Time", "CPU usage", "Disk I/O"] + SeacrhTaskTable = ['search-input-buildtaskstable', 'search-input-buildtimetable', + 'search-input-buildcputimetable', 'search-input-buildiotable'] + Expected_Edit_List = {'Tasks': ['Order', 'Recipe', 'Task', 'Executed', 'Outcome', 'Cache attempt'], + 'Time': ['Recipe', 'Task', 'Executed', 'Outcome', 'Time (secs)'], + "CPU usage": ['Recipe', 'Task', 'Executed', 'Outcome', 'System CPU time (secs)', + 'User CPU time (secs)'], + 'Disk I/O': ['Recipe', 'Task', 'Executed', 'Outcome', 'Disk I/O (ms)']} + count = 0 + for item in Ui_List: + self.driver.find_element_by_link_text(item).click() + Total_BreadCrumb_Link = len(self.driver.find_elements_by_xpath("//*[@id='breadcrumb']/li")) + if (Total_BreadCrumb_Link == Expected_BreadCrumb_Number): + for i in range(1, Total_BreadCrumb_Link): + BreadCrumb_Name = self.driver.find_element_by_xpath("//*[@id='breadcrumb']/li[%d]/a" % i).text + self.driver.find_element_by_xpath("//*[@id='breadcrumb']/li[%d]/a" % i).click() + self.driver.back() + Active_BreadCrumb_Link = self.driver.find_element_by_xpath("(//*[@id='breadcrumb']/li)[4]").text + if (Active_BreadCrumb_Link == "Tasks"): + pass + else: + self.assertTrue(Active_BreadCrumb_Link, msg=("Active breadcrumb is not correct")) + else: + self.assertTrue(Total_BreadCrumb_Link, msg=("Total Breadcrumb link is not as expected")) + Total_Number_SideLink = len(self.driver.find_elements_by_xpath("//*[@id='nav']//li/a")) + for i in range(1, (Total_Number_SideLink - 2)): + time.sleep(5) + self.driver.find_element_by_xpath("(//*[@id='nav']//li/a)[%d]" % i).click() + time.sleep(2) + self.driver.back() + Active_Class_Name = self.driver.find_element_by_xpath("//*[@id='build-menu']/li[@class='active']/a").text + if (Active_Class_Name == item): + pass + else: + self.assertFalse(Active_Class_Name, msg=("Active class not correctly diaplyed")) + self.assertTrue(self.driver.find_element_by_xpath("//*[@id='" + SeacrhTaskTable[count] + "']"), + msg=("search tab not found on page")) + self.assertTrue(self.driver.find_element_by_xpath( + "//*[@id='" + SeacrhTaskTable[count] + "'][@placeholder='Search tasks']"), + msg=("search Placeholder is search tasks")) + self.driver.find_element_by_xpath("//*[@id='" + SeacrhTaskTable[count] + "']").click() + self.driver.find_element_by_xpath("//*[@id='" + SeacrhTaskTable[count] + "']").send_keys("busybox") + time.sleep(2) + self.driver.find_element_by_xpath("//button[@class='btn btn-default']").click() + time.sleep(2) + column_list_busybox = self.driver.find_elements_by_xpath("//a[text()='busybox']") + if (len(column_list_busybox) >= 1): + pass + else: + self.assertFalse(len(column_list_busybox),msg=("Error: Seacrh is not successful")) + self.driver.find_element_by_xpath("//*[@id='" + SeacrhTaskTable[count] + "']").click() + self.driver.find_element_by_xpath("(//span[contains(@class,'remove-search-btn')])[2]").click() + edit_Show_Rows = Select( + self.driver.find_element_by_xpath("//*[@id='" + Shows_Rows_Id[count] + "']/form[2]/div/select")) + selected_number_rows = "25" + edit_Show_Rows.select_by_value(selected_number_rows) + time.sleep(5) + Total_Row_Num = len( + self.driver.find_elements_by_xpath("//table[@class='table table-bordered table-hover']/tbody/tr")) + if selected_number_rows != Total_Row_Num: + self.assertTrue(Total_Row_Num, msg=("Total number of rows slected are not correct")) + else: + pass + self.assertTrue(self.driver.find_elements_by_xpath("//ul[@class='pagination']/li"), + msg=("Pagination Link not available")) + self.assertTrue(self.driver.find_element_by_xpath("(//form[@class='navbar-form navbar-right'])[2]"), + msg=("Shows Rows option not available at bottom of page")) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(2) + Edit_Element = self.driver.find_elements_by_xpath("//*[@class='dropdown-menu editcol']//li//div") + Edit_Check_List = [] + for element in Edit_Element: + Edit_Check_List.append(element.text) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(2) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(2) + Actual_Checked_List = [] + for item1 in Checkbox_Table: + value = self.driver.find_element_by_id(item1).is_selected() + if value: + Actual_Checked_List.append(self.driver.find_element_by_id(item1).find_element_by_xpath('..').text) + result = all(elem in Actual_Checked_List for elem in Expected_Edit_List[item]) + if result: + pass + else: + self.assertTrue(result, msg=("Error:Edit column list not found as expected")) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(3) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(2) + Edit_Element = self.driver.find_elements_by_xpath("//*[@class='dropdown-menu editcol']//li//div") + Edit_Check_List = [] + edit_number = 1 + for element in Edit_Element: + Edit_Check_List.append(element.text) + Displayed_coulmn_number = len( + self.driver.find_elements_by_xpath("//th[contains(@style,'display: none;')]")) + self.driver.find_element_by_xpath("(//input[@type='checkbox'])[%d]" % edit_number).click() + time.sleep(10) + Displayed_coulmn_number_after_click = len( + self.driver.find_elements_by_xpath("//th[contains(@style,'display: none;')]")) + if (Displayed_coulmn_number == Displayed_coulmn_number_after_click): + pass + else: + self.driver.find_element_by_xpath("(//input[@type='checkbox'])[%d]" % edit_number).click() + edit_number = edit_number + 1 + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(2) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(2) + for item1 in Checkbox_Table: + if not self.driver.find_element_by_id(item1).is_selected(): + self.driver.find_element_by_id(item1).click() + time.sleep(2) + self.driver.find_element_by_id("edit-columns-button").click() + if (item == 'Tasks'): + if self.driver.find_element_by_xpath("//*[@id='buildtaskstable']/thead/tr/th[1]/a").text == 'Order': + pass + else: + self.assertFalse(True, msg=("Error: Order is not bold")) + self.assertTrue(self.driver.find_element_by_xpath("//*[@id='buildtaskstable']/thead/tr/th[1]/i[1]"), + msg=' down-arrow icon are not present ') + default_column_list = self.get_table_column_text_by_column_number('buildtaskstable', 1) + self.assertTrue(Utility.is_list_sequenced(default_column_list), + msg=("list not in sequence for corresponding column")) + Column_Head_Len = len( + self.driver.find_elements_by_xpath("//*[@id='" + Table_id[count] + "']/thead/tr/th")) + for i in range(2, Column_Head_Len): + if (i >= 4): + i = i + 1 + self.driver.find_element_by_xpath("//*[@id='" + Table_id[count] + "']/thead/tr/th[%d]/a" % i).click() + time.sleep(10) + column_list = self.get_table_column_text_by_column_number(Table_id[count], i) + self.assertTrue(Utility.is_list_sequenced(column_list) or Utility.is_list_inverted(column_list), + msg=("list not in sequence not inverted for corresponding order")) + + filter_list = ['execution_outcome', 'task_outcome', 'sstate_outcome'] + filter_column_number = 5 + for key in filter_list: + self.driver.find_element_by_xpath("//*[@id='" + key + "']/i").click() + time.sleep(2) + avail_options = self.driver.find_elements_by_xpath("//label[@class='filter-title']") + radio_button = self.driver.find_element_by_xpath("//*[@id='" + key + ":all']") + self.driver.find_element_by_xpath( + "/html/body/div[3]/div[3]/div[2]/div/div[2]/div/div/div[1]/button").click() + time.sleep(2) + if (radio_button.is_selected()): + pass + else: + self.assertFalse(True, msg=("Error: All option is not selected before channging")) + for number in range(2, (len(avail_options)) + 1): + self.driver.find_element_by_xpath("//*[@id='" + key + "']/i").click() + time.sleep(2) + if ((number == 4 or number == 5 or number == 6) and key == 'task_outcome'): + number = 7 + if ((number == 4 or number == 5) and key == 'sstate_outcome'): + break + self.driver.find_element_by_xpath("(//input[@type='radio'])[%d]" % number).click() + time.sleep(2) + if (number == 7 and key == 'task_outcome'): + number = 4 + match = self.driver.find_element_by_xpath("(//label[@class='filter-title'])[%d]" % number) + self.driver.find_element_by_xpath("//button[@class='btn btn-primary']").click() + time.sleep(2) + column_list = self.get_table_column_text_by_column_number(Table_id[count], filter_column_number) + column_list_set = set(column_list) + column_list_converted = list(column_list_set) + if (str(column_list_converted[0]) != ''): + if (str(match.text)).find(str(column_list_converted[0])): + pass + else: + self.assertFalse(True, msg=("Error: All option is not selected before channging")) + if (number == 4 and key == 'task_outcome'): + break + self.driver.find_element_by_xpath("//*[@id='" + key + "']/i").click() + time.sleep(2) + self.driver.find_element_by_xpath("(//input[@type='radio'])[1]").click() + time.sleep(2) + self.driver.find_element_by_xpath("//button[@class='btn btn-primary']").click() + time.sleep(2) + self.driver.find_element_by_xpath("//*[@id='" + key + "']/i").click() + time.sleep(2) + radio_button_selected = self.driver.find_element_by_xpath("//*[@id='" + key + ":all']") + if (radio_button_selected.is_selected()): + pass + else: + self.assertFalse(True, msg=("Error:All option is not selected after chnages")) + self.driver.find_element_by_xpath( + "/html/body/div[3]/div[3]/div[2]/div/div[2]/div/div/div[1]/button").click() + time.sleep(2) + filter_column_number = filter_column_number + 1 + Row_Len = len(self.driver.find_elements_by_xpath("//*[@id='" + Table_id[count] + "']/tbody/tr")) + time.sleep(2) + for row_number in range(1, Row_Len + 1): + self.driver.find_element_by_xpath( + "//*[@id='" + Table_id[count] + "']/tbody/tr[%d]/td[2]/a" % row_number).click() + time.sleep(2) + self.driver.back() + time.sleep(2) + self.driver.find_element_by_xpath( + "//*[@id='" + Table_id[count] + "']/tbody/tr[%d]/td[3]/a" % row_number).click() + time.sleep(2) + self.driver.back() + time.sleep(2) + count = count + 1 + self.log.info("case passed") + + def test_906(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + Expected_BreadCrumb_Number = 5 + self.driver.find_element_by_link_text("core-image-minimal").click() + self.find_element_by_link_text_in_table('nav', 'Packages').click() + self.driver.find_element_by_xpath("//*[@id='builtpackagestable']/tbody/tr[1]/td[1]/a").click() + Total_BreadCrumb_Link = len(self.driver.find_elements_by_xpath("//*[@id='breadcrumb']/li")) + if (Total_BreadCrumb_Link == Expected_BreadCrumb_Number): + for i in range(1, Total_BreadCrumb_Link): + BreadCrumb_Name = self.driver.find_element_by_xpath("//*[@id='breadcrumb']/li[%d]/a" % i).text + self.assertTrue(BreadCrumb_Name != '', msg="Breaccrum name not available") + self.driver.find_element_by_xpath("//*[@id='breadcrumb']/li[%d]/a" % i).click() + self.driver.back() + time.sleep(2) + else: + self.assertFalse(True, msg=("Error:Total Breadcrumb link is not as expected")) + self.driver.find_element_by_xpath("(//ul[@class='breadcrumb']//li)[4]").click() + time.sleep(1) + self.driver.find_element_by_xpath("//*[@id='builtpackagestable']/tbody/tr[1]/td[1]/a").click() + time.sleep(1) + name_package=self.driver.find_element_by_xpath("//div[@class='tab-content']//div[@class='tab-pane active']//div").text + if 'Package included in' in name_package: + self.driver.find_element_by_xpath("//div[@class='well']") + self.driver.find_element_by_xpath("//div[@class='page-header build-data']") + else: + if ('Generated files' in self.driver.find_element_by_xpath("(//div[@class='col-md-8 tabbable']/ul/li/a)[1]").text): + pass + else: + self.assertFalse(True, msg=("Error correct active string not diaplyed")) + if ('Runtime dependencies' in self.driver.find_element_by_xpath("(//div[@class='col-md-8 tabbable']/ul/li/a)[2]").text): + pass + else: + self.assertFalse(True, msg=("Error correct string not diaplyed in 2nd tab")) + self.driver.find_element_by_partial_link_text("Generated files").click() + string_generated_file = self.driver.find_element_by_xpath("/html/body/div[3]/div[3]/div[1]/ul/li[1]/a").text + generate_files_row_number = len(self.driver.find_elements_by_xpath( + "//table[@class='table table-bordered table-hover tablesorter']/tbody/tr")) + expected_value_generated_files = (((string_generated_file.split()[2]).split('(')[1]).split(')'))[0] + if (int(expected_value_generated_files)>0): + if (generate_files_row_number == int(expected_value_generated_files) ): + head_list = self.get_table_head_text('otable') + for item in ['File', 'Size']: + self.assertTrue(item in head_list, msg=("%s not in head row" % item)) + c_list = self.get_table_column_text('class', 'path') + self.assertTrue(Utility.is_list_sequenced(c_list), msg=("column not in order")) + else: + self.assertFalse(True, msg=("Error: row number is not correct for generated files")) + self.driver.find_element_by_partial_link_text("Runtime dependencies").click() + string_runtime_dependencies = self.driver.find_element_by_xpath( + "/html/body/div[3]/div[3]/div[1]/ul/li[2]/a").text + runtime_dependencies_row_number = len( + self.driver.find_elements_by_xpath("//table[@class='table table-bordered table-hover']/tbody/tr")) + expected_value_runtime_dependencies = (((string_runtime_dependencies.split()[2]).split('(')[1]).split(')'))[ + 0] + if (int(expected_value_runtime_dependencies) > 0): + if (runtime_dependencies_row_number == int(expected_value_runtime_dependencies)): + head_list = self.get_table_head_text('dependencies') + for item in ['Package', 'Version', 'Size']: + self.assertTrue(item in head_list, msg=("%s not in head row" % item)) + c_list = self.get_table_column_text_by_column_number('dependencies', 1) + self.assertTrue(Utility.is_list_sequenced(c_list), msg=("list not in order")) + else: + self.assertFalse(True, msg=("Error: row number is not correct for runtime dependencies")) + texts = ['Size', 'License', 'Recipe', 'Recipe version', 'Layer', 'Layer'' commit'] + if (len(self.driver.find_elements_by_xpath( + "//dl//span[@class='glyphicon glyphicon-question-sign get-help']")) == 7): + pass + else: + self.assertFalse(True, msg=("Error: total number of help option is not correct")) + self.failUnless(self.is_text_present(texts)) + time.sleep(3) + self.driver.find_element_by_xpath("//*[@id='breadcrumb']/li[4]/a").click() + time.sleep(3) + self.driver.find_element_by_id("search-input-builtpackagestable").click() + self.driver.find_element_by_id("search-input-builtpackagestable").send_keys("busybox") + self.driver.find_element_by_id("search-submit-builtpackagestable").click() + time.sleep(2) + self.driver.find_element_by_xpath("//*[@id='builtpackagestable']/tbody/tr[1]/td[1]/a").click() + if (self.driver.find_element_by_xpath("//div[@class='lead well']").text != ''): + self.driver.find_element_by_xpath("//div[@class='lead well']").click() + self.log.info("case passed") + def test_910(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + image_type = "core-image-minimal" + test_package1 = "busybox" + test_package2 = "lib" + section_column_number = 6 + self.driver.find_element_by_link_text(image_type).click() + self.driver.find_element_by_link_text("Recipes").click() + default_column_list = self.get_table_column_text_by_column_number('builtrecipestable', 1) + self.assertTrue(Utility.is_list_sequenced(default_column_list), + msg=("list not in sequence order deafault column Recipes")) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(2) + self.driver.find_element_by_id("checkbox-section").click() + time.sleep(2) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(2) + self.driver.find_element_by_xpath("//th[@class='section']/a").click() + time.sleep(2) + column_list_after_section = self.get_table_column_text_by_column_number('builtrecipestable', + section_column_number) + self.assertTrue(Utility.is_list_sequenced(column_list_after_section)) + self.driver.find_element_by_id("search-input-builtrecipestable").click() + self.driver.find_element_by_id("search-input-builtrecipestable").send_keys(test_package1) + self.driver.find_element_by_xpath("//button[@class='btn btn-default']").click() + time.sleep(2) + self.driver.find_element_by_id("search-input-builtrecipestable").click() + time.sleep(2) + self.driver.find_element_by_xpath( + "//*[@id='table-chrome-collapse-builtrecipestable']/form[1]/div/div/span").click() + time.sleep(2) + column_list_Section_after_search = self.get_table_column_text_by_column_number('builtrecipestable', + section_column_number) + self.assertTrue(Utility.is_list_sequenced(column_list_Section_after_search)) + option_ids = ['checkbox-name', 'checkbox-version', \ + 'checkbox-dependencies', 'checkbox-revdeps', 'checkbox-file_path', 'checkbox-section', \ + 'checkbox-license', 'checkbox-layer_version__layer__name', 'checkbox-layer_version__branch', + 'checkbox-commit'] + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(2) + for item1 in option_ids: + if not self.driver.find_element_by_id(item1).is_selected(): + self.driver.find_element_by_id(item1).click() + time.sleep(2) + + self.driver.find_element_by_id("edit-columns-button").click() + column_head = ['Recipe', 'Section', 'License', 'Layer', 'Layer branch'] + column_number = 1 + for item in column_head: + time.sleep(2) + self.find_element_by_link_text_in_table('builtrecipestable', item).click() + time.sleep(2) + if column_number == 2: + column_number = section_column_number + column_list_packages = self.get_table_column_text_by_column_number('builtrecipestable', column_number) + self.assertTrue(Utility.is_list_sequenced(column_list_packages) or Utility.is_list_inverted(column_list_packages), + msg=("list not in sequence order or not inverted for %s columns" % item)) + column_number = column_number + 1 + self.find_element_by_link_text_in_table('builtrecipestable', 'Recipe').click() + time.sleep(2) + column_number = 1 + for item in column_head: + self.find_element_by_link_text_in_table('builtrecipestable', item).click() + time.sleep(2) + if column_number == 2: + column_number = section_column_number + column_list_packages = self.get_table_column_text_by_column_number('builtrecipestable', column_number) + self.assertTrue(Utility.is_list_sequenced(column_list_packages) or Utility.is_list_inverted(column_list_packages), + msg=("list not in sequence order or not inverted for %s columns before serach" % item)) + self.driver.find_element_by_id("search-input-builtrecipestable").click() + self.driver.find_element_by_id("search-input-builtrecipestable").send_keys(test_package2) + self.driver.find_element_by_xpath("//button[@class='btn btn-default']").click() + time.sleep(2) + column_list_packages_after_search = self.get_table_column_text_by_column_number('builtrecipestable',column_number) + self.assertTrue( + Utility.is_list_sequenced(column_list_packages_after_search) or Utility.is_list_inverted(column_list_packages), + msg=("list not in sequence order or not inverted for %s columns after serach" % item)) + self.driver.find_element_by_id("search-input-builtrecipestable").click() + time.sleep(2) + self.driver.find_element_by_xpath( + "//*[@id='table-chrome-collapse-builtrecipestable']/form[1]/div/div/span").click() + column_number = column_number + 1 + table_head_dict = {'Section': 'checkbox-section', 'License': 'checkbox-license', + 'Layer': 'checkbox-layer_version__layer__name', + 'Layer branch': 'checkbox-layer_version__branch'} + for key in table_head_dict: + self.find_element_by_link_text_in_table('builtrecipestable', key).click() + time.sleep(2) + self.driver.find_element_by_id("edit-columns-button").click() + self.driver.find_element_by_id(table_head_dict[key]).click() + self.driver.find_element_by_id("edit-columns-button").click() + default_column_list = self.get_table_column_text_by_column_number('builtrecipestable', 1) + self.assertTrue(Utility.is_list_sequenced(default_column_list), + msg=("list not in sequence order deafault column Recipes")) + time.sleep(2) + self.driver.find_element_by_id("edit-columns-button").click() + self.driver.find_element_by_id('checkbox-license').click() + time.sleep(2) + self.driver.find_element_by_id('checkbox-layer_version__layer__name').click() + time.sleep(2) + self.driver.find_element_by_id("edit-columns-button").click() + self.log.info("case passed") + def test_911(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + searched_recipies = 'hfidf' + self.driver.get(self.base_url) + self.driver.find_element_by_link_text("core-image-minimal").click() + self.find_element_by_link_text_in_table('nav', 'Recipes').click() + self.driver.find_element_by_xpath("//*[@placeholder='Search recipes built']") + self.driver.find_element_by_id("search-input-builtrecipestable") + time.sleep(5) + self.driver.find_element_by_id("search-input-builtrecipestable").clear() + self.driver.find_element_by_id("search-input-builtrecipestable").send_keys("lib") + time.sleep(5) + self.driver.find_element_by_id("search-submit-builtrecipestable").click() + time.sleep(3) + seacrhed_string = self.driver.find_element_by_xpath("//div[@class='page-header build-data']").text + seacrhed_string_value = int(((seacrhed_string.split()[2].split('(')[1].split(')'))[0])) + if (seacrhed_string_value == 0): + self.driver.find_element_by_id("new-search-input-builtrecipestable") + self.driver.find_element_by_xpath("//*[@id='no-results-builtrecipestable']/div/form/button[2]").click() + time.sleep(5) + elif (seacrhed_string_value > 0): + self.driver.find_element_by_id("search-submit-builtrecipestable").click() + time.sleep(5) + self.driver.find_element_by_xpath( + "//*[@id='table-chrome-collapse-builtrecipestable']/form[1]/div/div/span").click() + else: + self.assertFalse(True, msg=("Error: Searched text not found in expected output")) + head_list = self.get_table_head_text('builtrecipestable') + self.assertTrue(head_list == ['Recipe', 'Version', 'Dependencies', 'Reverse dependencies', 'License', 'Layer'], \ + msg=("head row contents wrong")) + head_list_sort = self.get_table_head_text('builtrecipestable') + self.find_element_by_link_text_in_table('builtrecipestable', 'Recipe').click() + time.sleep(7) + sort_list = self.get_table_column_text_by_column_number('builtrecipestable', 1) + self.assertTrue(Utility.is_list_inverted(sort_list), msg=("list not inverted")) + + self.driver.find_element_by_id("search-input-builtrecipestable").clear() + self.driver.find_element_by_id("search-input-builtrecipestable").send_keys("bash") + time.sleep(2) + self.driver.find_element_by_id("search-submit-builtrecipestable").click() + time.sleep(2) + head_list = self.get_table_head_text('builtrecipestable') + self.assertTrue(head_list == ['Recipe', 'Version', 'Dependencies', 'Reverse dependencies', 'License', 'Layer'], \ + msg=("head row contents wrong")) + head_list = self.get_table_head_text('builtrecipestable') + self.assertTrue(head_list == ['Recipe', 'Version', 'Dependencies', 'Reverse dependencies', 'License', 'Layer'], \ + msg=("head row contents wrong")) + sort_list = self.get_table_column_text_by_column_number('builtrecipestable', 1) + self.assertTrue(Utility.is_list_inverted(sort_list), msg=("list not in order")) + time.sleep(2) + self.driver.find_element_by_id("search-input-builtrecipestable").clear() + self.driver.find_element_by_xpath( + "//*[@id='table-chrome-collapse-builtrecipestable']/form[1]/div/div/span").click() + self.driver.find_element_by_id("search-input-builtrecipestable").clear() + self.driver.find_element_by_id("search-input-builtrecipestable").send_keys("no such input") + self.driver.find_element_by_id("search-submit-builtrecipestable").click() + time.sleep(3) + self.log.info("case passed") + def test_912(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_link_text("core-image-minimal").click() + self.find_element_by_link_text_in_table('nav', 'Recipes').click() + head_list = self.get_table_head_text('builtrecipestable') + head = ['Recipe', 'Version', 'Dependencies', 'Reverse dependencies', 'License', 'Layer'] + time.sleep(3) + for item in head: + self.assertTrue(item in head_list, msg=("item %s not in head row" % item)) + time.sleep(3) + self.driver.find_element_by_id("edit-columns-button").click() + self.driver.find_element_by_xpath("//*[@id='checkbox-file_path']").click() + self.driver.find_element_by_xpath("//*[@id='checkbox-section']").click() + + self.driver.find_element_by_xpath("//*[@id='checkbox-layer_version__branch']").click() + self.driver.find_element_by_xpath("//*[@id='checkbox-commit']").click() + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(3) + check_list = ['Dependencies', 'License', 'Recipe file', 'Section', 'Layer', 'Layer branch', 'Layer commit', + 'Reverse dependencies'] + head_list = self.get_table_head_text('builtrecipestable') + time.sleep(2) + for item in check_list: + self.assertTrue(item in head_list, msg=("item %s not in head row" % item)) + self.driver.find_element_by_id("edit-columns-button").click() + self.driver.find_element_by_xpath("//*[@id='checkbox-dependencies']").click() + self.driver.find_element_by_xpath("//*[@id='checkbox-revdeps']").click() + self.driver.find_element_by_xpath("//*[@id='checkbox-file_path']").click() + self.driver.find_element_by_xpath("//*[@id='checkbox-section']").click() + self.driver.find_element_by_xpath("//*[@id='checkbox-license']").click() + self.driver.find_element_by_xpath("//*[@id='checkbox-layer_version__layer__name']").click() + self.driver.find_element_by_xpath("//*[@id='checkbox-layer_version__branch']").click() + self.driver.find_element_by_xpath("//*[@id='checkbox-commit']").click() + self.driver.find_element_by_id("edit-columns-button").click() + head_list = self.get_table_head_text('builtrecipestable') + for item in check_list: + self.assertFalse(item in head_list, msg=("item %s should not be in head row" % item)) + self.log.info("case passed") + def test_913(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_link_text("core-image-minimal").click() + self.find_element_by_link_text_in_table('nav', 'Recipes').click() + head_list = self.get_table_head_text('builtrecipestable') + for item in ['Recipe', 'Version', 'Dependencies', 'Reverse dependencies', 'License', 'Layer']: + self.assertTrue(item in head_list, msg=("item %s not in head row" % item)) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(10) + if (len(self.driver.find_elements_by_xpath("//label[@class='text-muted']")) == 2): + pass + else: + self.assertFalse(True, msg=("Fail: Muted element is not correct")) + time.sleep(1) + self.driver.find_element_by_id("edit-columns-button").click() + self.log.info("case passed") + def test_914(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + image_type = "core-image-minimal" + test_package2 = "gdbm" + No_dependecies_msg = "has no build dependencies." + No_dependecies_Pkg_msg = "does not build any packages." + No_Reverse_dependecies_msg = "has no reverse build dependencies." + Search_Build_List = ["gettext-native", "libtool-cross"] + self.driver.find_element_by_link_text(image_type).click() + self.driver.find_element_by_link_text("Recipes").click() + default_column_list = self.get_table_column_text_by_column_number('builtrecipestable', 1) + for row_number in range(1, len(default_column_list) + 1): + self.driver.find_element_by_xpath( + "// *[ @ id = 'builtrecipestable'] // tbody // tr[%d] // td // a[contains( @ href, 'recipe')]" % row_number).click() + time.sleep(2) + build_dependecies = self.driver.find_element_by_xpath("//a[@href='#dependencies']") + string_dependcies = str(build_dependecies.text) + build_dependecies_num = (int(((string_dependcies.split('('))[1].split(')'))[0])) + build_dependecies.click() + time.sleep(2) + if (build_dependecies_num > 0): + dependencies_length = len(self.driver.find_elements_by_xpath( + "(//table[@class='table table-bordered table-hover'])[2]//tbody//tr")) + if (dependencies_length == build_dependecies_num): + pass + else: + self.assertFalse(True, msg=("Error: Total number of dependencies are correct")) + else: + output_string1 = (self.driver.find_element_by_xpath("//div[@class='alert alert-info']").text) + if (No_dependecies_msg in output_string1): + pass + else: + self.assertFalse(True, msg=("Error: Not correct output string")) + time.sleep(2) + Reverse_build_dependecies = self.driver.find_element_by_xpath("//a[@href='#brought-in-by']") + Reverse_string_dependcies = str(Reverse_build_dependecies.text) + Reverse_build_dependecies_num = (int(((Reverse_string_dependcies.split('('))[1].split(')'))[0])) + Reverse_build_dependecies.click() + time.sleep(2) + if (Reverse_build_dependecies_num > 0): + Reverse_dependencies_length = len( + self.driver.find_elements_by_xpath("//*[@id='brought-in-by']/table/tbody/tr")) + if (Reverse_dependencies_length == Reverse_build_dependecies_num): + Column_number = len( + self.driver.find_elements_by_xpath("// *[@id ='brought-in-by']/table/thead/tr/th")) + for i in range(1, Reverse_dependencies_length + 1): + for j in range(1, Column_number + 1): + Reverse_Recipie_name = self.driver.find_element_by_xpath( + "//*[@id='brought-in-by']/table/tbody/tr[%d]/td[%d]" % (i, j)) + if (Reverse_Recipie_name.text != ''): + if (j == 1): + Reverse_Recipie_name_link = self.driver.find_element_by_xpath( + "//*[@id='brought-in-by']/table/tbody/tr[%d]/td[%d]/a" % (i, j)) + action = ActionChains(self.driver) + action.move_to_element(Reverse_Recipie_name_link).perform() + url = Reverse_Recipie_name_link.get_attribute("href") + self.assertTrue(url, + msg=("url not found for corresponding reverse dependencies")) + else: + self.assertFalse(True, msg=("Error! Corresponding name and size are not avaialbale for reverse build dependencies")) + else: + self.assertFalse(True, msg=("Error:Total number of Reverse dependencies are not correct")) + else: + output_string1 = (self.driver.find_element_by_xpath("//div[@class='alert alert-info']").text) + if (No_Reverse_dependecies_msg in output_string1): + pass + else: + self.assertFalse(True, msg=("Error: Correct output string has not been displayed")) + time.sleep(2) + if (row_number != (len(default_column_list))): + self.driver.back() + time.sleep(2) + self.driver.find_element_by_xpath("//*[@id='breadcrumb']/li[4]/a").click() + time.sleep(4) + self.driver.find_element_by_id("search-input-builtrecipestable").click() + self.driver.find_element_by_id("search-input-builtrecipestable").send_keys(test_package2) + self.driver.find_element_by_xpath("//button[@class='btn btn-default']").click() + time.sleep(2) + self.driver.find_element_by_xpath("//*[@id='builtrecipestable']/tbody/tr/td[1]/a").click() + Package_dependencies = self.driver.find_element_by_xpath("//a[contains(@href,'recipe_packages')]") + string_Package_dependencies = str(Package_dependencies.text) + Package_dependecies_num = (int(((string_Package_dependencies.split('('))[1].split(')'))[0])) + Package_dependencies.click() + time.sleep(2) + if (Package_dependecies_num > 0): + Package_edit_Show_Rows = Select( + self.driver.find_element_by_xpath("//*[@id='packages-built']/form[2]/div/select")) + selected_number_rows = "150" + Package_edit_Show_Rows.select_by_value(selected_number_rows) + time.sleep(5) + Package_dependendencies_length = len(self.driver.find_elements_by_xpath( + "//table[@class='table table-bordered table-hover tablesorter']/tbody/tr")) + if (Package_dependendencies_length == Package_dependecies_num): + pass + else: + self.assertFalse(True, msg=("Error: Total number of packages in searched recipie are not correct")) + else: + Package_output_string = (self.driver.find_element_by_xpath("//div[@class='alert alert-info']").text) + if (No_dependecies_Pkg_msg in Package_output_string): + pass + else: + self.assertFalse(True, msg=("Error : Correct output string not diaplyed for searched recipie")) + time.sleep(2) + Search_build_dependencies = self.driver.find_element_by_xpath("//a[contains(@href,'active_tab/3')]") + string_Search_dependencies = str(Search_build_dependencies.text) + Search_build_dependencies_num = (int(((string_Search_dependencies.split('('))[1].split(')'))[0])) + Search_build_dependencies.click() + time.sleep(5) + if (Search_build_dependencies_num > 0): + Searc_dependencies_length = len(self.driver.find_elements_by_xpath( + "(//table[@class='table table-bordered table-hover'])[2]//tbody//tr")) + if (Searc_dependencies_length == Search_build_dependencies_num): + pass + Search_Column_number_Dependencies = len( + self.driver.find_elements_by_xpath("// *[@id ='dependencies']/table/thead/tr/th")) + Search_Build_Recipies_List = [] + for i in range(1, Searc_dependencies_length + 1): + for j in range(1, Search_Column_number_Dependencies + 1): + Search_Recipie_name = self.driver.find_element_by_xpath( + "//*[@id='dependencies']/table/tbody/tr[%d]/td[%d]" % (i, j)) + if (Search_Recipie_name.text != ''): + if (j == 1): + Search_Recipie_name_link = self.driver.find_element_by_xpath( + "//*[@id='dependencies']/table/tbody/tr[%d]/td[%d]/a" % (i, j)) + Search_Build_Recipies_List.append(Search_Recipie_name_link.text) + action = ActionChains(self.driver) + action.move_to_element(Search_Recipie_name_link).perform() + time.sleep(2) + url = Search_Recipie_name_link.get_attribute("href") + self.assertTrue(url, msg=("url not found for search build dependencies")) + else: + self.assertFalse(True, msg=("Error! Corresponding name and size are not avaialbale for searched recipie build dependencies")) + result = all(elem in Search_Build_Recipies_List for elem in Search_Build_List) + if result: + pass + else: + self.assertFalse(True, msg=("Error:Serached list not found")) + else: + self.assertFalse(True, msg=("Error: Total number of dependencies in searched recipie are correct")) + time.sleep(2) + + Search_Reverse_build_dependencies = self.driver.find_element_by_xpath("//a[@href='#brought-in-by']") + Search_Reverse_string_dependencies = str(Search_Reverse_build_dependencies.text) + Search_Reverse_build_dependencies_num = ( + int(((Search_Reverse_string_dependencies.split('('))[1].split(')'))[0])) + Search_Reverse_build_dependencies.click() + time.sleep(2) + if (Search_Reverse_build_dependencies_num > 0): + Search_Reverse_dependencies_length = len( + self.driver.find_elements_by_xpath("//*[@id='brought-in-by']/table/tbody/tr")) + if (Search_Reverse_dependencies_length == Search_Reverse_build_dependencies_num): + Search_Reverse_Column_number = len( + self.driver.find_elements_by_xpath("// *[@id ='brought-in-by']/table/thead/tr/th")) + for i in range(1, Search_Reverse_dependencies_length + 1): + for j in range(1, Search_Reverse_Column_number + 1): + Search_Reverse_build_Recipie_name = self.driver.find_element_by_xpath( + "//*[@id='brought-in-by']/table/tbody/tr[%d]/td[%d]" % (i, j)) + if (j == 1): + Search_Reverse_Recipie_name_link = self.driver.find_element_by_xpath( + "//*[@id='brought-in-by']/table/tbody/tr[%d]/td[%d]/a" % (i, j)) + action = ActionChains(self.driver) + action.move_to_element(Search_Reverse_Recipie_name_link).perform() + time.sleep(2) + url = Search_Reverse_Recipie_name_link.get_attribute("href") + self.assertTrue(url, msg=("url not found for search reverse build dependencies")) + else: + self.assertFalse(True, msg=("Error: Total number of Reverse dependencies are not correct in serached recipies")) + if (Search_Reverse_build_dependencies_num == 0): + output_string1 = (self.driver.find_element_by_xpath("//div[@class='alert alert-info']").text) + if (No_Reverse_dependecies_msg in output_string1): + pass + else: + self.assertFalse(True, msg=("Error:Correct output string has been displayed for serached string")) + self.driver.find_element_by_xpath("//*[@id='breadcrumb']/li[3]/a").click() + self.driver.find_element_by_link_text("Packages").click() + time.sleep(2) + packages_num = self.driver.find_element_by_class_name("table-count-builtpackagestable").text + edit_Show_Rows = Select( + self.driver.find_element_by_xpath("(//select[@class='form-control pagesize-builtpackagestable'])[1]")) + selected_number_rows = "150" + edit_Show_Rows.select_by_value(selected_number_rows) + time.sleep(2) + Total_page_number=int(packages_num)/ int(selected_number_rows) + #Total_page_number = 4 + packages_row_count = 0 + page_navigation_link = 1 + for i in range(1, (Total_page_number + 1)): + if (page_navigation_link > 4): + page_navigation_link = 4 + time.sleep(2) + self.driver.find_element_by_xpath("(//*[@id='pagination-builtpackagestable']/ul//li//a[contains(@href,page)])[%d]" % page_navigation_link).click() + time.sleep(2) + packages_row_count = packages_row_count + len( + self.driver.find_elements_by_xpath("//*[@id='builtpackagestable']/tbody/tr")) + page_navigation_link = page_navigation_link + 1 + if int(packages_num) >= int(packages_row_count): + pass + else: + self.assertFalse(True, msg=("Error! The packages number is not correct")) + edit_Show_Rows = Select( + self.driver.find_element_by_xpath("(//select[@class='form-control pagesize-builtpackagestable'])[1]")) + selected_number_rows = "25" + edit_Show_Rows.select_by_value(selected_number_rows) + time.sleep(5) + row_count = len(self.driver.find_elements_by_xpath("//*[@id='builtpackagestable']/tbody/tr")) + for count in range(1, row_count + 1): + if ((self.driver.find_element_by_xpath( + "//*[@id='builtpackagestable']//tbody//tr[%d]//td[2]" % count).text) == ''): + self.assertFalse(True, msg=("Error! Version is not present for corresponding package")) + else: + pass + + if ((self.driver.find_element_by_xpath( + "//*[@id='builtpackagestable']//tbody//tr[%d]//td[3]" % count).text) == ''): + self.assertFalse(True, msg=("Error! Size is not present for corresponding package")) + else: + pass + + package_link = self.driver.find_element_by_xpath( + "//*[@id='builtpackagestable']/tbody/tr[%d]/td[1]/a" % count) + action = ActionChains(self.driver) + action.move_to_element(package_link).perform() + url = package_link.get_attribute("href") + self.assertTrue(url, msg=("url not found for corresponding packages")) + + def test_915(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + searched_key = 'hfidf' + self.driver.find_element_by_link_text("core-image-minimal").click() + self.find_element_by_link_text_in_table('nav', 'Configuration').click() + self.driver.find_element_by_link_text("BitBake variables").click() + self.driver.find_element_by_xpath("//*[@placeholder='Search BitBake variables']") + self.driver.find_element_by_id("search").clear() + self.driver.find_element_by_id("search").send_keys(searched_key) + self.driver.find_element_by_id("search-button").click() + if ( + self.driver.find_element_by_xpath("//div[@class='page-header build-data']").text.find(" No variables found")): + self.driver.find_element_by_xpath("//*[@value='" + searched_key + "']") + self.driver.find_element_by_xpath("//*[@id='searchform']/button[2]").click() + time.sleep(5) + elif (self.driver.find_element_by_xpath("//div[@class='page-header build-data']").text.find("variables found")): + self.driver.find_element_by_id("search").click() + self.driver.find_element_by_xpath("//*[@id='searchform']/div/div/a/span").click() + else: + self.assertFalse(True, msg=("Error:Searched text not found in ex[ected output")) + head_list = self.get_table_head_text('otable') + self.assertTrue(head_list == ['Variable', 'Value', 'Set in file', 'Description'], \ + msg=("head row contents wrong")) + head_list_sort = self.get_table_head_text('otable') + self.find_element_by_link_text_in_table('otable', 'Variable').click() + sort_list = self.get_table_column_text_by_column_number('otable', 1) + self.assertTrue(Utility.is_list_inverted(sort_list), msg=("list not inverted")) + + self.driver.find_element_by_id("search").clear() + self.driver.find_element_by_id("search").send_keys("poky") + self.driver.find_element_by_id("search-button").click() + head_list = self.get_table_head_text('otable') + self.assertTrue(head_list == ['Variable', 'Value', 'Set in file', 'Description'], \ + msg=("head row contents wrong")) + head_list = self.get_table_head_text('otable') + self.assertTrue(head_list == ['Variable', 'Value', 'Set in file', 'Description'], \ + msg=("head row contents wrong")) + sort_list = self.get_table_column_text_by_column_number('otable', 1) + self.assertTrue(Utility.is_list_inverted(sort_list), msg=("list not in order")) + time.sleep(2) + self.driver.find_element_by_id("search").clear() + self.driver.find_element_by_xpath("//*[@id='searchform']/div/div/a/span").click() + self.driver.find_element_by_xpath("(//span[@class='glyphicon glyphicon-filter filtered'])[1]").click() + time.sleep(10) + self.driver.find_element_by_xpath("(//input[@type='radio'])[2]").click() + self.driver.find_element_by_xpath("(//button[@type='submit'])[2]").click() + self.driver.find_element_by_id("search").clear() + self.driver.find_element_by_id("search").send_keys("poky") + self.driver.find_element_by_id("search-button").click() + self.driver.find_element_by_xpath("(//span[@class='glyphicon glyphicon-filter filtered'])[1]").click() + radio_button = self.driver.find_element_by_xpath( + "//*[@id='filter_vhistory__file_name']/div/div/form/div[2]/div[1]/label/input") + time.sleep(3) + if (radio_button.is_selected()): + pass + else: + self.assertFalse(True, msg=("Error: Filter not got cleared after search")) + + def test_916(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_link_text("core-image-minimal").click() + self.driver.find_element_by_link_text('Configuration').click() + self.driver.find_element_by_link_text("BitBake variables").click() + variable_list = self.get_table_column_text('class', 'variable_name') + self.assertTrue(Utility.is_list_sequenced(variable_list), msg=("list not in order")) + self.find_element_by_link_text_in_table('otable', 'Variable').click() + variable_list = self.get_table_column_text('class', 'variable_name') + self.assertTrue(Utility.is_list_inverted(variable_list), msg=("list not inverted")) + self.find_element_by_link_text_in_table('otable', 'Variable').click() + self.driver.find_element_by_id("search").clear() + self.driver.find_element_by_id("search").send_keys("lib") + self.driver.find_element_by_id("search-button").click() + variable_list = self.get_table_column_text('class', 'variable_name') + self.assertTrue(Utility.is_list_sequenced(variable_list), msg=("list not in order")) + + def test_923(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_xpath("//*[@id='global-nav']/ul/li[1]/a").click() + page_header = self.driver.find_elements_by_xpath("//div[@class='page-header']") + if (len(page_header) == 2): + if (self.driver.find_element_by_xpath("(//div[@class='page-header'])[1]").text == 'Latest builds'): + print("Latest builds string is present ") + elif (self.driver.find_element_by_xpath("(//div[@class='page-header'])[2]").text == 'All builds'): + print("All builds string is present") + else: + if (self.driver.find_element_by_xpath("(//div[@class='page-header'])[1]").text == 'All builds'): + print("All builds string is only present") + time.sleep(3) + c_list = self.get_table_column_text('class', 'completed_on') + self.assertTrue(Utility.is_list_inverted(c_list), msg=("list not inverted")) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(3) + self.driver.find_element_by_id("checkbox-started_on").click() + time.sleep(3) + self.driver.find_element_by_id("checkbox-time").click() + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(3) + self.log.info( + "Checking column headings : outcome, recipe, machine, started on, completed on, failed tasks, errors, warnings, time, image files, project from Table") + head_list = self.get_table_head_text('table-container-allbuildstable') + for item in ['Outcome', 'Recipe', 'Machine', 'Started on', 'Completed on', 'Failed tasks', 'Errors', 'Warnings', + 'Time', "Image files", "Project"]: + self.failUnless(item in head_list, msg=item + ' is missing from table head.') + self.log.info("All column heading are there") + + def test_924(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get( + "http://localhost:8000/toastergui/builds/?limit=25&page=1&orderby=-completed_on&default_orderby=-completed_on&") + c_list = self.get_table_column_text('class', 'completed_on') + self.assertTrue(Utility.is_list_inverted(c_list), msg=("list not inverted")) + self.driver.find_element_by_id("edit-columns-button").click() + self.driver.find_element_by_id("checkbox-errors_no").click() + head_list1 = self.get_table_head_text('allbuildstable') + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(1) + self.driver.find_element_by_id("edit-columns-button").click() + self.driver.find_element_by_id("checkbox-errors_no").click() + head_list2 = self.get_table_head_text('allbuildstable') + self.driver.find_element_by_id("edit-columns-button").click() + self.assertTrue(len(head_list2) != len(head_list1), msg=("Error: head order is not correct")) + + def test_940(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_link_text("core-image-minimal").click() + self.find_element_by_link_text_in_table('nav', 'Packages').click() + check_head_list = [u'Package', u'Package Version', u'Approx Size', ] + head_list = self.get_table_head_text('builtpackagestable') + self.assertTrue(head_list == check_head_list, msg=("head row not as expected")) + time.sleep(3) + option_ids = ['checkbox-recipe__layer_version__layer__name', 'checkbox-recipe__layer_version__branch', \ + 'checkbox-vcs_ref', 'checkbox-license', 'checkbox-recipe__name', 'checkbox-recipe__version'] + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(3) + for item in option_ids: + if not self.driver.find_element_by_id(item).is_selected(): + self.driver.find_element_by_id(item).click() + time.sleep(3) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(2) + Minimum_Table_len = len(self.driver.find_elements_by_xpath("//label[@class='text-muted']")) + elements = self.driver.find_elements_by_xpath("//label[@class='text-muted']") + Minimum_Table_len = len(elements) + if (int(Minimum_Table_len) == 2): + for item in elements: + self.driver.find_element_by_id("edit-columns-button").click() + if (item.text == 'Package' or item.text == 'Package Version'): + pass + else: + self.assertTrue(item.text, msg=("Fail :Incorrect muted column")) + + self.driver.find_element_by_id("edit-columns-button").click() + + def test_941(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_link_text("core-image-minimal").click() + self.find_element_by_link_text_in_table('nav', 'Packages').click() + column_list = self.get_table_column_text_by_column_number('builtpackagestable', 1) + self.assertTrue(Utility.is_list_sequenced(column_list), msg=("list not in order")) + self.find_element_by_link_text_in_table('builtpackagestable', 'Approx Size').click() + time.sleep(3) + self.driver.find_element_by_xpath('//*[@id="builtpackagestable"]/tbody/tr[1]/td[1]/a').click() + time.sleep(3) + self.driver.back() + time.sleep(3) + self.assertTrue(Utility.is_list_sequenced(column_list), msg=("list not in order")) + + option_ids = ['checkbox-recipe__layer_version__layer__name', 'checkbox-recipe__layer_version__branch', \ + 'checkbox-vcs_ref', 'checkbox-license', 'checkbox-recipe__name', 'checkbox-recipe__version'] + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(3) + for item in option_ids: + if not self.driver.find_element_by_id(item).is_selected(): + self.driver.find_element_by_id(item).click() + time.sleep(3) + self.driver.find_element_by_id("edit-columns-button").click() + column_head = ['Package', 'Approx Size', 'License', 'Recipe', 'Layer', 'Layer branch'] + column_number = 1 + for item in column_head: + self.find_element_by_link_text_in_table('builtpackagestable', item).click() + time.sleep(3) + self.find_elements_by_link_text_in_table('builtpackagestable', item) + if (column_number == 2 or column_number == 6): + column_number = column_number + 1 + column_list_packages = self.get_table_column_text_by_column_number('builtpackagestable', column_number) + self.assertTrue(Utility.is_list_sequenced(column_list_packages) or Utility.is_list_inverted(column_list_packages), + msg=("list not in order")) + column_number = column_number + 1 + + self.driver.find_element_by_id("edit-columns-button").click() + for item in option_ids: + if self.driver.find_element_by_id(item).is_selected(): + self.driver.find_element_by_id(item).click() + time.sleep(3) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(3) + column_list = self.get_table_column_text_by_column_number('builtpackagestable', 1) + self.assertTrue(Utility.is_list_sequenced(column_list) or Utility.is_list_inverted(column_list), msg=("list not in order")) + + self.find_element_by_link_text_in_table('builtpackagestable', 'Approx Size').click() + self.driver.find_element_by_id("search-input-builtpackagestable").clear() + time.sleep(3) + self.driver.find_element_by_id("search-input-builtpackagestable").send_keys('lib') + time.sleep(3) + self.driver.find_element_by_id("search-submit-builtpackagestable").click() + time.sleep(3) + column_list = self.get_table_column_text_by_column_number('builtpackagestable', 3) + self.assertTrue(Utility.is_list_sequenced(column_list), msg=("list not in order")) + self.driver.find_element_by_id("search-input-builtpackagestable").clear() + time.sleep(3) + self.find_element_by_link_text_in_table('nav', 'core-image-minimal').click() + column_list = self.get_table_column_text_by_column_number('installedpackagestable', 1) + self.assertTrue(Utility.is_list_sequenced(column_list), msg=("list not in order")) + self.find_element_by_link_text_in_table('installedpackagestable', 'Approx Size').click() + time.sleep(3) + self.driver.find_element_by_xpath("//*[@id='installedpackagestable']/tbody/tr[1]/td[1]/a").click() + time.sleep(3) + self.driver.back() + column_list = self.get_table_column_text_by_column_number('installedpackagestable', 3) + self.assertTrue(Utility.is_list_sequenced(column_list), msg=("list not in order")) + + option_ids1 = ['checkbox-size', 'checkbox-license', 'checkbox-dependencies', 'checkbox-reverse_dependencies', + 'checkbox-recipe__name', \ + 'checkbox-recipe__version', 'checkbox-recipe__layer_version__layer__name', + 'checkbox-recipe__layer_version__branch', 'checkbox-vcs_ref', 'checkbox-installed_size'] + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(3) + for item in option_ids1: + if not self.driver.find_element_by_id(item).is_selected(): + self.driver.find_element_by_id(item).click() + time.sleep(3) + self.driver.find_element_by_id("edit-columns-button").click() + column_head = ['Package', 'Approx Size', 'License', 'Recipe', 'Layer', 'Layer branch', 'Installed size'] + column_number = 1 + for item in column_head: + if ( + column_number == 2 or column_number == 5 or column_number == 6 or column_number == 8 or column_number == 11): + column_number = column_number + 1 + self.find_element_by_link_text_in_table('installedpackagestable', item).click() + time.sleep(3) + self.find_elements_by_link_text_in_table('installedpackagestable', item) + if ( + column_number == 2 or column_number == 5 or column_number == 6 or column_number == 8 or column_number == 11): + column_list_packages = self.get_table_column_text_by_column_number('installedpackagestable', + column_number) + self.assertTrue(Utility.is_list_sequenced(column_list_packages) or Utility.is_list_inverted(column_list_packages), + msg=("list not in order")) + column_number = column_number + 1 + + self.driver.find_element_by_id("edit-columns-button").click() + for item in option_ids1: + if self.driver.find_element_by_id(item).is_selected(): + self.driver.find_element_by_id(item).click() + time.sleep(3) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(3) + column_list = self.get_table_column_text_by_column_number('installedpackagestable', 1) + self.assertTrue(Utility.is_list_sequenced(column_list) or Utility.is_list_inverted(column_list), msg=("list not in order")) + + self.find_element_by_link_text_in_table('installedpackagestable', 'Package').click() + self.driver.find_element_by_id("search-input-installedpackagestable").clear() + time.sleep(3) + self.driver.find_element_by_id("search-input-installedpackagestable").send_keys('lib') + time.sleep(3) + self.driver.find_element_by_id("search-submit-installedpackagestable").click() + time.sleep(3) + column_list = self.get_table_column_text_by_column_number('installedpackagestable', 1) + self.assertTrue(Utility.is_list_sequenced(column_list) or Utility.is_list_inverted(column_list), msg=("list not in order")) + self.driver.find_element_by_id("search-input-installedpackagestable").clear() + time.sleep(3) + + def test_942(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_link_text("core-image-minimal").click() + self.driver.find_element_by_link_text("Packages").click() + default_column_list = self.get_table_column_text_by_column_number('builtpackagestable', 1) + self.assertTrue(Utility.is_list_sequenced(default_column_list), msg=("list not in sequence for default pacakge column")) + head_list = self.get_table_head_text('builtpackagestable') + self.driver.find_element_by_id("edit-columns-button").click() + self.driver.find_element_by_id("checkbox-recipe__name").click() + self.driver.find_element_by_id("edit-columns-button").click() + new_head = self.get_table_head_text('builtpackagestable') + self.assertTrue(new_head > head_list) + self.driver.find_element_by_id("edit-columns-button").click() + self.driver.find_element_by_id("checkbox-recipe__name").click() + self.driver.find_element_by_id("edit-columns-button").click() + new_head1 = self.get_table_head_text('builtpackagestable') + self.assertTrue(new_head1 < new_head) + + def test_943(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + times = 2 + for i in range(0, times): + self.driver.find_element_by_link_text("core-image-minimal").click() + self.find_element_by_link_text_in_table('nav', 'Packages').click() + column_list = self.get_table_column_text_by_column_number('builtpackagestable', 1) + self.assertTrue(Utility.is_list_sequenced(column_list), msg=("list not in order")) + head_list_before_seearch = self.get_table_head_text('builtpackagestable') + self.assertTrue(self.driver.find_element_by_xpath( + "//input[@id='search-input-builtpackagestable' and @placeholder='Search packages built']"), + msg=("plceholder string not present")) + self.driver.find_element_by_id("search-input-builtpackagestable").clear() + self.driver.find_element_by_id("search-input-builtpackagestable").click() + self.driver.find_element_by_id("search-input-builtpackagestable").send_keys("bash") + self.driver.find_element_by_id("search-submit-builtpackagestable").click() + if (int(self.driver.find_element_by_xpath( + "//div[@class='page-header build-data']/h1/span[@class='table-count-builtpackagestable']").text )== 0): + print("Pass:No packages found") + time.sleep(5) + self.driver.find_element_by_xpath("(//span[contains(@class,'remove-search-btn')])[1]").click() + time.sleep(2) + else: + print("Pass:packages found") + self.assertTrue(self.is_text_present("packages found"), msg=("no packages found text")) + column_list = self.get_table_column_text_by_column_number('builtpackagestable', 1) + self.assertTrue(Utility.is_list_sequenced(column_list), msg=("list not in order")) + new_head_after_search = self.get_table_head_text('builtpackagestable') + self.assertTrue(new_head_after_search == head_list_before_seearch) + self.driver.find_element_by_id("search-input-builtpackagestable").click() + self.driver.find_element_by_xpath("(//span[contains(@class,'remove-search-btn')])[2]").click() + time.sleep(5) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(2) + self.driver.find_element_by_id("checkbox-size").click() + self.driver.find_element_by_id("edit-columns-button").click() + self.driver.find_element_by_id("search-input-builtpackagestable").clear() + self.driver.find_element_by_id("search-input-builtpackagestable").send_keys("GPL") + self.driver.find_element_by_id("search-submit-builtpackagestable").click() + self.assertTrue(self.is_text_present("packages found"), msg=("no packages found text")) + + self.find_element_by_link_text_in_table('nav', 'core-image-minimal').click() + column_list = self.get_table_column_text_by_column_number('installedpackagestable', 1) + self.assertTrue(Utility.is_list_sequenced(column_list), msg=("list not in order")) + self.assertTrue(self.driver.find_element_by_xpath( + "//input[@id='search-input-installedpackagestable' and @placeholder='Search packages included']"), + msg=("plceholder string not present")) + self.driver.find_element_by_id("search-input-installedpackagestable").clear() + self.driver.find_element_by_id("search-input-installedpackagestable").send_keys("lib") + self.driver.find_element_by_id("search-submit-installedpackagestable").click() + self.assertTrue(self.is_text_present("packages found"), msg=("no packages found text")) + self.driver.find_element_by_id("search-input-installedpackagestable").clear() + self.driver.find_element_by_id("search-input-installedpackagestable").send_keys("GPL") + self.driver.find_element_by_id("search-submit-installedpackagestable").click() + self.assertTrue(self.is_text_present("packages found"), msg=("no packages found text")) + + def test_944(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_link_text("core-image-minimal").click() + self.find_element_by_link_text_in_table('nav', 'Recipes').click() + time.sleep(3) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(3) + self.driver.find_element_by_id("checkbox-layer_version__branch").click() + self.driver.find_element_by_id("checkbox-commit").click() + time.sleep(3) + self.driver.find_element_by_id("edit-columns-button").click() + otable_head_text = self.get_table_head_text('builtrecipestable') + for item in ["Layer", "Layer branch", "Layer commit"]: + self.failIf(item not in otable_head_text, msg=item + ' not in table head.') + self.get_table_element("builtrecipestable", 1, 1).click() + self.assertTrue(self.is_text_present(["Layer", "Layer branch", "Layer commit", "Recipe file"]), \ + msg=("text not in web page")) + if(self.get_table_column_text_by_column_number('builtrecipestable',9) == ''): + print("Pass:Layer branch can be empty in recipie") + self.driver.back() + time.sleep(1) + self.find_element_by_link_text_in_table('nav', 'Packages').click() + time.sleep(3) + self.driver.find_element_by_id("edit-columns-button").click() + self.driver.find_element_by_id("checkbox-recipe__layer_version__layer__name").click() + self.driver.find_element_by_id("checkbox-recipe__layer_version__branch").click() + self.driver.find_element_by_id("checkbox-vcs_ref").click() + time.sleep(3) + self.driver.find_element_by_id("edit-columns-button").click() + otable_head_text = self.get_table_head_text("builtpackagestable") + for item in ["Layer", "Layer branch", "Layer commit"]: + self.assertFalse(item not in otable_head_text, msg=("item %s should be in head row" % item)) + self.get_table_element("builtpackagestable", 1, 1).click() + self.assertTrue(self.is_text_present(["Layer", "Layer branch", "Layer commit"]), \ + msg=("text not in web page")) + if (self.get_table_column_text_by_column_number('builtpackagestable', 8) == ''): + print("Pass:Layer branch can be empty in recipie") + self.driver.back() + time.sleep(3) + self.find_element_by_link_text_in_table('nav', 'core-image-minimal').click() + time.sleep(2) + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(2) + self.driver.find_element_by_id("checkbox-recipe__layer_version__layer__name").click() + self.driver.find_element_by_id("checkbox-recipe__layer_version__branch").click() + self.driver.find_element_by_id("checkbox-vcs_ref").click() + self.driver.find_element_by_id("edit-columns-button").click() + otable_head_text = self.get_table_head_text("installedpackagestable") + for item in ["Layer", "Layer branch", "Layer commit"]: + self.assertFalse(item not in otable_head_text, msg=("item %s should be in head row" % item)) + time.sleep(3) + self.get_table_element("installedpackagestable", 1, 1).click() + time.sleep(3) + self.assertTrue(self.is_text_present(["Layer", "Layer branch", "Layer commit"]), \ + msg=("text not in web page")) + self.driver.back() + self.driver.find_element_by_link_text("Configuration").click() + otable_head_text = self.get_table_head_text() + self.assertTrue(self.is_text_present(["Layer", "Layer branch", "Layer commit"]), \ + msg=("text not in web page")) + time.sleep(3) + self.driver.back() + time.sleep(3) + self.assertTrue(self.is_text_present("Layers"), msg=("text not in web page")) + + def test_945(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + time.sleep(3) + for item in ["Packages", "Recipes", "Tasks"]: + self.driver.get(self.base_url) + self.driver.find_element_by_link_text("core-image-minimal").click() + self.driver.find_element_by_link_text(item).click() + if (item == "Packages"): + item_id = 'builtpackagestable' + self.driver.find_element_by_xpath("//*[@id='" + item_id + "']/tbody/tr[1]/td[1]/a").click() + elif (item == "Recipes"): + item_id = 'builtrecipestable' + self.driver.find_element_by_xpath("//*[@id='" + item_id + "']/tbody/tr[1]/td[1]/a").click() + elif (item == "Tasks"): + item_id = 'buildtaskstable' + self.driver.find_element_by_xpath("//*[@id='" + item_id + "']/tbody/tr[1]/td[2]/a").click() + time.sleep(3) + self.driver.find_element_by_xpath("//*[@id='breadcrumb']/li[4]/a").click() + time.sleep(3) + edit_Show_Rows = Select(self.driver.find_element_by_xpath( + "//*[@id='table-chrome-collapse-" + item_id + "']/form[2]/div/select ")) + selected_number_rows = ['10', '25', '50', '100', '150'] + for item in selected_number_rows: + edit_Show_Rows.select_by_value(item) + self.assertTrue(edit_Show_Rows, msg="rows displayed is not as per selection") + time.sleep(3) + + maxium_page_number = len(self.driver.find_elements_by_xpath("//*[@class='pagination']/li")) + if (maxium_page_number < 5 or maxium_page_number == 5): + pass + else: + print("Error: Maximum number of pages navigation button is not correct") + for i in range(2, maxium_page_number + 1): + self.driver.find_element_by_xpath("(//*[@class='pagination']/li/a[@href='#'])[%d]" % i).click() + self.driver.find_element_by_xpath("(//*[@class='pagination']/li/a[@href='#'])[%d]" % (i - 1)).click() + time.sleep(5) + + def test_946(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_link_text("core-image-minimal").click() + self.driver.find_element_by_link_text("Configuration").click() + check_list = ["Summary", "BitBake variables"] + for item in check_list: + if not self.is_element_present(how=By.LINK_TEXT, what=item): + self.log.error("%s not found" % item) + if not self.is_text_present(['Layers', 'Layer', 'Layer branch', 'Layer commit']): + self.log.error("text not found") + self.driver.find_element_by_link_text("BitBake variables").click() + if not self.is_text_present(['Variable', 'Value', 'Set in file', 'Description']): + self.log.error("text not found") + temp_element = self.find_element_by_text_in_table('otable', "Set in file") + temp_element.find_element_by_xpath( + r"//div[@class='btn-group pull-right']/a[@class='btn btn-xs ']/span[@class='glyphicon glyphicon-filter filtered']").click() + time.sleep(1) + self.driver.find_element_by_xpath("(//input[@name='filter'])[2]").click() + btns = self.driver.find_elements_by_css_selector("button.btn.btn-primary") + for btn in btns: + try: + btn.click() + break + except: + pass + time.sleep(1) + self.save_screenshot(screenshot_type='selenium', append_name='step6') + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(1) + self.save_screenshot(screenshot_type='selenium', append_name='step7') + self.driver.find_element_by_id("edit-columns-button").click() + elements = self.driver.find_elements_by_xpath("//*[@id='editcol']/li/div/label[@class='muted']") + if (len(elements) == 2): + pass + else: + print("Error ! Total default muted column is not correct") + self.driver.find_element_by_xpath("//*[@id='otable']/tbody/tr[1]/td[1]/a").click() + time.sleep(1) + element = self.driver.switch_to.active_element + check_list = ['Order', 'Configuration file', 'Operation'] + for item in check_list: + if item not in element.text: + self.log.error("%s not found" % item) + element.find_element_by_class_name("close").click() + time.sleep(3) + self.driver.find_element_by_xpath("//a[contains(@href,'yoctoproject.org')]").click() + time.sleep(3) + self.save_screenshot(screenshot_type='native', append_name='step10') + + def test_947(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_link_text("core-image-minimal").click() + self.find_element_by_link_text_in_table('nav', 'Configuration').click() + self.driver.find_element_by_link_text("BitBake variables").click() + + def xpath_option(column_name): + return self.shortest_xpath('id', 'navTab') + self.shortest_xpath('id', 'editcol') \ + + self.shortest_xpath('id', column_name) + + self.driver.find_element_by_id('edit-columns-button').click() + self.driver.find_element_by_xpath(xpath_option('description')).click() + self.driver.find_element_by_xpath(xpath_option('file')).click() + self.driver.find_element_by_id('edit-columns-button').click() + check_list = ['Description', 'Set in file'] + head_list = self.get_table_head_text('otable') + for item in check_list: + self.assertFalse(item in head_list, msg=("item %s should not be in head row" % item)) + self.driver.find_element_by_id('edit-columns-button').click() + self.driver.find_element_by_xpath(xpath_option('description')).click() + self.driver.find_element_by_xpath(xpath_option('file')).click() + self.driver.find_element_by_id('edit-columns-button').click() + head_list = self.get_table_head_text('otable') + for item in check_list: + self.assertTrue(item in head_list, msg=("item %s not in head row" % item)) + + def test_948(self): + Comparable_string = "You can only apply one filter to the table. This filter will override the current filter." + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_link_text("core-image-minimal").click() + self.find_element_by_link_text_in_table('nav', 'Configuration').click() + self.driver.find_element_by_link_text("BitBake variables").click() + self.driver.find_element_by_xpath( + "//th[@class='span4 description']//span[@class='glyphicon glyphicon-filter filtered']") + self.driver.find_element_by_xpath("//th[@class=' file']//span[@class='glyphicon glyphicon-filter filtered']") + self.driver.find_element_by_xpath( + "//th[@class=' file']//span[@class='glyphicon glyphicon-filter filtered']").click() + time.sleep(5) + self.driver.find_element_by_xpath( + "//*[@id='filter_vhistory__file_name']/div/div/form/div[2]/div[3]/label/input").click() + time.sleep(3) + self.driver.find_element_by_xpath( + "//*[@id='filter_vhistory__file_name']/div/div/form/div[3]/div/div[1]/button").click() + time.sleep(5) + self.driver.find_element_by_xpath( + "//th[@class='span4 description']//span[@class='glyphicon glyphicon-filter filtered']").click() + time.sleep(3) + if (Comparable_string == self.driver.find_element_by_xpath( + "//*[@id='filter_description']/div/div/form/div[3]/div/div[2]/p").text): + pass + else: + print("Error: string not found") + self.driver.find_element_by_xpath("//*[@id='filter_description']/div/div/form/div[1]/button").click() + time.sleep(5) + + self.driver.find_element_by_xpath( + "//th[@class=' file']//span[@class='glyphicon glyphicon-filter filtered']").click() + time.sleep(5) + self.driver.find_element_by_xpath( + "//*[@id='filter_vhistory__file_name']/div/div/form/div[2]/div[3]/label/input").click() + time.sleep(3) + self.driver.find_element_by_xpath( + "//*[@id='filter_vhistory__file_name']/div/div/form/div[3]/div/div[1]/button").click() + time.sleep(5) + self.driver.find_element_by_id("search").clear() + time.sleep(5) + self.driver.find_element_by_id("search").send_keys("BB") + time.sleep(5) + self.driver.find_element_by_id("search-button").click() + time.sleep(5) + self.driver.find_element_by_xpath( + "//th[@class=' file']//span[@class='glyphicon glyphicon-filter filtered']").click() + time.sleep(5) + radio_button_selected = self.driver.find_element_by_xpath( + "//*[@id='filter_vhistory__file_name']/div/div/form/div[2]/div[1]/label/input") + if (radio_button_selected.is_selected()): + pass + else: + print("Fail:Filter not cleared after search") + self.driver.find_element_by_xpath("//*[@id='filter_vhistory__file_name']/div/div/form/div[1]/button").click() + time.sleep(5) + self.driver.find_element_by_xpath("//*[@id='searchform']/div/div/a/span").click() + time.sleep(5) + self.driver.find_element_by_id("search").clear() + time.sleep(20) + self.driver.find_element_by_id("search").send_keys("busybox") + time.sleep(20) + self.driver.find_element_by_id("search-button").click() + time.sleep(30) + self.driver.find_element_by_xpath( + "//th[@class=' file']//span[@class='glyphicon glyphicon-filter filtered']").click() + time.sleep(5) + self.driver.find_element_by_xpath( + "//*[@id='filter_vhistory__file_name']/div/div/form/div[2]/div[5]/label/input").click() + time.sleep(3) + self.driver.find_element_by_xpath( + "//*[@id='filter_vhistory__file_name']/div/div/form/div[3]/div/div[1]/button").click() + time.sleep(10) + self.driver.find_element_by_xpath( + "//th[@class=' file']//span[@class='glyphicon glyphicon-filter filtered']").click() + time.sleep(5) + radio_button_selected = self.driver.find_element_by_xpath( + "//*[@id='filter_vhistory__file_name']/div/div/form/div[2]/div[5]/label/input") + if (radio_button_selected.is_selected()): + pass + else: + print("Fail:Filter not cleared") + self.driver.find_element_by_xpath("//*[@id='filter_vhistory__file_name']/div/div/form/div[1]/button") + + def test_949(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_link_text("core-image-minimal").click() + self.find_element_by_link_text_in_table('nav', 'core-image-minimal').click() + try: + self.driver.find_element_by_partial_link_text("Packages included") + self.driver.find_element_by_partial_link_text("Directory structure") + except Exception as e: + self.log.error(e) + self.assertFalse(True) + + package_included = (self.driver.find_element_by_xpath("//*[@id='navTab']/ul/li[1]/a").text) + self.assertTrue(self.is_text_present(package_included), + msg=("total number of packages and total size not found in Package included")) + head_list = self.get_table_head_text('installedpackagestable') + for item in ['Package', 'Package Version']: + self.assertTrue(item in head_list, msg=("item %s not in head row" % item)) + self.driver.find_element_by_id("edit-columns-button").click() + default_list = self.driver.find_elements_by_xpath("// *[@checked ='checked']") + if (len(default_list) == 4): + pass + else: + print("Fail: Deafault column numbernot correct") + self.driver.find_element_by_id("edit-columns-button").click() + self.driver.find_element_by_partial_link_text("Packages included").click() + option_ids = ['checkbox-size', 'checkbox-license', 'checkbox-dependencies', 'checkbox-reverse_dependencies', + 'checkbox-recipe__name', 'checkbox-recipe__version', \ + 'checkbox-recipe__layer_version__layer__name', 'checkbox-recipe__layer_version__branch', + 'checkbox-vcs_ref', 'checkbox-vcs_ref'] + self.driver.find_element_by_id("edit-columns-button").click() + time.sleep(3) + for item in option_ids: + if not self.driver.find_element_by_id(item).is_selected(): + self.driver.find_element_by_id(item).click() + time.sleep(3) + self.driver.find_element_by_id("edit-columns-button").click() + + self.driver.find_element_by_partial_link_text("Directory structure").click() + head_list = self.get_table_head_text('dirtable') + for item in ['Directory / File', 'Symbolic link to', 'Source package', 'Size', 'Permissions', 'Owner', 'Group']: + self.assertTrue(item in head_list, msg=("%s not found in Directory structure table head" % item)) + self.get_table_element("dirtable", 1, 1).click() + self.assertTrue(self.is_text_present( + ["Directory / File", "Symbolic link to", "Source package", "Size", "Permissions", "Owner", "Group"]), \ + msg=("text not in web page")) + + def test_950(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + check_list = ['Configuration', 'Tasks', 'Recipes', 'Packages', 'Time', 'CPU usage', 'Disk I/O'] + has_successful_build = 1 + has_failed_build = 1 + try: + pass_icon = self.driver.find_element_by_xpath("//*[@class='icon-ok-sign success']") + except Exception: + self.log.info("checking for successful build") + has_successful_build = 0 + pass + if has_successful_build: + pass_icon.click() + time.sleep(1) + self.save_screenshot(screenshot_type='selenium', append_name='step3_1') + for item in check_list: + try: + self.find_element_by_link_text_in_table('nav', item) + except Exception: + self.assertFalse(True, msg=("link %s cannot be found in the page" % item)) + check_list_2 = ['Packages included', 'Total package size', \ + 'License manifest', 'Image files'] + self.assertTrue(self.is_text_present(check_list_2), msg=("text not in web page")) + self.driver.back() + try: + fail_icon = self.driver.find_element_by_xpath("//*[@class='icon-minus-sign error']") + except Exception: + has_failed_build = 0 + self.log.info("checking if build exists") + pass + if has_failed_build: + fail_icon.click() + time.sleep(1) + self.save_screenshot(screenshot_type='selenium', append_name='step3_2') + for item in check_list: + try: + self.find_element_by_link_text_in_table('nav', item) + except Exception: + self.assertFalse(True, msg=("link %s cannot be found in the page" % item)) + check_list_3 = ['Machine', 'Distro', 'Layers', 'Total number of tasks', 'Tasks executed', \ + 'Tasks not executed', 'Reuse', 'Recipes built', 'Packages built'] + self.assertTrue(self.is_text_present(check_list_3), msg=("text not in web page")) + self.driver.back() + + def test_951(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + element_latest = self.driver.find_element_by_xpath("//*[@id='latest-builds']/div/div[2]/div[2]/div[3]/a") + str_warning_latest = element_latest.text + if (str_warning_latest.find("warnings") and str_warning_latest.split()[1] != ''): + pass + else: + print("Error :warnings are not present in latest build") + element_latest.click() + self.driver.back() + element_all_build = self.driver.find_element_by_xpath("//*[@id='allbuildstable']/tbody/tr/td[8]/a") + str_warning_all = element_all_build.text + if (str_warning_all.find("warnings") and str_warning_all.split()[1] != ''): + pass + else: + print("Error :warnings are not present in All build") + element_all_build.click() + self.driver.back() + has_successful_build = 1 + has_failed_build = 1 + try: + fail_icon = self.driver.find_element_by_xpath("//*[@class='icon-minus-sign error']") + except Exception: + has_failed_build = 0 + self.log.info("no failed build exists") + pass + if has_failed_build: + self.driver.find_element_by_partial_link_text("error").click() + self.driver.back() + time.sleep(1) + self.save_screenshot(screenshot_type='selenium', append_name='step4') + + def test_955(self): + self.case_no = self.get_case_number() + self.log.info(' CASE %s log: ' % str(self.case_no)) + self.driver.maximize_window() + self.driver.get(self.base_url) + self.driver.find_element_by_link_text("core-image-minimal").click() + self.driver.find_elements_by_xpath("//*[@id='breadcrumb']/li") + self.driver.find_elements_by_xpath("//*[@id='build-menu']/li") + self.assertFalse(self.driver.find_element_by_xpath( + "//div[@class='page-header build-data']").text != 'core-image-minimal qemux86', + msg="Build Image is not present") + + self.driver.find_element_by_xpath("//h2[@data-heading='build-artifacts']") + self.driver.find_element_by_xpath("//h2[@data-role='build-summary-heading']") + self.assertFalse(self.driver.find_element_by_xpath("(//span/strong)[3]").text != 'Completed', + msg="Completed is not present") + packages_link = self.driver.find_element_by_xpath( + "//div[@class='well well-transparent dashboard-section']/h3/a") + self.assertFalse(packages_link.get_attribute("href") == '', msg="Link not assocaited with pacakge") + self.assertFalse( + self.driver.find_element_by_xpath("((//dl[@class='dl-horizontal'])/dt)[1]").text != 'Packages included') + package_included_link = self.driver.find_element_by_xpath("((//dl[@class='dl-horizontal'])/dd)[1]/a") + self.assertFalse(package_included_link.get_attribute("href") == '', msg="Link not assocaited with pacakge") + self.assertFalse( + int(self.driver.find_element_by_xpath("((//dl[@class='dl-horizontal'])/dd)[1]/a/span").text) == 0, + msg='Packages included number is zero') + self.assertFalse( + self.driver.find_element_by_xpath("((//dl[@class='dl-horizontal'])/dt)[2]").text != 'Total package size', + msg='Total package size string not present') + self.assertFalse((self.driver.find_element_by_xpath("((//dl[@class='dl-horizontal'])/dd)[2]").text) == '', + msg='Total package size is zero') + self.assertFalse(self.driver.find_element_by_xpath("(//dl[@class='dl-horizontal'])[2]/dt").text != 'Manifests', + msg='Manifests string not present') + license_manifest_link = self.driver.find_element_by_xpath("((//dl[@class='dl-horizontal'])[2]//dd)[1]/a") + self.assertFalse(license_manifest_link.get_attribute("href") == '', + msg="Link not assocaited with license_manifest") + package_manifest_link = self.driver.find_element_by_xpath("((//dl[@class='dl-horizontal'])[2]//dd)[2]/a") + self.assertFalse(package_manifest_link.get_attribute("href") == '', + msg="Link not assocaited with package_manifest") + self.assertFalse( + self.driver.find_element_by_xpath("((//dl[@class='dl-horizontal'])[3]/dt)[1]").text != 'Image files', + msg='Image file text not present') + length = len(self.driver.find_elements_by_xpath("((//dl[@class='dl-horizontal'])[3]/dd)[1]//ul/li")) + for i in range(1, length + 1): + self.assertFalse(self.driver.find_element_by_xpath( + "(((//dl[@class='dl-horizontal'])[3]/dd)[1]//ul/li)[%d]" % i).text == '') + + Configuration_link = self.driver.find_element_by_xpath("(//div[@class='well well-transparent']/h3)[1]/a") + self.assertFalse(Configuration_link.text != 'Configuration', msg='Configuration text not present') + self.assertFalse(Configuration_link.get_attribute("href") == '', msg='Link not assocaites with configuration') + + self.driver.find_element_by_xpath( + "//div[@class='col-md-4 dashboard-section']/div[@class='well well-transparent']/dl/dt") + + self.assertFalse(self.driver.find_element_by_xpath( + "(//div[@class='col-md-4 dashboard-section']/div[@class='well well-transparent']/dl/dt)[1]").text != 'Machine', + msg='machine text not found') + self.assertFalse(self.driver.find_element_by_xpath( + "(//div[@class='col-md-4 dashboard-section']/div[@class='well well-transparent']/dl/dt)[2]").text != 'Distro', + msg='distro text not found') + self.assertFalse(self.driver.find_element_by_xpath( + "(//div[@class='col-md-4 dashboard-section']/div[@class='well well-transparent']/dl/dt)[3]").text != 'Layers', + msg='Layers text not found') + self.assertFalse(self.driver.find_element_by_xpath( + "(//div[@class='col-md-4 dashboard-section']/div[@class='well well-transparent']/dl/dd)[1]").text != 'qemux86', + msg='qemux86 text not found') + self.assertFalse(self.driver.find_element_by_xpath( + "(//div[@class='col-md-4 dashboard-section']/div[@class='well well-transparent']/dl/dd)[2]").text != 'poky', + msg='poky text not found') + self.assertFalse(self.driver.find_element_by_xpath( + "((//div[@class='col-md-4 dashboard-section']/div[@class='well well-transparent']/dl/dd)[3]/ul/li)[1]").text != 'meta-poky', + msg='meta-poky text not found') + self.assertFalse(self.driver.find_element_by_xpath( + "((//div[@class='col-md-4 dashboard-section']/div[@class='well well-transparent']/dl/dd)[3]/ul/li)[2]").text != 'meta-yocto-bsp', + msg='meta-yocto-bsp string not found') + self.assertFalse(self.driver.find_element_by_xpath( + "((//div[@class='col-md-4 dashboard-section']/div[@class='well well-transparent']/dl/dd)[3]/ul/li)[3]").text != 'openembedded-core', + msg='openembedded-core string not found') + + tasks_link = self.driver.find_element_by_xpath("(//div[@class='well well-transparent']/h3)[2]/a") + self.assertFalse(tasks_link.text != 'Tasks', msg="Task text not found") + self.assertFalse(tasks_link.get_attribute("href") == '', msg='Link not assocaites with tasks') + self.assertFalse(self.driver.find_element_by_xpath( + "((//div[@class='well well-transparent'])[2]/dl/dt)[1]").text != 'Total number of tasks', + msg='Text not available for tasks') + + No_tasks_link = self.driver.find_element_by_xpath("((//div[@class='well well-transparent'])[2]/dl/dd)[1]/a") + self.assertFalse(int(No_tasks_link.text) == 0, msg='No of toatl task is 0') + self.assertFalse(No_tasks_link.get_attribute("href") == '', + msg='Link not assocaited with total number of tasks') + + self.assertFalse(self.driver.find_element_by_xpath( + "((//div[@class='well well-transparent'])[2]/dl/dt)[2]").text != 'Tasks executed', + msg='Tasks executed text not found') + + Executed_tasks_link = self.driver.find_element_by_xpath( + "((//div[@class='well well-transparent'])[2]/dl/dd)[2]/a") + self.assertFalse(int(Executed_tasks_link.text) == 0, msg='Total number of Tasks executed is zero') + self.assertFalse(Executed_tasks_link.get_attribute("href") == '', msg='Link not assocaited with Executed tasks') + self.assertFalse(self.driver.find_element_by_xpath( + "((//div[@class='well well-transparent'])[2]/dl/dt)[3]").text != 'Tasks not executed') + + Not_Executed_tasks_link = self.driver.find_element_by_xpath( + "((//div[@class='well well-transparent'])[2]/dl/dd)[3]/a") + self.assertFalse(int(Not_Executed_tasks_link.text) == 0, msg='Total number of not executed tasks is zero') + self.assertFalse(Not_Executed_tasks_link.get_attribute("href") == '', + msg='Link not assocaited with not Executed tasks') + self.assertFalse( + self.driver.find_element_by_xpath("((//div[@class='well well-transparent'])[2]/dl/dt)[4]").text != 'Reuse', + msg='Reuse ttext not present') + + Reuse_tasks_link = self.driver.find_element_by_xpath("((//div[@class='well well-transparent'])[2]/dl/dd)[3]/a") + self.assertFalse(int(Reuse_tasks_link.text) == 0, msg='Resue tasks are showing zero') + + self.assertFalse( + (int(No_tasks_link.text) != (int(Executed_tasks_link.text) + int(Not_Executed_tasks_link.text))), + msg='Total Task calucaltion not correct') + Recipies_link = self.driver.find_element_by_xpath("((//div[@class='well well-transparent']/h3)[3]/a)[1]") + self.assertFalse(Recipies_link.text != 'Recipes', msg='Recipes text not found') + self.assertFalse(Recipies_link.get_attribute("href") == '', msg='Link not associated with Recipes section') + Packages_link = self.driver.find_element_by_xpath("((//div[@class='well well-transparent']/h3)[3]/a)[2]") + self.assertFalse(Packages_link.text != 'Packages', msg='Packages text not found') + self.assertFalse(Packages_link.get_attribute("href") == '', msg='Link not associated with packages section') + self.assertFalse(self.driver.find_element_by_xpath( + "((//div[@class='well well-transparent']/dl)[3]/dt)[1]").text != 'Recipes built', + msg='Recipie built text not found') + Recipie_built_link = self.driver.find_element_by_xpath( + "((//div[@class='well well-transparent']/dl)[3]/dd)[1]/a") + self.assertFalse(int(Recipie_built_link.text) == 0, msg="Total packages number is showing zero") + self.assertFalse(Recipie_built_link.get_attribute("href") == '', + msg='Link not associated with built recipie section') + url_Recipie_built_link = Recipie_built_link.get_attribute("href") + self.assertFalse(self.driver.find_element_by_xpath( + "((//div[@class='well well-transparent']/dl)[3]/dt)[2]").text != 'Packages built', + msg='Packages built text not found') + Package_built_link = self.driver.find_element_by_xpath( + "((//div[@class='well well-transparent']/dl)[3]/dd)[2]/a") + self.assertFalse(int(Package_built_link.text) == 0, msg="Total packages number is showing zero") + self.assertFalse(Package_built_link.get_attribute("href") == '', + msg='Link not associated with built packages section') |