test_create_new_project.py 4.2 KB

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