123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- """
- Copyright (c) Contributors to the Open 3D Engine Project.
- For complete copyright and license terms please see the LICENSE at the root of this distribution.
- SPDX-License-Identifier: Apache-2.0 OR MIT
- """
- from PySide2 import QtWidgets, QtTest, QtCore
- import pyside_utils
- from editor_python_test_tools.utils import TestHelper as helper
- from editor_python_test_tools.utils import Report
- import azlmbr.legacy.general as general
- import scripting_utils.scripting_tools as scripting_tools
- from scripting_utils.scripting_constants import WAIT_TIME_3, SCRIPT_CANVAS_UI, NODE_PALETTE_UI, NODE_PALETTE_QT,\
- TREE_VIEW_QT, NODE_CATEGORY_MATH
- # fmt: off
- class Tests:
- pane_close = ("Script Canvas pane successfully closed", "Script Canvas pane failed to close")
- pane_open = ("Script Canvas pane successfully opened", "Script Canvas pane failed to open")
- click_expand = ("Category expanded on left click", "Category failed to expand on left click")
- click_collapse = ("Category collapsed on left click", "Category failed to collapse on left click")
- dClick_expand = ("Category expanded on double click", "Category failed to expand on double click")
- dClick_collapse = ("Category collapsed on double click", "Category failed to collapse on double click")
- # fmt: on
- class NodeCategory_ExpandOnClick:
- """
- Summary:
- Verifying the expand/collapse functionality on node categories
- Expected Behavior:
- The node category should expand when double clicked or when the drop down indicator is
- left-clicked. Once expanded, it should be collapsed via the same actions.
- Test Steps:
- 1) Open Script Canvas pane
- 2) Get the SC window objects
- 3) Ensure all categories are collapsed for a clean state
- 4) Left-Click on a node category arrow to expand it and verify it's expanded
- 5) Left-Click on a node category arrow to collapse it and verify it's collapsed
- 6) Double-Click on a node category to expand it then verify it's expanded
- 7) Double-Click on a node category to collapse it and verify it's collapsed
- Note:
- - This test file must be called from the Open 3D Engine Editor command terminal
- - Any passed and failed tests are written to the Editor.log file.
- Parsing the file or running a log_monitor are required to observe the test results.
- :return: None
- """
- def __init__(self):
- self.editor_main_window = None
- self.sc_editor = None
- self.sc_editor_main_window = None
- def left_click_expander_button(self, node_palette_node_tree, category_index):
- rect_left_x = 1 # 1 pixel from the left side of the widget looks like where the expand button begins
- rect_center_y = node_palette_node_tree.visualRect(category_index).center().y()
- click_position = QtCore.QPoint(rect_left_x, rect_center_y)
- # click position relative to node palette tree view and not screen space xy
- QtTest.QTest.mouseClick(node_palette_node_tree.viewport(),
- QtCore.Qt.LeftButton,
- QtCore.Qt.NoModifier,
- click_position,
- )
- def double_click_node_category(self, node_palette_node_tree, index):
- item_index_center = node_palette_node_tree.visualRect(index).center()
- # Left click on the item before trying to double click, will otherwise fail to expand
- # as first click would highlight and second click would be a 'single click'
- pyside_utils.item_view_index_mouse_click(node_palette_node_tree, index)
- QtTest.QTest.mouseDClick(node_palette_node_tree.viewport(),
- QtCore.Qt.LeftButton,
- QtCore.Qt.NoModifier,
- item_index_center)
- def wait_and_verify_category_expanded_state(self, test_case, node_palette_node_tree, node_palette_math_category, expanded = True):
- category_has_expanded = helper.wait_for_condition(
- lambda: node_palette_node_tree.isExpanded(node_palette_math_category), WAIT_TIME_3)
- Report.result(test_case, expanded == category_has_expanded)
- @pyside_utils.wrap_async
- async def run_test(self):
- # Preconditions
- general.idle_enable(True)
- general.close_pane(SCRIPT_CANVAS_UI)
- helper.wait_for_condition(lambda: general.is_pane_visible(SCRIPT_CANVAS_UI) is None, WAIT_TIME_3)
- # 1) Open Script Canvas pane
- general.open_pane(SCRIPT_CANVAS_UI)
- Report.critical_result(Tests.pane_open, general.is_pane_visible(SCRIPT_CANVAS_UI))
- # 2) Get the SC window objects (editor, sc editor, node palette elements)
- scripting_tools.initialize_editor_object(self)
- scripting_tools.initialize_sc_editor_objects(self)
- scripting_tools.open_node_palette(self)
- # wait for the node palette and other SC elements to render
- helper.wait_for_condition(lambda: self.sc_editor.findChild(QtWidgets.QDockWidget, NODE_PALETTE_QT) is not None, WAIT_TIME_3)
- node_palette_node_tree = scripting_tools.get_node_palette_node_tree_qt_object(self)
- node_palette_math_category = scripting_tools.get_node_palette_category_qt_object(self, NODE_CATEGORY_MATH)
- # 3) Ensure all categories are collapsed for a clean state
- node_palette_node_tree.collapseAll()
- # 4) Left-Click on a node category arrow to expand it and verify it's expanded
- self.left_click_expander_button(node_palette_node_tree, node_palette_math_category)
- self.wait_and_verify_category_expanded_state(Tests.click_expand, node_palette_node_tree, node_palette_math_category)
- # 5) Left-Click on a node category arrow to collapse it and verify it's collapsed
- self.left_click_expander_button(node_palette_node_tree, node_palette_math_category)
- self.wait_and_verify_category_expanded_state(Tests.click_collapse, node_palette_node_tree, node_palette_math_category, False)
- # 6) Double-Click on a node category to expand it then verify it's expanded
- self.double_click_node_category(node_palette_node_tree, node_palette_math_category)
- self.wait_and_verify_category_expanded_state(Tests.dClick_expand, node_palette_node_tree, node_palette_math_category)
- # 7) Double-Click on a node category to collapse it and verify it's collapsed
- self.double_click_node_category(node_palette_node_tree, node_palette_math_category)
- self.wait_and_verify_category_expanded_state(Tests.dClick_collapse, node_palette_node_tree, node_palette_math_category, False)
- test = NodeCategory_ExpandOnClick()
- test.run_test()
|