Message ID | 20231109221517.110357-1-alassane.yattara@savoirfairelinux.com |
---|---|
State | Accepted, archived |
Commit | 8502ed9ce3e04e5e0f913a8af60828ac0cefa110 |
Headers | show |
Series | [v3,1/3] Toaster: Write UI TestCase create new project | expand |
Hello Alassane, On 09/11/2023 23:15:15+0100, Alassane Yattara wrote: > Test create new project using: > - Project Name: Any string > - Release: Master/Kirkstone/Dunfell/Local > - Merge Toaster settings: False/True > > Signed-off-by: Alassane Yattara <alassane.yattara@savoirfairelinux.com> > --- Please include a changelog here. At least, explain why you are sending multiple versions of the series on the same day, this would make the maintainers job easier. Thanks! > .../functional/test_create_new_project.py | 134 ++++++++++++++++++ > 1 file changed, 134 insertions(+) > create mode 100644 lib/toaster/tests/functional/test_create_new_project.py > > diff --git a/lib/toaster/tests/functional/test_create_new_project.py b/lib/toaster/tests/functional/test_create_new_project.py > new file mode 100644 > index 00000000..81355eaf > --- /dev/null > +++ b/lib/toaster/tests/functional/test_create_new_project.py > @@ -0,0 +1,134 @@ > +#! /usr/bin/env python3 # > +# BitBake Toaster UI tests implementation > +# > +# Copyright (C) 2023 Savoir-faire Linux > +# > +# SPDX-License-Identifier: GPL-2.0-only > +# > + > +import re > +import pytest > +from django.urls import reverse > +from selenium.webdriver.support.ui import Select > +from tests.functional.functional_helpers import SeleniumFunctionalTestCase > +from orm.models import Project > +from selenium.webdriver.common.by import By > + > +@pytest.mark.django_db > +class TestCreateNewProject(SeleniumFunctionalTestCase): > + > + def _create_test_new_project( > + self, > + project_name, > + release, > + release_title, > + merge_toaster_settings, > + ): > + """ Create/Test new project using: > + - Project Name: Any string > + - Release: Any string > + - Merge Toaster settings: True or False > + """ > + self.get(reverse('newproject')) > + self.driver.find_element(By.ID, > + "new-project-name").send_keys(project_name) > + > + select = Select(self.find('#projectversion')) > + select.select_by_value(release) > + > + # check merge toaster settings > + checkbox = self.find('.checkbox-mergeattr') > + if merge_toaster_settings: > + if not checkbox.is_selected(): > + checkbox.click() > + else: > + if checkbox.is_selected(): > + checkbox.click() > + > + self.driver.find_element(By.ID, "create-project-button").click() > + > + element = self.wait_until_visible('#project-created-notification') > + self.assertTrue( > + self.element_exists('#project-created-notification'), > + f"Project:{project_name} creation notification not shown" > + ) > + self.assertTrue( > + project_name in element.text, > + f"New project name:{project_name} not in new project notification" > + ) > + self.assertTrue( > + Project.objects.filter(name=project_name).count(), > + f"New project:{project_name} not found in database" > + ) > + > + # check release > + self.assertTrue(re.search( > + release_title, > + self.driver.find_element(By.XPATH, > + "//span[@id='project-release-title']" > + ).text), > + 'The project release is not defined') > + > + def test_create_new_project_master(self): > + """ Test create new project using: > + - Project Name: Any string > + - Release: Yocto Project master (option value: 3) > + - Merge Toaster settings: False > + """ > + release = '3' > + release_title = 'Yocto Project master' > + project_name = 'projectmaster' > + self._create_test_new_project( > + project_name, > + release, > + release_title, > + False, > + ) > + > + def test_create_new_project_kirkstone(self): > + """ Test create new project using: > + - Project Name: Any string > + - Release: Yocto Project 4.0 "Kirkstone" (option value: 1) > + - Merge Toaster settings: True > + """ > + release = '1' > + release_title = 'Yocto Project 4.0 "Kirkstone"' > + project_name = 'projectkirkstone' > + self._create_test_new_project( > + project_name, > + release, > + release_title, > + True, > + ) > + > + def test_create_new_project_dunfull(self): > + """ Test create new project using: > + - Project Name: Any string > + - Release: Yocto Project 3.1 "Dunfell" (option value: 5) > + - Merge Toaster settings: False > + """ > + release = '5' > + release_title = 'Yocto Project 3.1 "Dunfell"' > + project_name = 'projectdunfull' > + self._create_test_new_project( > + project_name, > + release, > + release_title, > + False, > + ) > + > + def test_create_new_project_local(self): > + """ Test create new project using: > + - Project Name: Any string > + - Release: Local Yocto Project (option value: 2) > + - Merge Toaster settings: True > + """ > + release = '2' > + release_title = 'Local Yocto Project' > + project_name = 'projectlocal' > + self._create_test_new_project( > + project_name, > + release, > + release_title, > + True, > + ) > -- > 2.34.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#15487): https://lists.openembedded.org/g/bitbake-devel/message/15487 > Mute This Topic: https://lists.openembedded.org/mt/102496102/3617179 > Group Owner: bitbake-devel+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/bitbake-devel/unsub [alexandre.belloni@bootlin.com] > -=-=-=-=-=-=-=-=-=-=-=- >
Hello Alexander, There is no difference, that's same patch. Sorry about duplicate, my commandeline '$git send-email' was block when sending the patch series, I canceled the process, then try again, but the first patch 1/3 was already sent in first process. Thanks! Alassane. ----- Mail original ----- De: "Alexandre Belloni via lists.openembedded.org" <alexandre.belloni=bootlin.com@lists.openembedded.org> À: "Alassane Yattara" <alassane.yattara@savoirfairelinux.com> Cc: "bitbake-devel" <bitbake-devel@lists.openembedded.org> Envoyé: Vendredi 10 Novembre 2023 09:09:43 Objet: Re: [bitbake-devel] [PATCH v3 1/3] Toaster: Write UI TestCase create new project Hello Alassane, On 09/11/2023 23:15:15+0100, Alassane Yattara wrote: > Test create new project using: > - Project Name: Any string > - Release: Master/Kirkstone/Dunfell/Local > - Merge Toaster settings: False/True > > Signed-off-by: Alassane Yattara <alassane.yattara@savoirfairelinux.com> > --- Please include a changelog here. At least, explain why you are sending multiple versions of the series on the same day, this would make the maintainers job easier. Thanks! > .../functional/test_create_new_project.py | 134 ++++++++++++++++++ > 1 file changed, 134 insertions(+) > create mode 100644 lib/toaster/tests/functional/test_create_new_project.py > > diff --git a/lib/toaster/tests/functional/test_create_new_project.py b/lib/toaster/tests/functional/test_create_new_project.py > new file mode 100644 > index 00000000..81355eaf > --- /dev/null > +++ b/lib/toaster/tests/functional/test_create_new_project.py > @@ -0,0 +1,134 @@ > +#! /usr/bin/env python3 # > +# BitBake Toaster UI tests implementation > +# > +# Copyright (C) 2023 Savoir-faire Linux > +# > +# SPDX-License-Identifier: GPL-2.0-only > +# > + > +import re > +import pytest > +from django.urls import reverse > +from selenium.webdriver.support.ui import Select > +from tests.functional.functional_helpers import SeleniumFunctionalTestCase > +from orm.models import Project > +from selenium.webdriver.common.by import By > + > +@pytest.mark.django_db > +class TestCreateNewProject(SeleniumFunctionalTestCase): > + > + def _create_test_new_project( > + self, > + project_name, > + release, > + release_title, > + merge_toaster_settings, > + ): > + """ Create/Test new project using: > + - Project Name: Any string > + - Release: Any string > + - Merge Toaster settings: True or False > + """ > + self.get(reverse('newproject')) > + self.driver.find_element(By.ID, > + "new-project-name").send_keys(project_name) > + > + select = Select(self.find('#projectversion')) > + select.select_by_value(release) > + > + # check merge toaster settings > + checkbox = self.find('.checkbox-mergeattr') > + if merge_toaster_settings: > + if not checkbox.is_selected(): > + checkbox.click() > + else: > + if checkbox.is_selected(): > + checkbox.click() > + > + self.driver.find_element(By.ID, "create-project-button").click() > + > + element = self.wait_until_visible('#project-created-notification') > + self.assertTrue( > + self.element_exists('#project-created-notification'), > + f"Project:{project_name} creation notification not shown" > + ) > + self.assertTrue( > + project_name in element.text, > + f"New project name:{project_name} not in new project notification" > + ) > + self.assertTrue( > + Project.objects.filter(name=project_name).count(), > + f"New project:{project_name} not found in database" > + ) > + > + # check release > + self.assertTrue(re.search( > + release_title, > + self.driver.find_element(By.XPATH, > + "//span[@id='project-release-title']" > + ).text), > + 'The project release is not defined') > + > + def test_create_new_project_master(self): > + """ Test create new project using: > + - Project Name: Any string > + - Release: Yocto Project master (option value: 3) > + - Merge Toaster settings: False > + """ > + release = '3' > + release_title = 'Yocto Project master' > + project_name = 'projectmaster' > + self._create_test_new_project( > + project_name, > + release, > + release_title, > + False, > + ) > + > + def test_create_new_project_kirkstone(self): > + """ Test create new project using: > + - Project Name: Any string > + - Release: Yocto Project 4.0 "Kirkstone" (option value: 1) > + - Merge Toaster settings: True > + """ > + release = '1' > + release_title = 'Yocto Project 4.0 "Kirkstone"' > + project_name = 'projectkirkstone' > + self._create_test_new_project( > + project_name, > + release, > + release_title, > + True, > + ) > + > + def test_create_new_project_dunfull(self): > + """ Test create new project using: > + - Project Name: Any string > + - Release: Yocto Project 3.1 "Dunfell" (option value: 5) > + - Merge Toaster settings: False > + """ > + release = '5' > + release_title = 'Yocto Project 3.1 "Dunfell"' > + project_name = 'projectdunfull' > + self._create_test_new_project( > + project_name, > + release, > + release_title, > + False, > + ) > + > + def test_create_new_project_local(self): > + """ Test create new project using: > + - Project Name: Any string > + - Release: Local Yocto Project (option value: 2) > + - Merge Toaster settings: True > + """ > + release = '2' > + release_title = 'Local Yocto Project' > + project_name = 'projectlocal' > + self._create_test_new_project( > + project_name, > + release, > + release_title, > + True, > + ) > -- > 2.34.1 > > > >
diff --git a/lib/toaster/tests/functional/test_create_new_project.py b/lib/toaster/tests/functional/test_create_new_project.py new file mode 100644 index 00000000..81355eaf --- /dev/null +++ b/lib/toaster/tests/functional/test_create_new_project.py @@ -0,0 +1,134 @@ +#! /usr/bin/env python3 # +# BitBake Toaster UI tests implementation +# +# Copyright (C) 2023 Savoir-faire Linux +# +# SPDX-License-Identifier: GPL-2.0-only +# + +import re +import pytest +from django.urls import reverse +from selenium.webdriver.support.ui import Select +from tests.functional.functional_helpers import SeleniumFunctionalTestCase +from orm.models import Project +from selenium.webdriver.common.by import By + +@pytest.mark.django_db +class TestCreateNewProject(SeleniumFunctionalTestCase): + + def _create_test_new_project( + self, + project_name, + release, + release_title, + merge_toaster_settings, + ): + """ Create/Test new project using: + - Project Name: Any string + - Release: Any string + - Merge Toaster settings: True or False + """ + self.get(reverse('newproject')) + self.driver.find_element(By.ID, + "new-project-name").send_keys(project_name) + + select = Select(self.find('#projectversion')) + select.select_by_value(release) + + # check merge toaster settings + checkbox = self.find('.checkbox-mergeattr') + if merge_toaster_settings: + if not checkbox.is_selected(): + checkbox.click() + else: + if checkbox.is_selected(): + checkbox.click() + + self.driver.find_element(By.ID, "create-project-button").click() + + element = self.wait_until_visible('#project-created-notification') + self.assertTrue( + self.element_exists('#project-created-notification'), + f"Project:{project_name} creation notification not shown" + ) + self.assertTrue( + project_name in element.text, + f"New project name:{project_name} not in new project notification" + ) + self.assertTrue( + Project.objects.filter(name=project_name).count(), + f"New project:{project_name} not found in database" + ) + + # check release + self.assertTrue(re.search( + release_title, + self.driver.find_element(By.XPATH, + "//span[@id='project-release-title']" + ).text), + 'The project release is not defined') + + def test_create_new_project_master(self): + """ Test create new project using: + - Project Name: Any string + - Release: Yocto Project master (option value: 3) + - Merge Toaster settings: False + """ + release = '3' + release_title = 'Yocto Project master' + project_name = 'projectmaster' + self._create_test_new_project( + project_name, + release, + release_title, + False, + ) + + def test_create_new_project_kirkstone(self): + """ Test create new project using: + - Project Name: Any string + - Release: Yocto Project 4.0 "Kirkstone" (option value: 1) + - Merge Toaster settings: True + """ + release = '1' + release_title = 'Yocto Project 4.0 "Kirkstone"' + project_name = 'projectkirkstone' + self._create_test_new_project( + project_name, + release, + release_title, + True, + ) + + def test_create_new_project_dunfull(self): + """ Test create new project using: + - Project Name: Any string + - Release: Yocto Project 3.1 "Dunfell" (option value: 5) + - Merge Toaster settings: False + """ + release = '5' + release_title = 'Yocto Project 3.1 "Dunfell"' + project_name = 'projectdunfull' + self._create_test_new_project( + project_name, + release, + release_title, + False, + ) + + def test_create_new_project_local(self): + """ Test create new project using: + - Project Name: Any string + - Release: Local Yocto Project (option value: 2) + - Merge Toaster settings: True + """ + release = '2' + release_title = 'Local Yocto Project' + project_name = 'projectlocal' + self._create_test_new_project( + project_name, + release, + release_title, + True, + )
Test create new project using: - Project Name: Any string - Release: Master/Kirkstone/Dunfell/Local - Merge Toaster settings: False/True Signed-off-by: Alassane Yattara <alassane.yattara@savoirfairelinux.com> --- .../functional/test_create_new_project.py | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 lib/toaster/tests/functional/test_create_new_project.py