add ShadowTest map with its assets and update the hydra test + test scripts with correct paths

This commit is contained in:
jromnoa
2021-04-21 18:09:08 -07:00
parent 7623d28995
commit 22e9abf6a0
16 changed files with 497 additions and 76 deletions
@@ -20,86 +20,84 @@ sys.path.append(os.path.join(azlmbr.paths.devroot, 'AutomatedTesting', 'Gem', 'P
from automatedtesting_shared.editor_test_helper import EditorTestHelper
LEVELS = os.listdir(os.path.join(azlmbr.paths.devroot, "AutomatedTesting", "Levels", "AtomLevels"))
levels = os.listdir(os.path.join(azlmbr.paths.devroot, "AutomatedTesting", "Levels", "AtomLevels"))
helper = EditorTestHelper(log_prefix="HydraAtomLevels")
class HydraAtomLevels(EditorTestHelper):
"""Tests that all expected Atom levels can be opened and load successfully."""
def __init__(self):
EditorTestHelper.__init__(self, log_prefix="Atom_TestAllLevelsOpenClose", args=["level"])
def run():
"""
1. Open & close all valid test levels in the Editor.
2. Every time a level is opened, verify it loads correctly and the Editor remains stable.
"""
def run(self):
"""
1. Open & close all valid test levels in the Editor.
2. Every time a level is opened, verify it loads correctly and the Editor remains stable.
"""
# Create a new level.
level_name = "tmp_level" # Defined in test_Atom_MainSuite.py
heightmap_resolution = 512
heightmap_meters_per_pixel = 1
terrain_texture_resolution = 412
use_terrain = False
def after_level_load():
"""Function to call after creating/opening a level to ensure it loads."""
# Give everything a second to initialize.
general.idle_enable(True)
general.update_viewport()
general.idle_wait(0.5) # half a second is more than enough for updating the viewport.
# Return codes are ECreateLevelResult defined in CryEdit.h
return_code = general.create_level_no_prompt(
f"AtomLevels/{level_name}",
heightmap_resolution,
heightmap_meters_per_pixel,
terrain_texture_resolution,
use_terrain
)
if return_code == 1:
general.log(f"AtomLevels/{level_name} level already exists")
elif return_code == 2:
general.log("Failed to create directory")
elif return_code == 3:
general.log("Directory length is too long")
elif return_code != 0:
general.log("Unknown error, failed to create level")
else:
general.log(f"AtomLevels/{level_name} level created successfully")
after_level_load()
# Close out problematic windows, FPS meters, and anti-aliasing.
if general.is_helpers_shown(): # Turn off the helper gizmos if visible
general.toggle_helpers()
if general.is_pane_visible("Error Report"): # Close Error Report windows that block focus.
general.close_pane("Error Report")
if general.is_pane_visible("Error Log"): # Close Error Log windows that block focus.
general.close_pane("Error Log")
general.run_console("r_displayInfo=0")
general.run_console("r_antialiasingmode=0")
return True
# Create a new level.
heightmap_resolution = 512
heightmap_meters_per_pixel = 1
terrain_texture_resolution = 412
use_terrain = False
# Return codes are ECreateLevelResult defined in CryEdit.h
return_code = general.create_level_no_prompt(
self.args['level'],
heightmap_resolution,
heightmap_meters_per_pixel,
terrain_texture_resolution,
use_terrain
)
if return_code == 1:
general.log(f"{self.args['level']} level already exists")
elif return_code == 2:
general.log("Failed to create directory")
elif return_code == 3:
general.log("Directory length is too long")
elif return_code != 0:
general.log("Unknown error, failed to create level")
# Open all valid AtomLevels.
failed_to_open = []
levels.append(level_name)
for level in levels:
if general.is_idle_enabled() and (general.get_current_level_name() == level):
general.log(f"Level {level} already open.")
else:
general.log(f"{self.args['level']} level created successfully")
after_level_load()
general.log(f"Opening level {level}")
general.open_level_no_prompt(f"AtomLevels/{level}")
helper.wait_for_condition(function=lambda: general.get_current_level_name() == level,
timeout_in_seconds=4.0)
result = (general.get_current_level_name() == level) and after_level_load()
if result:
general.log(f"Successfully opened {level}")
else:
general.log(f"{level} failed to open")
failed_to_open.append(level)
# Open all valid test levels.
failed_to_open = []
LEVELS.append(self.args['level']) # Update LEVELS constant for created level.
for level in LEVELS:
if general.is_idle_enabled() and (general.get_current_level_name() == level):
general.log(f"Level {level} already open.")
else:
general.log(f"Opening level {level}")
general.open_level_no_prompt(level)
self.wait_for_condition(function=lambda: general.get_current_level_name() == level,
timeout_in_seconds=2.0)
result = (general.get_current_level_name() == level) and after_level_load()
if result:
general.log(f"Successfully opened {level}")
else:
general.log(f"{level} failed to open")
failed_to_open.append(level)
if failed_to_open:
general.log(f"The following levels failed to open: {failed_to_open}")
if failed_to_open:
general.log(f"The following levels failed to open: {failed_to_open}")
test = HydraAtomLevels()
test.run()
def after_level_load():
"""Function to call after creating/opening a level to ensure it loads."""
# Give everything a second to initialize.
general.idle_enable(True)
general.update_viewport()
general.idle_wait(0.5) # half a second is more than enough for updating the viewport.
# Close out problematic windows, FPS meters, and anti-aliasing.
if general.is_helpers_shown(): # Turn off the helper gizmos if visible
general.toggle_helpers()
if general.is_pane_visible("Error Report"): # Close Error Report windows that block focus.
general.close_pane("Error Report")
if general.is_pane_visible("Error Log"): # Close Error Log windows that block focus.
general.close_pane("Error Log")
general.run_console("r_displayInfo=0")
general.run_console("r_antialiasingmode=0")
return True
if __name__ == "__main__":
run()
@@ -48,11 +48,12 @@ class TestAtomLevels(object):
request.addfinalizer(teardown)
@pytest.mark.test_case_id("C34428159") # Level: ActorTest_100Actors
@pytest.mark.test_case_id("C34428174") # Level: ShadowTest
def test_AllLevels_OpenClose(self, request, editor, level, workspace, project, launcher_platform):
cfg_args = [level]
test_levels = os.path.join(str(PROJECT_DIRECTORY), "Levels", "AtomLevels")
test_levels = os.listdir(os.path.join(str(PROJECT_DIRECTORY), project, "Levels", "AtomLevels"))
test_levels.append(level)
expected_lines = []
for level in test_levels: