1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
#! /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.select import Select
from tests.functional.functional_helpers import SeleniumFunctionalTestCase
from selenium.webdriver.common.by import By
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 = '3'
release_title = 'Yocto Project master'
project_name = 'projectmaster'
self.create_new_project(
project_name,
release,
release_title,
False,
)
def test_create_new_project_scarthgap(self):
""" Test create new project using:
- Project Name: Any string
- Release: Yocto Project 5.0 "Scarthgap" (option value: 1)
- Merge Toaster settings: True
"""
release = '1'
release_title = 'Yocto Project 5.0 "Scarthgap"'
project_name = 'projectscarthgap'
self.create_new_project(
project_name,
release,
release_title,
True,
)
def test_create_new_project_kirkstone(self):
""" Test create new project using:
- Project Name: Any string
- Release: Yocto Project 4.0 "Kirkstone" (option value: 6)
- Merge Toaster settings: True
"""
release = '7'
release_title = 'Yocto Project 4.0 "Kirkstone"'
project_name = 'projectkirkstone'
self.create_new_project(
project_name,
release,
release_title,
True,
)
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_new_project(
project_name,
release,
release_title,
True,
)
def test_create_new_project_without_name(self):
""" Test create new project without project name """
self.get(reverse('newproject'))
select = Select(self.find('#projectversion'))
select.select_by_value(str(3))
# Check input name has required attribute
input_name = self.driver.find_element(By.ID, "new-project-name")
self.assertIsNotNone(input_name.get_attribute('required'),
'Input name has not required attribute')
# Check create button is disabled
create_btn = self.driver.find_element(By.ID, "create-project-button")
self.assertIsNotNone(create_btn.get_attribute('disabled'),
'Create button is not disabled')
def test_import_new_project(self):
""" Test import new project using:
- Project Name: Any string
- Project type: select (Import command line project)
- Import existing project directory: Wrong Path
"""
project_name = 'projectimport'
self.get(reverse('newproject'))
self.driver.find_element(By.ID,
"new-project-name").send_keys(project_name)
# select import project
self.find('#type-import').click()
# set wrong path
wrong_path = '/wrongpath'
self.driver.find_element(By.ID,
"import-project-dir").send_keys(wrong_path)
self.driver.find_element(By.ID, "create-project-button").click()
self.wait_until_visible('.alert-danger')
# check error message
self.assertTrue(self.element_exists('.alert-danger'),
'Alert message not shown')
self.assertTrue(wrong_path in self.find('.alert-danger').text,
"Wrong path not in alert message")
|