summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/toaster/tests/functional/test_functional_basic.py108
1 files changed, 59 insertions, 49 deletions
diff --git a/bitbake/lib/toaster/tests/functional/test_functional_basic.py b/bitbake/lib/toaster/tests/functional/test_functional_basic.py
index e2d1c7dd86..a95ce4862c 100644
--- a/bitbake/lib/toaster/tests/functional/test_functional_basic.py
+++ b/bitbake/lib/toaster/tests/functional/test_functional_basic.py
@@ -40,44 +40,44 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
40 try: 40 try:
41 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'customimages/"'+"]").click() 41 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'customimages/"'+"]").click()
42 self.wait_until_present('#config-nav', poll=10) 42 self.wait_until_present('#config-nav', poll=10)
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')
44 except: 43 except:
45 self.fail(msg='No Custom images tab available') 44 self.fail(msg='No Custom images tab available')
45 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')
46 46
47 try: 47 try:
48 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'images/"'+"]").click() 48 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'images/"'+"]").click()
49 self.wait_until_present('#config-nav', poll=10) 49 self.wait_until_present('#config-nav', poll=10)
50 self.assertTrue(re.search("Compatible image recipes",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Compatible image recipes information is not loading properly')
51 except: 50 except:
52 self.fail(msg='No Compatible image tab available') 51 self.fail(msg='No Compatible image tab available')
52 self.assertTrue(re.search("Compatible image recipes",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Compatible image recipes information is not loading properly')
53 53
54 try: 54 try:
55 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'softwarerecipes/"'+"]").click() 55 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'softwarerecipes/"'+"]").click()
56 self.wait_until_present('#config-nav', poll=10) 56 self.wait_until_present('#config-nav', poll=10)
57 self.assertTrue(re.search("Compatible software recipes",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Compatible software recipe information is not loading properly')
58 except: 57 except:
59 self.fail(msg='No Compatible software recipe tab available') 58 self.fail(msg='No Compatible software recipe tab available')
59 self.assertTrue(re.search("Compatible software recipes",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Compatible software recipe information is not loading properly')
60 60
61 try: 61 try:
62 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'machines/"'+"]").click() 62 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'machines/"'+"]").click()
63 self.wait_until_present('#config-nav', poll=10) 63 self.wait_until_present('#config-nav', poll=10)
64 self.assertTrue(re.search("Compatible machines",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Compatible machine information is not loading properly')
65 except: 64 except:
66 self.fail(msg='No Compatible machines tab available') 65 self.fail(msg='No Compatible machines tab available')
66 self.assertTrue(re.search("Compatible machines",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Compatible machine information is not loading properly')
67 67
68 try: 68 try:
69 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'layers/"'+"]").click() 69 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'layers/"'+"]").click()
70 self.wait_until_present('#config-nav', poll=10) 70 self.wait_until_present('#config-nav', poll=10)
71 self.assertTrue(re.search("Compatible layers",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Compatible layer information is not loading properly')
72 except: 71 except:
73 self.fail(msg='No Compatible layers tab available') 72 self.fail(msg='No Compatible layers tab available')
73 self.assertTrue(re.search("Compatible layers",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Compatible layer information is not loading properly')
74 74
75 try: 75 try:
76 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'configuration"'+"]").click() 76 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'configuration"'+"]").click()
77 self.wait_until_present('#config-nav', poll=10) 77 self.wait_until_present('#config-nav', poll=10)
78 self.assertTrue(re.search("Bitbake variables",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Bitbake variables information is not loading properly')
79 except: 78 except:
80 self.fail(msg='No Bitbake variables tab available') 79 self.fail(msg='No Bitbake variables tab available')
80 self.assertTrue(re.search("Bitbake variables",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Bitbake variables information is not loading properly')
81 81
82# testcase (1516) 82# testcase (1516)
83 def test_review_configuration_information(self): 83 def test_review_configuration_information(self):
@@ -86,9 +86,11 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
86 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 86 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
87 project_URL=self.get_URL() 87 project_URL=self.get_URL()
88 self.wait_until_present('#config-nav', poll=10) 88 self.wait_until_present('#config-nav', poll=10)
89
90 # Machine section of page
91 self.assertTrue(self.element_exists('#machine-section'),'Machine section for the project configuration page does not exist')
92 self.assertTrue(re.search("qemux86-64",self.driver.find_element(By.XPATH, "//span[@id='project-machine-name']").text),'The machine type is not assigned')
89 try: 93 try:
90 self.assertTrue(self.element_exists('#machine-section'),'Machine section for the project configuration page does not exist')
91 self.assertTrue(re.search("qemux86-64",self.driver.find_element(By.XPATH, "//span[@id='project-machine-name']").text),'The machine type is not assigned')
92 self.driver.find_element(By.XPATH, "//span[@id='change-machine-toggle']").click() 94 self.driver.find_element(By.XPATH, "//span[@id='change-machine-toggle']").click()
93 self.wait_until_visible('#select-machine-form', poll=10) 95 self.wait_until_visible('#select-machine-form', poll=10)
94 self.wait_until_visible('#cancel-machine-change', poll=10) 96 self.wait_until_visible('#cancel-machine-change', poll=10)
@@ -96,33 +98,34 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
96 except: 98 except:
97 self.fail(msg='The machine information is wrong in the configuration page') 99 self.fail(msg='The machine information is wrong in the configuration page')
98 100
101 # Most built recipes section
99 try: 102 try:
100 self.driver.find_element(By.ID, 'no-most-built') 103 self.driver.find_element(By.ID, 'no-most-built')
101 except: 104 except:
102 self.fail(msg='No Most built information in project detail page') 105 self.fail(msg='No Most built information in project detail page')
103 106
104 try: 107 # Project Release title
105 self.assertTrue(re.search("Yocto Project master",self.driver.find_element(By.XPATH, "//span[@id='project-release-title']").text),'The project release is not defined') 108 self.assertTrue(re.search("Yocto Project master",self.driver.find_element(By.XPATH, "//span[@id='project-release-title']").text), 'The project release is not defined in the project detail page')
106 except:
107 self.fail(msg='No project release title information in project detail page')
108 109
110 # List of layers in project
111 self.driver.find_element(By.XPATH, "//div[@id='layer-container']")
112 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')
109 try: 113 try:
110 self.driver.find_element(By.XPATH, "//div[@id='layer-container']")
111 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')
112 layer_list = self.driver.find_element(By.ID, "layers-in-project-list") 114 layer_list = self.driver.find_element(By.ID, "layers-in-project-list")
113 layers = layer_list.find_elements(By.TAG_NAME, "li") 115 layers = layer_list.find_elements(By.TAG_NAME, "li")
114 for layer in layers:
115 if re.match ("openembedded-core",layer.text):
116 print ("openembedded-core layer is a default layer in the project configuration")
117 elif re.match ("meta-poky",layer.text):
118 print ("meta-poky layer is a default layer in the project configuration")
119 elif re.match ("meta-yocto-bsp",layer.text):
120 print ("meta-yocto-bsp is a default layer in the project configuratoin")
121 else:
122 self.fail(msg='default layers are missing from the project configuration')
123 except: 116 except:
124 self.fail(msg='No Layer information in project detail page') 117 self.fail(msg='No Layer information in project detail page')
125 118
119 for layer in layers:
120 if re.match ("openembedded-core", layer.text):
121 print ("openembedded-core layer is a default layer in the project configuration")
122 elif re.match ("meta-poky", layer.text):
123 print ("meta-poky layer is a default layer in the project configuration")
124 elif re.match ("meta-yocto-bsp", layer.text):
125 print ("meta-yocto-bsp is a default layer in the project configuratoin")
126 else:
127 self.fail(msg='default layers are missing from the project configuration')
128
126# testcase (1517) 129# testcase (1517)
127 def test_verify_machine_information(self): 130 def test_verify_machine_information(self):
128 self.get(reverse('all-projects')) 131 self.get(reverse('all-projects'))
@@ -130,9 +133,9 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
130 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 133 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
131 self.wait_until_present('#config-nav', poll=10) 134 self.wait_until_present('#config-nav', poll=10)
132 135
136 self.assertTrue(self.element_exists('#machine-section'),'Machine section for the project configuration page does not exist')
137 self.assertTrue(re.search("qemux86-64",self.driver.find_element(By.ID, "project-machine-name").text),'The machine type is not assigned')
133 try: 138 try:
134 self.assertTrue(self.element_exists('#machine-section'),'Machine section for the project configuration page does not exist')
135 self.assertTrue(re.search("qemux86-64",self.driver.find_element(By.ID, "project-machine-name").text),'The machine type is not assigned')
136 self.driver.find_element(By.ID, "change-machine-toggle").click() 139 self.driver.find_element(By.ID, "change-machine-toggle").click()
137 self.wait_until_visible('#select-machine-form', poll=10) 140 self.wait_until_visible('#select-machine-form', poll=10)
138 self.wait_until_visible('#cancel-machine-change', poll=10) 141 self.wait_until_visible('#cancel-machine-change', poll=10)
@@ -147,13 +150,13 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
147 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 150 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
148 self.wait_until_present('#config-nav', poll=10) 151 self.wait_until_present('#config-nav', poll=10)
149 project_URL=self.get_URL() 152 project_URL=self.get_URL()
153 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 try: 154 try:
151 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')
152 self.driver.find_element(By.XPATH, "//div[@id='no-most-built']/p/a[@href="+'"'+project_URL+'images/"'+"]").click() 155 self.driver.find_element(By.XPATH, "//div[@id='no-most-built']/p/a[@href="+'"'+project_URL+'images/"'+"]").click()
153 self.wait_until_present('#config-nav', poll=10)
154 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')
155 except: 156 except:
156 self.fail(msg='No Most built information in project detail page') 157 self.fail(msg='No Most built information in project detail page')
158 self.wait_until_present('#config-nav', poll=10)
159 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')
157 160
158# testcase (1519) 161# testcase (1519)
159 def test_verify_project_release_information(self): 162 def test_verify_project_release_information(self):
@@ -161,11 +164,7 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
161 self.wait_until_present('#projectstable', poll=10) 164 self.wait_until_present('#projectstable', poll=10)
162 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 165 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
163 self.wait_until_present('#config-nav', poll=10) 166 self.wait_until_present('#config-nav', poll=10)
164 167 self.assertTrue(re.search("Yocto Project master",self.driver.find_element(By.ID, "project-release-title").text), 'No project release title information in project detail page')
165 try:
166 self.assertTrue(re.search("Yocto Project master",self.driver.find_element(By.ID, "project-release-title").text),'The project release is not defined')
167 except:
168 self.fail(msg='No project release title information in project detail page')
169 168
170# testcase (1520) 169# testcase (1520)
171 def test_verify_layer_information(self): 170 def test_verify_layer_information(self):
@@ -174,28 +173,32 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
174 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 173 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
175 self.wait_until_present('#config-nav', poll=10) 174 self.wait_until_present('#config-nav', poll=10)
176 project_URL=self.get_URL() 175 project_URL=self.get_URL()
176 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')
178
177 try: 179 try:
178 self.driver.find_element(By.XPATH, "//div[@id='layer-container']")
179 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')
180 layer_list = self.driver.find_element(By.ID, "layers-in-project-list") 180 layer_list = self.driver.find_element(By.ID, "layers-in-project-list")
181 layers = layer_list.find_elements(By.TAG_NAME, "li") 181 layers = layer_list.find_elements(By.TAG_NAME, "li")
182 except:
183 self.fail(msg='No Layer information in project detail page')
182 184
183 for layer in layers: 185 for layer in layers:
184 if re.match ("openembedded-core",layer.text): 186 if re.match ("openembedded-core",layer.text):
185 print ("openembedded-core layer is a default layer in the project configuration") 187 print ("openembedded-core layer is a default layer in the project configuration")
186 elif re.match ("meta-poky",layer.text): 188 elif re.match ("meta-poky",layer.text):
187 print ("meta-poky layer is a default layer in the project configuration") 189 print ("meta-poky layer is a default layer in the project configuration")
188 elif re.match ("meta-yocto-bsp",layer.text): 190 elif re.match ("meta-yocto-bsp",layer.text):
189 print ("meta-yocto-bsp is a default layer in the project configuratoin") 191 print ("meta-yocto-bsp is a default layer in the project configuratoin")
190 else: 192 else:
191 self.fail(msg='default layers are missing from the project configuration') 193 self.fail(msg='default layers are missing from the project configuration')
192 194
195 try:
193 self.driver.find_element(By.XPATH, "//input[@id='layer-add-input']") 196 self.driver.find_element(By.XPATH, "//input[@id='layer-add-input']")
194 self.driver.find_element(By.XPATH, "//button[@id='add-layer-btn']") 197 self.driver.find_element(By.XPATH, "//button[@id='add-layer-btn']")
195 self.driver.find_element(By.XPATH, "//div[@id='layer-container']/form[@class='form-inline']/p/a[@id='view-compatible-layers']") 198 self.driver.find_element(By.XPATH, "//div[@id='layer-container']/form[@class='form-inline']/p/a[@id='view-compatible-layers']")
196 self.driver.find_element(By.XPATH, "//div[@id='layer-container']/form[@class='form-inline']/p/a[@href="+'"'+project_URL+'importlayer"'+"]") 199 self.driver.find_element(By.XPATH, "//div[@id='layer-container']/form[@class='form-inline']/p/a[@href="+'"'+project_URL+'importlayer"'+"]")
197 except: 200 except:
198 self.fail(msg='No Layer information in project detail page') 201 self.fail(msg='Layer configuration controls missing')
199 202
200# testcase (1521) 203# testcase (1521)
201 def test_verify_project_detail_links(self): 204 def test_verify_project_detail_links(self):
@@ -211,7 +214,11 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
211 try: 214 try:
212 self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'builds/"'+"]").click() 215 self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'builds/"'+"]").click()
213 self.wait_until_visible('#project-topbar', poll=10) 216 self.wait_until_visible('#project-topbar', poll=10)
214 self.assertTrue(re.search("Builds",self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'builds/"'+"]").text), 'Builds tab in project topbar is misspelled') 217 except:
218 self.fail(msg='Builds tab information is not present')
219
220 self.assertTrue(re.search("Builds",self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'builds/"'+"]").text), 'Builds tab in project topbar is misspelled')
221 try:
215 self.driver.find_element(By.XPATH, "//div[@id='empty-state-projectbuildstable']") 222 self.driver.find_element(By.XPATH, "//div[@id='empty-state-projectbuildstable']")
216 except: 223 except:
217 self.fail(msg='Builds tab information is not present') 224 self.fail(msg='Builds tab information is not present')
@@ -219,7 +226,10 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
219 try: 226 try:
220 self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'importlayer"'+"]").click() 227 self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'importlayer"'+"]").click()
221 self.wait_until_visible('#project-topbar', poll=10) 228 self.wait_until_visible('#project-topbar', poll=10)
222 self.assertTrue(re.search("Import layer",self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'importlayer"'+"]").text), 'Import layer tab in project topbar is misspelled') 229 except:
230 self.fail(msg='Import layer tab not loading properly')
231 self.assertTrue(re.search("Import layer",self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'importlayer"'+"]").text), 'Import layer tab in project topbar is misspelled')
232 try:
223 self.driver.find_element(By.XPATH, "//fieldset[@id='repo-select']") 233 self.driver.find_element(By.XPATH, "//fieldset[@id='repo-select']")
224 self.driver.find_element(By.XPATH, "//fieldset[@id='git-repo']") 234 self.driver.find_element(By.XPATH, "//fieldset[@id='git-repo']")
225 except: 235 except:
@@ -228,10 +238,10 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
228 try: 238 try:
229 self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'newcustomimage/"'+"]").click() 239 self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'newcustomimage/"'+"]").click()
230 self.wait_until_visible('#project-topbar', poll=10) 240 self.wait_until_visible('#project-topbar', poll=10)
231 self.assertTrue(re.search("New custom image",self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'newcustomimage/"'+"]").text), 'New custom image tab in project topbar is misspelled')
232 self.assertTrue(re.search("Select the image recipe you want to customise",self.driver.find_element(By.XPATH, "//div[@class='col-md-12']/h2").text),'The new custom image tab is not loading correctly')
233 except: 241 except:
234 self.fail(msg='New custom image tab not loading properly') 242 self.fail(msg='New custom image tab not loading properly')
243 self.assertTrue(re.search("New custom image",self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'newcustomimage/"'+"]").text), 'New custom image tab in project topbar is misspelled')
244 self.assertTrue(re.search("Select the image recipe you want to customise",self.driver.find_element(By.XPATH, "//div[@class='col-md-12']/h2").text),'The new custom image tab is not loading correctly')
235 245
236 246
237 247