On Fri, Oct 13, 2023 at 12:02 AM Reyna, David via lists.yoctoproject.org <[email protected]> wrote:
> This patch seems fine to me, it includes the explanation. > > Agreed. I don't know how to actually run these tests to verify, but my concerns about the git log have been addressed. I guess my concern is we might be merging these in a state that is not fully functional in 4.3. But we have shipped releases with broken Toaster before ;) > David > > -----Original Message----- > From: [email protected] <[email protected]> On > Behalf Of Marlon Rodriguez Garcia via lists.yoctoproject.org > Sent: Thursday, October 12, 2023 10:40 AM > To: [email protected] > Cc: Marlon Rodriguez Garcia <[email protected]> > Subject: [Toaster] [PATCH 3/3] 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 > > Signed-off-by: Marlon Rodriguez Garcia < > [email protected]> > --- > .../tests/functional/test_functional_basic.py | 33 +++++++++++++------ > 1 file changed, 23 insertions(+), 10 deletions(-) > > diff --git a/lib/toaster/tests/functional/test_functional_basic.py > b/lib/toaster/tests/functional/test_functional_basic.py > index 067ad99a..b0def544 100644 > --- a/lib/toaster/tests/functional/test_functional_basic.py > +++ b/lib/toaster/tests/functional/test_functional_basic.py > @@ -7,7 +7,8 @@ > # SPDX-License-Identifier: GPL-2.0-only > # > > -import re > +import re, time > +from django.urls import reverse > from tests.functional.functional_helpers import SeleniumFunctionalTestCase > from orm.models import Project > from selenium.webdriver.common.by import By > @@ -17,11 +18,11 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase): > # testcase (1514) > def test_create_slenium_project(self): > project_name = 'selenium-project' > - self.get('') > - self.driver.find_element(By.LINK_TEXT, "To start building, create > your first Toaster project").click() > + self.get(reverse('newproject')) > self.driver.find_element(By.ID, > "new-project-name").send_keys(project_name) > self.driver.find_element(By.ID, 'projectversion').click() > self.driver.find_element(By.ID, "create-project-button").click() > + time.sleep(2) > element = self.wait_until_visible('#project-created-notification') > > self.assertTrue(self.element_exists('#project-created-notification'),'Project > creation notification not shown') > self.assertTrue(project_name in element.text, > @@ -31,15 +32,18 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase): > > # testcase (1515) > def test_verify_left_bar_menu(self): > - self.get('') > + self.get(reverse('all-projects')) > self.wait_until_visible('#projectstable') > self.find_element_by_link_text_in_table('projectstable', > 'selenium-project').click() > + time.sleep(2) > self.assertTrue(self.element_exists('#config-nav'),'Configuration > Tab does not exist') > project_URL=self.get_URL() > self.driver.find_element(By.XPATH, > '//a[@href="'+project_URL+'"]').click() > + time.sleep(2) > > try: > self.driver.find_element(By.XPATH, > "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'customimages/"'+"]").click() > + time.sleep(2) > 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') > except: > self.fail(msg='No Custom images tab available') > @@ -78,14 +82,16 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase): > def test_review_configuration_information(self): > self.get('') > self.driver.find_element(By.XPATH, > "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() > + time.sleep(2) > self.wait_until_visible('#projectstable') > self.find_element_by_link_text_in_table('projectstable', > 'selenium-project').click() > project_URL=self.get_URL() > - > + time.sleep(2) > try: > > self.assertTrue(self.element_exists('#machine-section'),'Machine section > for the project configuration page does not exist') > > self.assertTrue(re.search("qemux86",self.driver.find_element(By.XPATH, > "//span[@id='project-machine-name']").text),'The machine type is not > assigned') > self.driver.find_element(By.XPATH, > "//span[@id='change-machine-toggle']").click() > + time.sleep(2) > self.wait_until_visible('#select-machine-form') > self.wait_until_visible('#cancel-machine-change') > self.driver.find_element(By.XPATH, > "//form[@id='select-machine-form']/a[@id='cancel-machine-change']").click() > @@ -123,13 +129,16 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase): > def test_verify_machine_information(self): > self.get('') > self.driver.find_element(By.XPATH, > "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() > + time.sleep(2) > self.wait_until_visible('#projectstable') > self.find_element_by_link_text_in_table('projectstable', > 'selenium-project').click() > + time.sleep(2) > > try: > > self.assertTrue(self.element_exists('#machine-section'),'Machine section > for the project configuration page does not exist') > > self.assertTrue(re.search("qemux86",self.driver.find_element(By.ID, > "project-machine-name").text),'The machine type is not assigned') > self.driver.find_element(By.ID, > "change-machine-toggle").click() > + time.sleep(2) > self.wait_until_visible('#select-machine-form') > self.wait_until_visible('#cancel-machine-change') > self.driver.find_element(By.ID, > "cancel-machine-change").click() > @@ -140,14 +149,15 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase): > def test_verify_most_built_recipes_information(self): > self.get('') > self.driver.find_element(By.XPATH, > "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() > - > + time.sleep(2) > self.wait_until_visible('#projectstable') > self.find_element_by_link_text_in_table('projectstable', > 'selenium-project').click() > project_URL=self.get_URL() > - > + time.sleep(2) > try: > 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') > self.driver.find_element(By.XPATH, > "//div[@id='no-most-built']/p/a[@href="+'"'+project_URL+'images/"'+"]").click() > + time.sleep(2) > 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') > except: > self.fail(msg='No Most built information in project detail > page') > @@ -156,8 +166,10 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase): > def test_verify_project_release_information(self): > self.get('') > self.driver.find_element(By.XPATH, > "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() > + time.sleep(2) > self.wait_until_visible('#projectstable') > self.find_element_by_link_text_in_table('projectstable', > 'selenium-project').click() > + time.sleep(2) > > try: > 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): > self.wait_until_visible('#projectstable') > self.find_element_by_link_text_in_table('projectstable', > 'selenium-project').click() > project_URL=self.get_URL() > - > + time.sleep(2) > try: > self.driver.find_element(By.XPATH, > "//div[@id='layer-container']") > 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') > layer_list = self.driver.find_element(By.ID, > "layers-in-project-list") > - layers = layer_list.find_element(By.TAG_NAME, "li") > + layers = layer_list.find_elements(By.TAG_NAME, "li") > > for layer in layers: > if re.match ("openembedded-core",layer.text): > @@ -199,10 +211,11 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase): > def test_verify_project_detail_links(self): > self.get('') > self.driver.find_element(By.XPATH, > "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() > + time.sleep(2) > self.wait_until_visible('#projectstable') > self.find_element_by_link_text_in_table('projectstable', > 'selenium-project').click() > project_URL=self.get_URL() > - > + time.sleep(2) > 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() > > 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') > > -- > 2.34.1 > > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#5863): https://lists.yoctoproject.org/g/toaster/message/5863 Mute This Topic: https://lists.yoctoproject.org/mt/101923471/21656 Group Owner: [email protected] Unsubscribe: https://lists.yoctoproject.org/g/toaster/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
