diff options
Diffstat (limited to 'bitbake/lib/toaster/tests/functional/test_create_new_project.py')
-rw-r--r-- | bitbake/lib/toaster/tests/functional/test_create_new_project.py | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/bitbake/lib/toaster/tests/functional/test_create_new_project.py b/bitbake/lib/toaster/tests/functional/test_create_new_project.py new file mode 100644 index 0000000000..66213c736e --- /dev/null +++ b/bitbake/lib/toaster/tests/functional/test_create_new_project.py | |||
@@ -0,0 +1,124 @@ | |||
1 | #! /usr/bin/env python3 | ||
2 | # BitBake Toaster UI tests implementation | ||
3 | # | ||
4 | # Copyright (C) 2023 Savoir-faire Linux | ||
5 | # | ||
6 | # SPDX-License-Identifier: GPL-2.0-only | ||
7 | # | ||
8 | |||
9 | import re | ||
10 | import pytest | ||
11 | from django.urls import reverse | ||
12 | from selenium.webdriver.support.select import Select | ||
13 | from tests.functional.functional_helpers import SeleniumFunctionalTestCase | ||
14 | from selenium.webdriver.common.by import By | ||
15 | |||
16 | class TestCreateNewProject(SeleniumFunctionalTestCase): | ||
17 | |||
18 | def test_create_new_project_master(self): | ||
19 | """ Test create new project using: | ||
20 | - Project Name: Any string | ||
21 | - Release: Yocto Project master (option value: 3) | ||
22 | - Merge Toaster settings: False | ||
23 | """ | ||
24 | release = '3' | ||
25 | release_title = 'Yocto Project master' | ||
26 | project_name = 'projectmaster' | ||
27 | self.create_new_project( | ||
28 | project_name, | ||
29 | release, | ||
30 | release_title, | ||
31 | False, | ||
32 | ) | ||
33 | |||
34 | def test_create_new_project_scarthgap(self): | ||
35 | """ Test create new project using: | ||
36 | - Project Name: Any string | ||
37 | - Release: Yocto Project 5.0 "Scarthgap" (option value: 1) | ||
38 | - Merge Toaster settings: True | ||
39 | """ | ||
40 | release = '1' | ||
41 | release_title = 'Yocto Project 5.0 "Scarthgap"' | ||
42 | project_name = 'projectscarthgap' | ||
43 | self.create_new_project( | ||
44 | project_name, | ||
45 | release, | ||
46 | release_title, | ||
47 | True, | ||
48 | ) | ||
49 | |||
50 | def test_create_new_project_kirkstone(self): | ||
51 | """ Test create new project using: | ||
52 | - Project Name: Any string | ||
53 | - Release: Yocto Project 4.0 "Kirkstone" (option value: 6) | ||
54 | - Merge Toaster settings: True | ||
55 | """ | ||
56 | release = '7' | ||
57 | release_title = 'Yocto Project 4.0 "Kirkstone"' | ||
58 | project_name = 'projectkirkstone' | ||
59 | self.create_new_project( | ||
60 | project_name, | ||
61 | release, | ||
62 | release_title, | ||
63 | True, | ||
64 | ) | ||
65 | |||
66 | def test_create_new_project_local(self): | ||
67 | """ Test create new project using: | ||
68 | - Project Name: Any string | ||
69 | - Release: Local Yocto Project (option value: 2) | ||
70 | - Merge Toaster settings: True | ||
71 | """ | ||
72 | release = '2' | ||
73 | release_title = 'Local Yocto Project' | ||
74 | project_name = 'projectlocal' | ||
75 | self.create_new_project( | ||
76 | project_name, | ||
77 | release, | ||
78 | release_title, | ||
79 | True, | ||
80 | ) | ||
81 | |||
82 | def test_create_new_project_without_name(self): | ||
83 | """ Test create new project without project name """ | ||
84 | self.get(reverse('newproject')) | ||
85 | |||
86 | select = Select(self.find('#projectversion')) | ||
87 | select.select_by_value(str(3)) | ||
88 | |||
89 | # Check input name has required attribute | ||
90 | input_name = self.driver.find_element(By.ID, "new-project-name") | ||
91 | self.assertIsNotNone(input_name.get_attribute('required'), | ||
92 | 'Input name has not required attribute') | ||
93 | |||
94 | # Check create button is disabled | ||
95 | create_btn = self.driver.find_element(By.ID, "create-project-button") | ||
96 | self.assertIsNotNone(create_btn.get_attribute('disabled'), | ||
97 | 'Create button is not disabled') | ||
98 | |||
99 | def test_import_new_project(self): | ||
100 | """ Test import new project using: | ||
101 | - Project Name: Any string | ||
102 | - Project type: select (Import command line project) | ||
103 | - Import existing project directory: Wrong Path | ||
104 | """ | ||
105 | project_name = 'projectimport' | ||
106 | self.get(reverse('newproject')) | ||
107 | self.driver.find_element(By.ID, | ||
108 | "new-project-name").send_keys(project_name) | ||
109 | # select import project | ||
110 | self.find('#type-import').click() | ||
111 | |||
112 | # set wrong path | ||
113 | wrong_path = '/wrongpath' | ||
114 | self.driver.find_element(By.ID, | ||
115 | "import-project-dir").send_keys(wrong_path) | ||
116 | self.driver.find_element(By.ID, "create-project-button").click() | ||
117 | |||
118 | self.wait_until_visible('.alert-danger') | ||
119 | |||
120 | # check error message | ||
121 | self.assertTrue(self.element_exists('.alert-danger'), | ||
122 | 'Alert message not shown') | ||
123 | self.assertTrue(wrong_path in self.find('.alert-danger').text, | ||
124 | "Wrong path not in alert message") | ||