summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/tests/functional/test_functional_basic.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/tests/functional/test_functional_basic.py')
-rw-r--r--bitbake/lib/toaster/tests/functional/test_functional_basic.py33
1 files changed, 23 insertions, 10 deletions
diff --git a/bitbake/lib/toaster/tests/functional/test_functional_basic.py b/bitbake/lib/toaster/tests/functional/test_functional_basic.py
index 067ad99a9c..b0def544ae 100644
--- a/bitbake/lib/toaster/tests/functional/test_functional_basic.py
+++ b/bitbake/lib/toaster/tests/functional/test_functional_basic.py
@@ -7,7 +7,8 @@
7# SPDX-License-Identifier: GPL-2.0-only 7# SPDX-License-Identifier: GPL-2.0-only
8# 8#
9 9
10import re 10import re, time
11from django.urls import reverse
11from tests.functional.functional_helpers import SeleniumFunctionalTestCase 12from tests.functional.functional_helpers import SeleniumFunctionalTestCase
12from orm.models import Project 13from orm.models import Project
13from selenium.webdriver.common.by import By 14from selenium.webdriver.common.by import By
@@ -17,11 +18,11 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
17# testcase (1514) 18# testcase (1514)
18 def test_create_slenium_project(self): 19 def test_create_slenium_project(self):
19 project_name = 'selenium-project' 20 project_name = 'selenium-project'
20 self.get('') 21 self.get(reverse('newproject'))
21 self.driver.find_element(By.LINK_TEXT, "To start building, create your first Toaster project").click()
22 self.driver.find_element(By.ID, "new-project-name").send_keys(project_name) 22 self.driver.find_element(By.ID, "new-project-name").send_keys(project_name)
23 self.driver.find_element(By.ID, 'projectversion').click() 23 self.driver.find_element(By.ID, 'projectversion').click()
24 self.driver.find_element(By.ID, "create-project-button").click() 24 self.driver.find_element(By.ID, "create-project-button").click()
25 time.sleep(2)
25 element = self.wait_until_visible('#project-created-notification') 26 element = self.wait_until_visible('#project-created-notification')
26 self.assertTrue(self.element_exists('#project-created-notification'),'Project creation notification not shown') 27 self.assertTrue(self.element_exists('#project-created-notification'),'Project creation notification not shown')
27 self.assertTrue(project_name in element.text, 28 self.assertTrue(project_name in element.text,
@@ -31,15 +32,18 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
31 32
32 # testcase (1515) 33 # testcase (1515)
33 def test_verify_left_bar_menu(self): 34 def test_verify_left_bar_menu(self):
34 self.get('') 35 self.get(reverse('all-projects'))
35 self.wait_until_visible('#projectstable') 36 self.wait_until_visible('#projectstable')
36 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 37 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
38 time.sleep(2)
37 self.assertTrue(self.element_exists('#config-nav'),'Configuration Tab does not exist') 39 self.assertTrue(self.element_exists('#config-nav'),'Configuration Tab does not exist')
38 project_URL=self.get_URL() 40 project_URL=self.get_URL()
39 self.driver.find_element(By.XPATH, '//a[@href="'+project_URL+'"]').click() 41 self.driver.find_element(By.XPATH, '//a[@href="'+project_URL+'"]').click()
42 time.sleep(2)
40 43
41 try: 44 try:
42 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'customimages/"'+"]").click() 45 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'customimages/"'+"]").click()
46 time.sleep(2)
43 self.assertTrue(re.search("Custom images",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'Custom images information is not loading properly') 47 self.assertTrue(re.search("Custom images",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'Custom images information is not loading properly')
44 except: 48 except:
45 self.fail(msg='No Custom images tab available') 49 self.fail(msg='No Custom images tab available')
@@ -78,14 +82,16 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
78 def test_review_configuration_information(self): 82 def test_review_configuration_information(self):
79 self.get('') 83 self.get('')
80 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() 84 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click()
85 time.sleep(2)
81 self.wait_until_visible('#projectstable') 86 self.wait_until_visible('#projectstable')
82 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 87 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
83 project_URL=self.get_URL() 88 project_URL=self.get_URL()
84 89 time.sleep(2)
85 try: 90 try:
86 self.assertTrue(self.element_exists('#machine-section'),'Machine section for the project configuration page does not exist') 91 self.assertTrue(self.element_exists('#machine-section'),'Machine section for the project configuration page does not exist')
87 self.assertTrue(re.search("qemux86",self.driver.find_element(By.XPATH, "//span[@id='project-machine-name']").text),'The machine type is not assigned') 92 self.assertTrue(re.search("qemux86",self.driver.find_element(By.XPATH, "//span[@id='project-machine-name']").text),'The machine type is not assigned')
88 self.driver.find_element(By.XPATH, "//span[@id='change-machine-toggle']").click() 93 self.driver.find_element(By.XPATH, "//span[@id='change-machine-toggle']").click()
94 time.sleep(2)
89 self.wait_until_visible('#select-machine-form') 95 self.wait_until_visible('#select-machine-form')
90 self.wait_until_visible('#cancel-machine-change') 96 self.wait_until_visible('#cancel-machine-change')
91 self.driver.find_element(By.XPATH, "//form[@id='select-machine-form']/a[@id='cancel-machine-change']").click() 97 self.driver.find_element(By.XPATH, "//form[@id='select-machine-form']/a[@id='cancel-machine-change']").click()
@@ -123,13 +129,16 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
123 def test_verify_machine_information(self): 129 def test_verify_machine_information(self):
124 self.get('') 130 self.get('')
125 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() 131 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click()
132 time.sleep(2)
126 self.wait_until_visible('#projectstable') 133 self.wait_until_visible('#projectstable')
127 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 134 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
135 time.sleep(2)
128 136
129 try: 137 try:
130 self.assertTrue(self.element_exists('#machine-section'),'Machine section for the project configuration page does not exist') 138 self.assertTrue(self.element_exists('#machine-section'),'Machine section for the project configuration page does not exist')
131 self.assertTrue(re.search("qemux86",self.driver.find_element(By.ID, "project-machine-name").text),'The machine type is not assigned') 139 self.assertTrue(re.search("qemux86",self.driver.find_element(By.ID, "project-machine-name").text),'The machine type is not assigned')
132 self.driver.find_element(By.ID, "change-machine-toggle").click() 140 self.driver.find_element(By.ID, "change-machine-toggle").click()
141 time.sleep(2)
133 self.wait_until_visible('#select-machine-form') 142 self.wait_until_visible('#select-machine-form')
134 self.wait_until_visible('#cancel-machine-change') 143 self.wait_until_visible('#cancel-machine-change')
135 self.driver.find_element(By.ID, "cancel-machine-change").click() 144 self.driver.find_element(By.ID, "cancel-machine-change").click()
@@ -140,14 +149,15 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
140 def test_verify_most_built_recipes_information(self): 149 def test_verify_most_built_recipes_information(self):
141 self.get('') 150 self.get('')
142 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() 151 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click()
143 152 time.sleep(2)
144 self.wait_until_visible('#projectstable') 153 self.wait_until_visible('#projectstable')
145 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 154 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
146 project_URL=self.get_URL() 155 project_URL=self.get_URL()
147 156 time.sleep(2)
148 try: 157 try:
149 self.assertTrue(re.search("You haven't built any recipes yet",self.driver.find_element(By.ID, "no-most-built").text),'Default message of no builds is not present') 158 self.assertTrue(re.search("You haven't built any recipes yet",self.driver.find_element(By.ID, "no-most-built").text),'Default message of no builds is not present')
150 self.driver.find_element(By.XPATH, "//div[@id='no-most-built']/p/a[@href="+'"'+project_URL+'images/"'+"]").click() 159 self.driver.find_element(By.XPATH, "//div[@id='no-most-built']/p/a[@href="+'"'+project_URL+'images/"'+"]").click()
160 time.sleep(2)
151 self.assertTrue(re.search("Compatible image recipes",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Choose a recipe to build link is not working properly') 161 self.assertTrue(re.search("Compatible image recipes",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Choose a recipe to build link is not working properly')
152 except: 162 except:
153 self.fail(msg='No Most built information in project detail page') 163 self.fail(msg='No Most built information in project detail page')
@@ -156,8 +166,10 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
156 def test_verify_project_release_information(self): 166 def test_verify_project_release_information(self):
157 self.get('') 167 self.get('')
158 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() 168 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click()
169 time.sleep(2)
159 self.wait_until_visible('#projectstable') 170 self.wait_until_visible('#projectstable')
160 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 171 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
172 time.sleep(2)
161 173
162 try: 174 try:
163 self.assertTrue(re.search("Yocto Project master",self.driver.find_element(By.ID, "project-release-title").text),'The project release is not defined') 175 self.assertTrue(re.search("Yocto Project master",self.driver.find_element(By.ID, "project-release-title").text),'The project release is not defined')
@@ -171,12 +183,12 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
171 self.wait_until_visible('#projectstable') 183 self.wait_until_visible('#projectstable')
172 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 184 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
173 project_URL=self.get_URL() 185 project_URL=self.get_URL()
174 186 time.sleep(2)
175 try: 187 try:
176 self.driver.find_element(By.XPATH, "//div[@id='layer-container']") 188 self.driver.find_element(By.XPATH, "//div[@id='layer-container']")
177 self.assertTrue(re.search("3",self.driver.find_element(By.ID, "project-layers-count").text),'There should be 3 layers listed in the layer count') 189 self.assertTrue(re.search("3",self.driver.find_element(By.ID, "project-layers-count").text),'There should be 3 layers listed in the layer count')
178 layer_list = self.driver.find_element(By.ID, "layers-in-project-list") 190 layer_list = self.driver.find_element(By.ID, "layers-in-project-list")
179 layers = layer_list.find_element(By.TAG_NAME, "li") 191 layers = layer_list.find_elements(By.TAG_NAME, "li")
180 192
181 for layer in layers: 193 for layer in layers:
182 if re.match ("openembedded-core",layer.text): 194 if re.match ("openembedded-core",layer.text):
@@ -199,10 +211,11 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
199 def test_verify_project_detail_links(self): 211 def test_verify_project_detail_links(self):
200 self.get('') 212 self.get('')
201 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() 213 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click()
214 time.sleep(2)
202 self.wait_until_visible('#projectstable') 215 self.wait_until_visible('#projectstable')
203 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 216 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
204 project_URL=self.get_URL() 217 project_URL=self.get_URL()
205 218 time.sleep(2)
206 self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li[@id='topbar-configuration-tab']/a[@href="+'"'+project_URL+'"'+"]").click() 219 self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li[@id='topbar-configuration-tab']/a[@href="+'"'+project_URL+'"'+"]").click()
207 self.assertTrue(re.search("Configuration",self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li[@id='topbar-configuration-tab']/a[@href="+'"'+project_URL+'"'+"]").text), 'Configuration tab in project topbar is misspelled') 220 self.assertTrue(re.search("Configuration",self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li[@id='topbar-configuration-tab']/a[@href="+'"'+project_URL+'"'+"]").text), 'Configuration tab in project topbar is misspelled')
208 221