diff mbox series

[5/8] Toaster: Write UI TestCase create new Dunfell project

Message ID 20231101221314.236173-5-alassane.yattara@savoirfairelinux.com
State New
Headers show
Series [1/8] Toaster: Write UI TestCase create new Master project | expand

Commit Message

Alassane Yattara Nov. 1, 2023, 10:13 p.m. UTC
Test create new project using:
  - Project Name: Any string
  - Release: Yocto Project 3.1 "Dunfell" (option value: 5)
  - Merge Toaster settings: False

Signed-off-by: Alassane Yattara <alassane.yattara@savoirfairelinux.com>
---
 .../functional/test_create_new_project.py     | 38 +++++++++++++++++++
 1 file changed, 38 insertions(+)

Comments

Richard Purdie Nov. 9, 2023, 2:43 p.m. UTC | #1
On Wed, 2023-11-01 at 23:13 +0100, Alassane Yattara wrote:
> Test create new project using:
>   - Project Name: Any string
>   - Release: Yocto Project 3.1 "Dunfell" (option value: 5)
>   - Merge Toaster settings: False
> 
> Signed-off-by: Alassane Yattara <alassane.yattara@savoirfairelinux.com>
> ---
>  .../functional/test_create_new_project.py     | 38 +++++++++++++++++++
>  1 file changed, 38 insertions(+)
> 
> diff --git a/lib/toaster/tests/functional/test_create_new_project.py b/lib/toaster/tests/functional/test_create_new_project.py
> index c6345e5b..cd690e1a 100644
> --- a/lib/toaster/tests/functional/test_create_new_project.py
> +++ b/lib/toaster/tests/functional/test_create_new_project.py
> @@ -132,3 +132,41 @@ class TestCreateNewProject(SeleniumFunctionalTestCase):
>                                       "//span[@id='project-release-title']"
>                                       ).text),
>                          'The project release is not defined')
> +
> +    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 = 'Yocto Project 3.1 "Dunfell"'
> +        project_name = 'projectdunfull'
> +        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(str(5))
> +
> +        # check merge toaster settings
> +        checkbox = self.find('.checkbox-mergeattr')
> +        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'),
> +                        'Project creation notification not shown')
> +        self.assertTrue(project_name in element.text,
> +                        "New project name not in new project notification")
> +        self.assertTrue(Project.objects.filter(name=project_name).count(),
> +                        "New project not found in database")
> +
> +        # check release
> +        self.assertTrue(re.search(
> +            release,
> +            self.driver.find_element(By.XPATH,
> +                                     "//span[@id='project-release-title']"
> +                                     ).text),
> +                        'The project release is not defined')

Since there are a number of similar tests here, shouldn't they share a
common function which we pass the release/other details into?

I'd also skip mickledore right now since it is about to go end of life
and be replaced by nanbield.

Cheers,

Richard
diff mbox series

Patch

diff --git a/lib/toaster/tests/functional/test_create_new_project.py b/lib/toaster/tests/functional/test_create_new_project.py
index c6345e5b..cd690e1a 100644
--- a/lib/toaster/tests/functional/test_create_new_project.py
+++ b/lib/toaster/tests/functional/test_create_new_project.py
@@ -132,3 +132,41 @@  class TestCreateNewProject(SeleniumFunctionalTestCase):
                                      "//span[@id='project-release-title']"
                                      ).text),
                         'The project release is not defined')
+
+    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 = 'Yocto Project 3.1 "Dunfell"'
+        project_name = 'projectdunfull'
+        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(str(5))
+
+        # check merge toaster settings
+        checkbox = self.find('.checkbox-mergeattr')
+        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'),
+                        'Project creation notification not shown')
+        self.assertTrue(project_name in element.text,
+                        "New project name not in new project notification")
+        self.assertTrue(Project.objects.filter(name=project_name).count(),
+                        "New project not found in database")
+
+        # check release
+        self.assertTrue(re.search(
+            release,
+            self.driver.find_element(By.XPATH,
+                                     "//span[@id='project-release-title']"
+                                     ).text),
+                        'The project release is not defined')