ScriptEvent_HappyPath_CreatedWithoutError.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. """
  2. Copyright (c) Contributors to the Open 3D Engine Project.
  3. For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. SPDX-License-Identifier: Apache-2.0 OR MIT
  5. """
  6. # fmt: off
  7. class Tests():
  8. new_event_created = ("New Script Event created", "New Script Event not created")
  9. child_event_created = ("Child Event created", "Child not created")
  10. file_saved = ("Script event file saved", "Script event file did not save")
  11. console_error = ("No unexpected error in console", "Error found in console")
  12. console_warning = ("No unexpected warning in console", "Warning found in console")
  13. # fmt: on
  14. def CreateScriptEventFile():
  15. """
  16. Summary:
  17. Script Event file can be created
  18. Expected Behavior:
  19. File is created without any errors and warnings in Console
  20. Test Steps:
  21. 1) Open Asset Editor
  22. 2) Get Asset Editor Qt object
  23. 3) Create new Script Event Asset
  24. 4) Add new child event
  25. 5) Save the Script Event file
  26. 6) Verify if file is created
  27. 7) Verify console for errors/warnings
  28. 8) Close Asset Editor
  29. Note:
  30. - This test file must be called from the Open 3D Engine Editor command terminal
  31. - Any passed and failed tests are written to the Editor.log file.
  32. Parsing the file or running a log_monitor are required to observe the test results.
  33. :return: None
  34. """
  35. import os
  36. from utils import Report
  37. from utils import TestHelper as helper
  38. from utils import Tracer
  39. import pyside_utils
  40. # Open 3D Engine imports
  41. import azlmbr.legacy.general as general
  42. import azlmbr.editor as editor
  43. import azlmbr.bus as bus
  44. # Pyside imports
  45. from PySide2 import QtWidgets
  46. GENERAL_WAIT = 1.0 # seconds
  47. FILE_PATH = os.path.join("AutomatedTesting", "ScriptCanvas", "test_file.scriptevent")
  48. # 1) Open Asset Editor
  49. general.idle_enable(True)
  50. # Initially close the Asset Editor and then reopen to ensure we don't have any existing assets open
  51. general.close_pane("Asset Editor")
  52. general.open_pane("Asset Editor")
  53. helper.wait_for_condition(lambda: general.is_pane_visible("Asset Editor"), 5.0)
  54. # 2) Get Asset Editor Qt object
  55. editor_window = pyside_utils.get_editor_main_window()
  56. asset_editor_widget = editor_window.findChild(QtWidgets.QDockWidget, "Asset Editor").findChild(
  57. QtWidgets.QWidget, "AssetEditorWindowClass"
  58. )
  59. container = asset_editor_widget.findChild(QtWidgets.QWidget, "ContainerForRows")
  60. menu_bar = asset_editor_widget.findChild(QtWidgets.QMenuBar)
  61. # 3) Create new Script Event Asset
  62. action = pyside_utils.find_child_by_pattern(menu_bar, {"type": QtWidgets.QAction, "text": "Script Events"})
  63. action.trigger()
  64. result = helper.wait_for_condition(
  65. lambda: container.findChild(QtWidgets.QFrame, "Events") is not None, 3 * GENERAL_WAIT
  66. )
  67. Report.result(Tests.new_event_created, result)
  68. # 4) Add new child event
  69. add_event = container.findChild(QtWidgets.QFrame, "Events").findChild(QtWidgets.QToolButton, "")
  70. add_event.click()
  71. result = helper.wait_for_condition(
  72. lambda: asset_editor_widget.findChild(QtWidgets.QFrame, "EventName") is not None, GENERAL_WAIT
  73. )
  74. Report.result(Tests.child_event_created, result)
  75. with Tracer() as section_tracer:
  76. # 5) Save the Script Event file
  77. editor.AssetEditorWidgetRequestsBus(bus.Broadcast, "SaveAssetAs", FILE_PATH)
  78. # 6) Verify if file is created
  79. result = helper.wait_for_condition(lambda: os.path.exists(FILE_PATH), 3 * GENERAL_WAIT)
  80. Report.result(Tests.file_saved, result)
  81. # 7) Verify console for errors/warnings
  82. Report.result(Tests.console_error, not section_tracer.has_errors)
  83. Report.result(Tests.console_warning, not section_tracer.has_warnings)
  84. # 8) Close Asset Editor
  85. general.close_pane("Asset Editor")
  86. if __name__ == "__main__":
  87. import ImportPathHelper as imports
  88. imports.init()
  89. from utils import Report
  90. Report.start_test(CreateScriptEventFile)