diff --git a/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_hydra_scripts/hydra_AllLevels_OpenClose.py b/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_hydra_scripts/hydra_AllLevels_OpenClose.py index 100fd2311b..81075657f4 100644 --- a/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_hydra_scripts/hydra_AllLevels_OpenClose.py +++ b/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_hydra_scripts/hydra_AllLevels_OpenClose.py @@ -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() diff --git a/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py b/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py index 7f33d06623..fe23f108bd 100644 --- a/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py +++ b/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py @@ -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: diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/Environment.xml new file mode 100644 index 0000000000..c8398b6257 --- /dev/null +++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/Environment.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/Heightmap.dat new file mode 100644 index 0000000000..2bb3c003f3 --- /dev/null +++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/Heightmap.dat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8859eeafde418ffe71a29da14f5419439f9cdd598517b0de51bf1049770de44 +size 8389396 diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/TerrainTexture.xml new file mode 100644 index 0000000000..f43df05b22 --- /dev/null +++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/TerrainTexture.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/TimeOfDay.xml new file mode 100644 index 0000000000..e4106ce437 --- /dev/null +++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/TimeOfDay.xml @@ -0,0 +1,356 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/VegetationMap.dat new file mode 100644 index 0000000000..dce5631cd0 --- /dev/null +++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/VegetationMap.dat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9 +size 63 diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/ShadowTest.ly b/AutomatedTesting/Levels/AtomLevels/ShadowTest/ShadowTest.ly new file mode 100644 index 0000000000..34d7254d5e --- /dev/null +++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/ShadowTest.ly @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c19dc62e3349a435a6760fd532b28c9a86c626e800687bb585038adf48a16397 +size 9146 diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/TerrainTexture.pak b/AutomatedTesting/Levels/AtomLevels/ShadowTest/TerrainTexture.pak new file mode 100644 index 0000000000..fe3604a050 --- /dev/null +++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/TerrainTexture.pak @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85 +size 22 diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/filelist.xml b/AutomatedTesting/Levels/AtomLevels/ShadowTest/filelist.xml new file mode 100644 index 0000000000..502f2b5af5 --- /dev/null +++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/filelist.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/level.pak b/AutomatedTesting/Levels/AtomLevels/ShadowTest/level.pak new file mode 100644 index 0000000000..34ec3a3cb3 --- /dev/null +++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/level.pak @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fc101d03df12328e2a1ddf817628963c60d3999dfd08aceb843c5e2bd0c16f7 +size 41574 diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/tags.txt b/AutomatedTesting/Levels/AtomLevels/ShadowTest/tags.txt new file mode 100644 index 0000000000..0d6c1880e7 --- /dev/null +++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/tags.txt @@ -0,0 +1,12 @@ +0,0,0,0,0,0 +0,0,0,0,0,0 +0,0,0,0,0,0 +0,0,0,0,0,0 +0,0,0,0,0,0 +0,0,0,0,0,0 +0,0,0,0,0,0 +0,0,0,0,0,0 +0,0,0,0,0,0 +0,0,0,0,0,0 +0,0,0,0,0,0 +0,0,0,0,0,0 diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/terrain/cover.ctc b/AutomatedTesting/Levels/AtomLevels/ShadowTest/terrain/cover.ctc new file mode 100644 index 0000000000..5c869c6533 --- /dev/null +++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/terrain/cover.ctc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdab340ad6c6dc6c1167e31afa061684be083360fc4108fa9f1fa4b15fe95d8c +size 1310792 diff --git a/AutomatedTesting/Objects/bunny.fbx b/AutomatedTesting/Objects/bunny.fbx new file mode 100644 index 0000000000..586062ebba --- /dev/null +++ b/AutomatedTesting/Objects/bunny.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee81db4d3aa5c76316cb51c700d6b35f500bc599d91b9f62d057df16ed9be929 +size 3266108 diff --git a/AutomatedTesting/Objects/cube.fbx b/AutomatedTesting/Objects/cube.fbx new file mode 100644 index 0000000000..616c7b4ff3 --- /dev/null +++ b/AutomatedTesting/Objects/cube.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e32877eab35459499c73ff093df898f93bf3e7379de25eef6875d693be9bec81 +size 18015 diff --git a/AutomatedTesting/Objects/plane.fbx b/AutomatedTesting/Objects/plane.fbx new file mode 100644 index 0000000000..b274bfa282 --- /dev/null +++ b/AutomatedTesting/Objects/plane.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a1f8d75dcd85e8b4aa57f6c0c81af0300ff96915ba3c2b591095c215d5e1d8c +size 12072