summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarlon Rodriguez Garcia <marlon.rodriguez-garcia@savoirfairelinux.com>2023-10-12 13:42:19 -0400
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-10-17 11:41:33 +0100
commit480aeaff0816e667b6be74d74680bbe690c84c86 (patch)
treebe601f0e6a6160b8462f67645a8b6fc611053c7b
parent06f2cf81f41858d0b47950af4e8f9bd6bca580bc (diff)
downloadpoky-480aeaff0816e667b6be74d74680bbe690c84c86.tar.gz
bitbake: toaster: fixed functional test
Updated functional test file to fix url access and added waiting time after click operations to allow following elements to be available for tests, this will needed to be revisited when autobuilder is ready (Bitbake rev: fa30af75b3b7d37215f2615aa4b458525fce509e) Signed-off-by: Marlon Rodriguez Garcia <marlon.rodriguez-garcia@savoirfairelinux.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-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