add ShadowTest map with its assets and update the hydra test + test scripts with correct paths
This commit is contained in:
+72
-74
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user