aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMihail Stanciu <stanciux.mihail@intel.com>2015-08-19 14:29:24 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-08-19 18:01:03 +0100
commitd8c37780609571e95edef9a220225927eb94b174 (patch)
tree786f8876d7cc875ba4037bb089968f1faab9877a
parentbaed115081f888e027f92f37e12dc2dd2b874bf0 (diff)
downloadbitbake-d8c37780609571e95edef9a220225927eb94b174.tar.gz
toasteruitest: Updated UI tests cases to use dom IDs and 1.9 UI changes
Updated existing tests to use dom IDs where necessary. Updated tests to use 1.9 specific UI changes: - removed deprecated columns(log and layer directory) - changed expected names for table header("Recipe" instead of "Target") Added tests for TC 942 and 943 which were missing Removed test for TC 959 which was deprecated under 1.9 Signed-off-by: Mihail Stanciu <stanciux.mihail@intel.com> Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xlib/toaster/contrib/tts/toasteruitest/toaster_automation_test.py307
1 files changed, 133 insertions, 174 deletions
diff --git a/lib/toaster/contrib/tts/toasteruitest/toaster_automation_test.py b/lib/toaster/contrib/tts/toasteruitest/toaster_automation_test.py
index 0cb393433..2a2078f08 100755
--- a/lib/toaster/contrib/tts/toasteruitest/toaster_automation_test.py
+++ b/lib/toaster/contrib/tts/toasteruitest/toaster_automation_test.py
@@ -605,18 +605,16 @@ class toaster_cases(toaster_cases_base):
self.driver.maximize_window()
self.driver.get(self.base_url)
# open all columns
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
# adding explicitly wait for chromedriver..-_-
self.browser_delay()
- self.driver.find_element_by_id("log").click()
- self.browser_delay()
self.driver.find_element_by_id("started_on").click()
self.browser_delay()
self.driver.find_element_by_id("time").click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
# dict: {lint text name : actual class name}
- table_head_dict = {'Outcome':'outcome', 'Target':'target', 'Machine':'machine', 'Started on':'started_on', 'Completed on':'completed_on', \
- 'Errors':'errors_no', 'Warnings':'warnings_no', 'Time':'time', 'Log':'log'}
+ table_head_dict = {'Outcome':'outcome', 'Recipe':'target', 'Machine':'machine', 'Started on':'started_on', 'Completed on':'completed_on', \
+ 'Errors':'errors_no', 'Warnings':'warnings_no', 'Time':'time'}
for key in table_head_dict:
try:
self.driver.find_element_by_link_text(key).click()
@@ -653,7 +651,7 @@ class toaster_cases(toaster_cases_base):
print ori_target_column_texts
self.driver.find_element_by_id("search").clear()
self.driver.find_element_by_id("search").send_keys(pattern)
- self.driver.find_element_by_css_selector("button.btn").click()
+ self.driver.find_element_by_id("search-button").click()
new_target_column_texts = self.get_table_column_text("class", "target")
# if nothing found, we still count it as "pass"
if new_target_column_texts:
@@ -673,11 +671,11 @@ class toaster_cases(toaster_cases_base):
self.driver.maximize_window()
self.driver.get(self.base_url)
# when opening a new page, "started_on" is not displayed by default
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
# currently all the delay are for chrome driver -_-
self.browser_delay()
self.driver.find_element_by_id("started_on").click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
# step 4
items = ["Outcome", "Completed on", "Started on", "Failed tasks", "Errors", "Warnings"]
for item in items:
@@ -711,7 +709,7 @@ class toaster_cases(toaster_cases_base):
self.save_screenshot(screenshot_type='selenium', append_name='step6')
self.driver.find_element_by_id("search").clear()
self.driver.find_element_by_id("search").send_keys("core-image")
- self.driver.find_element_by_css_selector("button.btn").click()
+ self.driver.find_element_by_id("search-button").click()
##############
@@ -737,24 +735,24 @@ class toaster_cases(toaster_cases_base):
self.driver.find_element_by_id("search").clear()
self.driver.find_element_by_id("search").send_keys("busybox")
- self.driver.find_element_by_css_selector("button.btn").click()
+ self.driver.find_element_by_id("search-button").click()
self.browser_delay()
self.save_screenshot(screenshot_type='selenium', append_name='step5')
self.driver.find_element_by_css_selector("i.icon-remove").click()
# Save screen here
self.save_screenshot(screenshot_type='selenium', append_name='step5_2')
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
self.driver.find_element_by_id("cpu_used").click()
self.driver.find_element_by_id("disk_io").click()
self.driver.find_element_by_id("task_log").click()
self.driver.find_element_by_id("recipe_version").click()
self.driver.find_element_by_id("time_taken").click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_css_selector("edit-columns-button").click()
# The operation is the same as case901
# dict: {lint text name : actual class name}
table_head_dict = {'Order':'order', 'Recipe':'recipe_name', 'Task':'task_name', 'Executed':'executed', \
'Outcome':'outcome', 'Cache attempt':'cache_attempt', 'Time (secs)':'time_taken', 'CPU usage':'cpu_used', \
- 'Disk I/O (ms)':'disk_io', 'Log':'task_log'}
+ 'Disk I/O (ms)':'disk_io'}
for key in table_head_dict:
# This is tricky here: we are doing so because there may be more than 1
# same-name link_text in one page. So we only find element inside the table
@@ -818,17 +816,17 @@ class toaster_cases(toaster_cases_base):
'Time':{
'class':'time_taken',
'check_head_list':['Recipe', 'Task', 'Executed', 'Outcome', 'Time (secs)'],
- 'check_column_list':['cpu_used', 'cache_attempt', 'disk_io', 'task_log', 'order', 'recipe_version']
+ 'check_column_list':['cpu_used', 'cache_attempt', 'disk_io', 'order', 'recipe_version']
},
'CPU usage':{
'class':'cpu_used',
'check_head_list':['Recipe', 'Task', 'Executed', 'Outcome', 'CPU usage'],
- 'check_column_list':['cache_attempt', 'disk_io', 'task_log', 'order', 'recipe_version', 'time_taken']
+ 'check_column_list':['cache_attempt', 'disk_io', 'order', 'recipe_version', 'time_taken']
},
'Disk I/O':{
'class':'disk_io',
'check_head_list':['Recipe', 'Task', 'Executed', 'Outcome', 'Disk I/O (ms)'],
- 'check_column_list':['cpu_used', 'cache_attempt', 'task_log', 'order', 'recipe_version', 'time_taken']
+ 'check_column_list':['cpu_used', 'cache_attempt', 'order', 'recipe_version', 'time_taken']
}
}
for key in test_dict:
@@ -840,10 +838,10 @@ class toaster_cases(toaster_cases_base):
column_list = self.get_table_column_text('class', test_dict[key]['class'])
self.failUnless(is_list_inverted(column_list))
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
for item2 in test_dict[key]['check_column_list']:
self.driver.find_element_by_id(item2).click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
# TBD: save screen here
@@ -916,36 +914,35 @@ class toaster_cases(toaster_cases_base):
self.driver.find_element_by_id("search").clear()
self.driver.find_element_by_id("search").send_keys(test_package1)
- self.driver.find_element_by_css_selector("button.btn").click()
+ self.driver.find_element_by_id("search-button").click()
# Save screen here
self.save_screenshot(screenshot_type='selenium', append_name='step4')
self.driver.find_element_by_css_selector("i.icon-remove").click()
self.save_screenshot(screenshot_type='selenium', append_name='step4_2')
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
self.driver.find_element_by_id("depends_on").click()
self.driver.find_element_by_id("layer_version__branch").click()
self.driver.find_element_by_id("layer_version__layer__commit").click()
- self.driver.find_element_by_id("layer_version__local_path").click()
self.driver.find_element_by_id("depends_by").click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
self.find_element_by_link_text_in_table(self.table_name, 'Recipe').click()
# Check the inverted table by Recipe
# Recipe doesn't have class name
- inverted_tasks_column_count = len(self.driver.find_elements_by_xpath("/html/body/div[2]/div/div[2]/div[2]/table/tbody/tr/td[1]"))
- print inverted_tasks_column_count
- inverted_column_list = self.get_table_column_text_by_column_number(self.table_name, 1)
+ #inverted_tasks_column_count = len(self.driver.find_elements_by_xpath("/html/body/div[2]/div/div[2]/div[2]/table/tbody/tr/td[1]"))
+ #print inverted_tasks_column_count
+ #inverted_column_list = self.get_table_column_text_by_column_number(self.table_name, 1)
#print inverted_column_list
- self.driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/table/tbody/tr[1]/td[1]/a").click()
- self.driver.back()
- self.failUnless(is_list_inverted(inverted_column_list))
- self.find_element_by_link_text_in_table(self.table_name, 'Recipe').click()
+ #self.driver.find_element_by_partial_link_text("zlib").click()
+ #self.driver.back()
+ #self.failUnless(is_list_inverted(inverted_column_list))
+ #self.find_element_by_link_text_in_table(self.table_name, 'Recipe').click()
- table_head_dict = {'Recipe file':'recipe_file', 'Section':'recipe_section', \
+ table_head_dict = {'Recipe':'recipe__name', 'Recipe file':'recipe_file', 'Section':'recipe_section', \
'License':'recipe_license', 'Layer':'layer_version__layer__name', \
- 'Layer branch':'layer_version__branch', 'Layer directory':'layer_version__local_path'}
+ 'Layer branch':'layer_version__branch'}
for key in table_head_dict:
self.find_element_by_link_text_in_table(self.table_name, key).click()
column_list = self.get_table_column_text("class", table_head_dict[key])
@@ -954,14 +951,14 @@ class toaster_cases(toaster_cases_base):
self.find_element_by_link_text_in_table(self.table_name, key).click()
column_list = self.get_table_column_text("class", table_head_dict[key])
self.failUnless(is_list_sequenced(column_list) or is_list_inverted(column_list))
- self.driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/table/tbody/tr[1]/td[1]/a").click()
+ self.driver.find_element_by_partial_link_text("acl").click()
self.driver.back()
self.failUnless(is_list_sequenced(column_list) or is_list_inverted(column_list))
# Search text box background text is "Search recipes"
self.failUnless(self.driver.find_element_by_xpath("//*[@id='searchform']/*[@placeholder='Search recipes']"))
self.driver.find_element_by_id("search").clear()
self.driver.find_element_by_id("search").send_keys(test_package2)
- self.driver.find_element_by_css_selector("button.btn").click()
+ self.driver.find_element_by_id("search-button").click()
column_search_list = self.get_table_column_text("class", table_head_dict[key])
self.failUnless(is_list_sequenced(column_search_list) or is_list_inverted(column_search_list))
self.driver.find_element_by_css_selector("i.icon-remove").click()
@@ -969,14 +966,14 @@ class toaster_cases(toaster_cases_base):
self.find_element_by_link_text_in_table(self.table_name, key).click()
column_list = self.get_table_column_text("class", table_head_dict[key])
self.failUnless(is_list_sequenced(column_list))
- self.driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/table/tbody/tr[1]/td[1]/a").click()
+ self.driver.find_element_by_partial_link_text("acl").click()
self.driver.back()
self.failUnless(is_list_sequenced(column_list))
# Search text box background text is "Search recipes"
self.failUnless(self.driver.find_element_by_xpath("//*[@id='searchform']/*[@placeholder='Search recipes']"))
self.driver.find_element_by_id("search").clear()
self.driver.find_element_by_id("search").send_keys(test_package2)
- self.driver.find_element_by_css_selector("button.btn").click()
+ self.driver.find_element_by_id("search-button").click()
column_search_list = self.get_table_column_text("class", table_head_dict[key])
self.failUnless(is_list_sequenced(column_search_list))
self.driver.find_element_by_css_selector("i.icon-remove").click()
@@ -985,14 +982,17 @@ class toaster_cases(toaster_cases_base):
self.find_element_by_link_text_in_table(self.table_name, key).click()
column_list = self.get_table_column_text("class", table_head_dict[key])
self.failUnless(is_list_inverted(column_list))
- self.driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/table/tbody/tr[1]/td[1]/a").click()
+ try:
+ self.driver.find_element_by_partial_link_text("acl").click()
+ except:
+ self.driver.find_element_by_partial_link_text("zlib").click()
self.driver.back()
self.failUnless(is_list_inverted(column_list))
# Search text box background text is "Search recipes"
self.failUnless(self.driver.find_element_by_xpath("//*[@id='searchform']/*[@placeholder='Search recipes']"))
self.driver.find_element_by_id("search").clear()
self.driver.find_element_by_id("search").send_keys(test_package2)
- self.driver.find_element_by_css_selector("button.btn").click()
+ self.driver.find_element_by_id("search-button").click()
column_search_list = self.get_table_column_text("class", table_head_dict[key])
#print column_search_list
self.failUnless(is_list_inverted(column_search_list))
@@ -1002,23 +1002,23 @@ class toaster_cases(toaster_cases_base):
for key in table_head_dict:
print key
self.find_element_by_link_text_in_table(self.table_name, key).click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ 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_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
self.browser_delay()
# After hide the column, the default table should be sorted by Recipe
- tasks_column_count = len(self.driver.find_elements_by_xpath("/html/body/div[2]/div/div[2]/div[2]/table/tbody/tr/td[1]"))
+ tasks_column_count = len(self.driver.find_elements_by_partial_link_text("acl"))
#print tasks_column_count
default_column_list = self.get_table_column_text_by_column_number(self.table_name, 1)
#print default_column_list
self.failUnless(is_list_sequenced(default_column_list))
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
self.driver.find_element_by_id("recipe_file").click()
self.driver.find_element_by_id("recipe_section").click()
self.driver.find_element_by_id("recipe_license").click()
self.driver.find_element_by_id("layer_version__layer__name").click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
##############
@@ -1034,15 +1034,15 @@ class toaster_cases(toaster_cases_base):
# step 3-5
self.driver.find_element_by_id("search").clear()
self.driver.find_element_by_id("search").send_keys("lib")
- self.driver.find_element_by_css_selector("button.btn").click()
+ self.driver.find_element_by_id("search-button").click()
# save screen here for observation
self.save_screenshot(screenshot_type='selenium', append_name='step5')
# step 6
self.driver.find_element_by_css_selector("i.icon-remove").click()
self.driver.find_element_by_id("search").clear()
# we deliberately want "no result" here
- self.driver.find_element_by_id("search").send_keys("what the hell")
- self.driver.find_element_by_css_selector("button.btn").click()
+ self.driver.find_element_by_id("search").send_keys("no such input")
+ self.driver.find_element_by_id("search-button").click()
self.find_element_by_text("Show all recipes").click()
self.driver.quit()
@@ -1066,7 +1066,6 @@ class toaster_cases(toaster_cases_base):
self.driver.find_element_by_id("depends_on").click()
self.driver.find_element_by_id("layer_version__branch").click()
self.driver.find_element_by_id("layer_version__layer__commit").click()
- self.driver.find_element_by_id("layer_version__local_path").click()
self.driver.find_element_by_id("depends_by").click()
self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
# check if columns selected above is shown
@@ -1081,7 +1080,6 @@ class toaster_cases(toaster_cases_base):
self.driver.find_element_by_id("depends_on").click()
self.driver.find_element_by_id("layer_version__branch").click()
self.driver.find_element_by_id("layer_version__layer__commit").click()
- self.driver.find_element_by_id("layer_version__local_path").click()
self.driver.find_element_by_id("depends_by").click()
self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
# don't exist any more
@@ -1105,11 +1103,11 @@ class toaster_cases(toaster_cases_base):
for item in ['Recipe', 'Recipe version', 'Recipe file', 'Section', 'License', 'Layer']:
self.failUnless(item in head_list)
# step 4
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
# save screen
self.browser_delay()
self.save_screenshot(screenshot_type='selenium', append_name='step4')
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
##############
@@ -1308,7 +1306,7 @@ class toaster_cases(toaster_cases_base):
# step 4
self.driver.find_element_by_id("search").clear()
self.driver.find_element_by_id("search").send_keys("lib")
- self.driver.find_element_by_css_selector("button.btn").click()
+ self.driver.find_element_by_id("search-button").click()
# save screen to see result
self.browser_delay()
self.save_screenshot(screenshot_type='selenium', append_name='step4')
@@ -1323,7 +1321,7 @@ class toaster_cases(toaster_cases_base):
# head is still the same
self.driver.find_element_by_id("search").clear()
self.driver.find_element_by_id("search").send_keys("poky")
- self.driver.find_element_by_css_selector("button.btn").click()
+ self.driver.find_element_by_id("search-button").click()
self.find_element_by_link_text_in_table('otable', 'Variable').click()
head_list = self.get_table_head_text('otable')
self.failUnless(head_list == ['Variable', 'Value', 'Set in file', 'Description'])
@@ -1355,7 +1353,7 @@ class toaster_cases(toaster_cases_base):
# searching won't change the sequentiality
self.driver.find_element_by_id("search").clear()
self.driver.find_element_by_id("search").send_keys("lib")
- self.driver.find_element_by_css_selector("button.btn").click()
+ self.driver.find_element_by_id("search-button").click()
variable_list = self.get_table_column_text('class', 'variable_name')
self.failUnless(is_list_sequenced(variable_list))
@@ -1373,11 +1371,11 @@ class toaster_cases(toaster_cases_base):
c_list = self.get_table_column_text('class', 'completed_on')
self.failUnless(is_list_inverted(c_list))
# step 3
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
self.driver.find_element_by_id("started_on").click()
self.driver.find_element_by_id("log").click()
self.driver.find_element_by_id("time").click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
head_list = self.get_table_head_text('otable')
for item in ['Outcome', 'Target', 'Machine', 'Started on', 'Completed on', 'Failed tasks', 'Errors', 'Warnings', 'Warnings', 'Time']:
self.failUnless(item in head_list)
@@ -1399,9 +1397,9 @@ class toaster_cases(toaster_cases_base):
# click Errors , order in "Completed on" should be disturbed. Then hide
# error column to check if order in "Completed on" can be restored
self.find_element_by_link_text_in_table('otable', 'Errors').click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
self.driver.find_element_by_id("errors_no").click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
# Note: without time.sleep here, there'll be unpredictable error..TBD
time.sleep(1)
c_list = self.get_table_column_text('class', 'completed_on')
@@ -1425,13 +1423,12 @@ class toaster_cases(toaster_cases_base):
# Step 4
# pulldown menu
option_ids = ['recipe__layer_version__layer__name', 'recipe__layer_version__branch', \
- 'recipe__layer_version__layer__commit', 'recipe__layer_version__local_path', \
- 'license', 'recipe__version']
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ 'recipe__layer_version__layer__commit', 'license', 'recipe__version']
+ 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()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
# save screen here to observe that 'Package' and 'Package version' is
# not selectable
self.browser_delay()
@@ -1456,6 +1453,44 @@ class toaster_cases(toaster_cases_base):
##############
+ # CASE 942 #
+ ##############
+ 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()
+ #get initial table header
+ head_list = self.get_table_head_text('otable')
+ #remove the Recipe column from table header
+ self.driver.find_element_by_id("edit-columns-button").click()
+ self.driver.find_element_by_id("recipe__name").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
+ #get modified table header
+ new_head = self.get_table_head_text('otable')
+ self.failUnless(head_list > new_head)
+
+ ##############
+ # CASE 943 #
+ ##############
+ 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)
+ self.driver.find_element_by_link_text("core-image-minimal").click()
+ self.driver.find_element_by_link_text("Packages").click()
+ #search for the "bash" package -> this should definitely be present
+ self.driver.find_element_by_id("search").clear()
+ self.driver.find_element_by_id("search").send_keys("bash")
+ self.driver.find_element_by_id("search-button").click()
+ #check for the search result message "XX packages found"
+ self.failUnless(self.is_text_present("packages found"))
+
+
+ ##############
# CASE 944 #
##############
def test_944(self):
@@ -1467,57 +1502,54 @@ class toaster_cases(toaster_cases_base):
# step 1: test Recipes page stuff
self.driver.find_element_by_link_text("Recipes").click()
# for these 3 items, default status is not-checked
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
self.driver.find_element_by_id("layer_version__branch").click()
self.driver.find_element_by_id("layer_version__layer__commit").click()
- self.driver.find_element_by_id("layer_version__local_path").click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
# otable is the recipes table here
otable_head_text = self.get_table_head_text('otable')
for item in ["Layer", "Layer branch", "Layer commit", "Layer directory"]:
self.failIf(item not in otable_head_text)
# click the fist recipe, whatever it is
self.get_table_element("otable", 1, 1).click()
- self.failUnless(self.is_text_present(["Layer", "Layer branch", "Layer commit", "Layer directory", "Recipe file"]))
+ self.failUnless(self.is_text_present(["Layer", "Layer branch", "Layer commit", "Recipe file"]))
# step 2: test Packages page stuff. almost same as above
self.driver.back()
self.browser_delay()
self.driver.find_element_by_link_text("Packages").click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
self.driver.find_element_by_id("recipe__layer_version__layer__name").click()
self.driver.find_element_by_id("recipe__layer_version__branch").click()
self.driver.find_element_by_id("recipe__layer_version__layer__commit").click()
- self.driver.find_element_by_id("recipe__layer_version__local_path").click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
otable_head_text = self.get_table_head_text("otable")
- for item in ["Layer", "Layer branch", "Layer commit", "Layer directory"]:
+ for item in ["Layer", "Layer branch", "Layer commit"]:
self.failIf(item not in otable_head_text)
# click the fist recipe, whatever it is
self.get_table_element("otable", 1, 1).click()
- self.failUnless(self.is_text_present(["Layer", "Layer branch", "Layer commit", "Layer directory"]))
+ self.failUnless(self.is_text_present(["Layer", "Layer branch", "Layer commit"]))
# step 3: test Packages core-image-minimal(images) stuff. almost same as above. Note when future element-id changes...
self.driver.back()
self.driver.find_element_by_link_text("core-image-minimal").click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
self.driver.find_element_by_id("layer_name").click()
self.driver.find_element_by_id("layer_branch").click()
self.driver.find_element_by_id("layer_commit").click()
- self.driver.find_element_by_id("layer_directory").click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
otable_head_text = self.get_table_head_text("otable")
- for item in ["Layer", "Layer branch", "Layer commit", "Layer directory"]:
+ for item in ["Layer", "Layer branch", "Layer commit"]:
self.failIf(item not in otable_head_text)
# click the fist recipe, whatever it is
self.get_table_element("otable", 1, 1).click()
- self.failUnless(self.is_text_present(["Layer", "Layer branch", "Layer commit", "Layer directory"]))
+ self.failUnless(self.is_text_present(["Layer", "Layer branch", "Layer commit"]))
# step 4: check Configuration page
self.driver.back()
self.driver.find_element_by_link_text("Configuration").click()
otable_head_text = self.get_table_head_text()
- for item in ["Layer", "Layer branch", "Layer commit", "Layer directory"]:
+ for item in ["Layer", "Layer branch", "Layer commit"]:
self.failIf(item not in otable_head_text)
@@ -1568,7 +1600,7 @@ class toaster_cases(toaster_cases_base):
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', 'Layer directory']):
+ if not self.is_text_present(['Layers', 'Layer', 'Layer branch', 'Layer commit']):
self.log.error("text not found")
# step 5
self.driver.find_element_by_link_text("BitBake variables").click()
@@ -1579,18 +1611,24 @@ class toaster_cases(toaster_cases_base):
temp_element = self.find_element_by_text_in_table('otable', "Set in file")
temp_element.find_element_by_xpath("..//*/a/i[@class='icon-filter filtered']").click()
self.browser_delay()
- self.driver.find_element_by_xpath("(//input[@name='filter'])[2]").click()
- self.driver.find_element_by_css_selector("button.btn.btn-primary").click()
+ self.driver.find_element_by_xpath("(//input[@name='filter'])[3]").click()
+ btns = self.driver.find_elements_by_css_selector("button.btn.btn-primary")
+ for btn in btns:
+ try:
+ btn.click()
+ break
+ except:
+ pass
# save screen here
self.browser_delay()
self.save_screenshot(screenshot_type='selenium', append_name='step6')
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
# save screen here
# step 7
# we should manually check the step 6-8 result using screenshot
self.browser_delay()
self.save_screenshot(screenshot_type='selenium', append_name='step7')
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
# step 9
# click the 1st item, no matter what it is
self.driver.find_element_by_xpath("//*[@id='otable']/tbody/tr[1]/td[1]/a").click()
@@ -1602,7 +1640,7 @@ class toaster_cases(toaster_cases_base):
if item not in element.text:
self.log.error("%s not found" %item)
# any better way to close this pop-up? ... TBD
- element.find_element_by_xpath(".//*[@class='close']").click()
+ element.find_element_by_class_name("close").click()
# step 10 : need to manually check "Yocto Manual" in saved screen
self.driver.find_element_by_css_selector("i.icon-share.get-info").click()
# save screen here
@@ -1627,20 +1665,20 @@ class toaster_cases(toaster_cases_base):
# return xpath of options under "Edit columns" button
return self.shortest_xpath('id', 'navTab') + self.shortest_xpath('id', 'editcol') \
+ self.shortest_xpath('id', column_name)
- self.find_element_by_xpath_in_table('navTab', self.shortest_xpath('class', 'btn dropdown-toggle')).click()
+ self.driver.find_element_by_id('edit-columns-button').click()
# by default, option "Description" and "Set in file" were checked
self.driver.find_element_by_xpath(xpath_option('description')).click()
self.driver.find_element_by_xpath(xpath_option('file')).click()
- self.find_element_by_xpath_in_table('navTab', self.shortest_xpath('class', 'btn dropdown-toggle')).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.failIf(item in head_list)
# check these 2 options and verify again
- self.find_element_by_xpath_in_table('navTab', self.shortest_xpath('class', 'btn dropdown-toggle')).click()
+ 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.find_element_by_xpath_in_table('navTab', self.shortest_xpath('class', 'btn dropdown-toggle')).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.failUnless(item in head_list)
@@ -1657,66 +1695,15 @@ class toaster_cases(toaster_cases_base):
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()
- number_before_search = list()
- number_after_search = list()
- # step 3
- # temp_dict -- filter string : filter name in firepath
- temp_dict = {'Set in file':'filter_vhistory__file_name', 'Description':'filter_description'}
- count = 0
- for key in temp_dict:
- try:
- temp_element = self.find_element_by_text_in_table('otable', key)
- temp_element.find_element_by_xpath("..//*[@class='icon-filter filtered']").click()
- # delay here. otherwise it won't get correct "text" we need.
- # TBD
- time.sleep(1)
- # step 4-5, we need to make sure that "search" manipulation
- # does reduce the number in the filter.
- # in this case, text returned will be "All variables (xxx)"
- temp_text = self.driver.find_element_by_xpath("//*[@id='" + temp_dict[key] + "']//*[@class='radio']").text
- number_list = extract_number_from_string(temp_text)
- print number_list
- # probably we only need the first number. in this case.
- number_before_search.append(eval(number_list[0]))
- count +=1
- # how we locate the close button
- self.driver.find_element_by_xpath("//*[@id='" + temp_dict[key] + "']//*[@class='close']").click()
- self.browser_delay()
- except Exception,e:
- self.log.error(e)
- raise
+ #get number of variables visible by default
+ number_before_search = self.driver.find_element_by_class_name('page-header').text
# search for a while...
self.driver.find_element_by_id("search").clear()
self.driver.find_element_by_id("search").send_keys("BB")
- self.driver.find_element_by_css_selector("button.btn").click()
- # same operation as above, only to get the new numbers in the filter
- count = 0
- for key in temp_dict:
- try:
- temp_element = self.find_element_by_text_in_table('otable', key)
- temp_element.find_element_by_xpath("..//*[@class='icon-filter filtered']").click()
- time.sleep(1)
- # in this case, text returned will be "All variables (xxx)"
- temp_text = self.driver.find_element_by_xpath("//*[@id='" + temp_dict[key] + "']//*[@class='radio']").text
- number_list = extract_number_from_string(temp_text)
- # probably we only need the first number. in this case.
- number_after_search.append(eval(number_list[0]))
- count += 1
- # how we locate the close button
- self.driver.find_element_by_xpath("//*[@id='" + temp_dict[key] + "']//*[@class='close']").click()
- self.browser_delay()
- except Exception,e:
- self.log.error(e)
- raise
- for i in range(0, count):
- print i
- print number_after_search[i]
- print number_before_search[i]
- if number_after_search[i] < number_before_search[i]:
- self.log.info("After search, filter number reduces")
- else:
- self.log.error("Error: After search, filter number doesn't reduce")
- self.failIf(True)
+ self.driver.find_element_by_id("search-button").click()
+ #get number of variables visible after search
+ number_after_search = self.driver.find_element_by_class_name('page-header').text
+ self.failUnless(number_before_search > number_after_search)
##############
@@ -1741,11 +1728,11 @@ class toaster_cases(toaster_cases_base):
for item in ['Package', 'Package version', 'Size', 'Dependencies', 'Reverse dependencies', 'Recipe']:
self.failUnless(item in head_list)
# step 5-6
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
selectable_class = 'checkbox'
# minimum-table : means unselectable items
unselectable_class = 'checkbox muted'
- selectable_check_list = ['Dependencies', 'Layer', 'Layer branch', 'Layer commit', 'Layer directory', \
+ selectable_check_list = ['Dependencies', 'Layer', 'Layer branch', 'Layer commit', \
'License', 'Recipe', 'Recipe version', 'Reverse dependencies', \
'Size', 'Size over total (%)']
unselectable_check_list = ['Package', 'Package version']
@@ -1766,7 +1753,7 @@ class toaster_cases(toaster_cases_base):
if item not in unselectable_list:
self.log.error(" %s not found in dropdown menu \n" % item)
self.failIf(True)
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
+ self.driver.find_element_by_id("edit-columns-button").click()
# step 7
self.driver.find_element_by_partial_link_text("Directory structure").click()
head_list = self.get_table_head_text('dirtable')
@@ -1894,31 +1881,3 @@ class toaster_cases(toaster_cases_base):
self.log.error("please check [Toaster manual] link on page")
self.failIf(True)
-
- ##############
- # CASE 959 #
- ##############
- def test_959(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()
- # step 2-3
- self.find_element_by_link_text_in_table('nav', 'Tasks').click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
- self.driver.find_element_by_id("task_log").click()
- self.driver.find_element_by_css_selector("button.btn.dropdown-toggle").click()
- # step 4: "Not Executed" tasks have no log. So click "Log"...
- self.find_element_by_link_text_in_table('otable', 'Log').click()
- # save screen to see if there's "absolute path" of logs
- self.browser_delay()
- self.save_screenshot(screenshot_type='selenium', append_name='step4_1')
- self.find_element_by_link_text_in_table('otable', 'Log').click()
- # save screen to see if there's "absolute path" of logs
- self.browser_delay()
- self.save_screenshot(screenshot_type='selenium', append_name='step4_2')
-
-
-
-