diff mbox series

[1/8] Toaster: Write UI TestCase create new Master project

Message ID 20231101221355.239053-1-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 master (option value: 3)
- Merge Toaster settings: False

Signed-off-by: Alassane Yattara <alassane.yattara@savoirfairelinux.com>
---
 .../functional/test_create_new_project.py     | 57 +++++++++++++++++++
 1 file changed, 57 insertions(+)
 create mode 100644 lib/toaster/tests/functional/test_create_new_project.py
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
new file mode 100644
index 00000000..2b3c98ac
--- /dev/null
+++ b/lib/toaster/tests/functional/test_create_new_project.py
@@ -0,0 +1,57 @@ 
+#! /usr/bin/env python3
+#
+# BitBake Toaster UI tests implementation
+#
+# Copyright (C) 2023 Savoir-faire Linux Inc
+#
+# 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 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 = 'Yocto Project master'
+        project_name = 'projectmaster'
+        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(3))
+
+        # uncheck 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')