|
|
|
|
@ -12,7 +12,7 @@ import pytest
|
|
|
|
|
import editor_python_test_tools.hydra_test_utils as hydra
|
|
|
|
|
import ly_test_tools.environment.file_system as file_system
|
|
|
|
|
from ly_test_tools.benchmark.data_aggregator import BenchmarkDataAggregator
|
|
|
|
|
from ly_test_tools.o3de.editor_test import EditorSharedTest, EditorTestSuite
|
|
|
|
|
from ly_test_tools.o3de.editor_test import EditorSingleTest, EditorTestSuite
|
|
|
|
|
from Atom.atom_utils.atom_component_helper import compare_screenshot_to_golden_image, golden_images_directory
|
|
|
|
|
|
|
|
|
|
DEFAULT_SUBFOLDER_PATH = 'user/PythonTests/Automated/Screenshots'
|
|
|
|
|
@ -23,89 +23,137 @@ logger = logging.getLogger(__name__)
|
|
|
|
|
@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
|
|
|
|
|
class TestAutomation(EditorTestSuite):
|
|
|
|
|
# Remove -autotest_mode from global_extra_cmdline_args since we need rendering for these tests.
|
|
|
|
|
global_extra_cmdline_args = ["-BatchMode"] # Default is ["-BatchMode", "-autotest_mode"]
|
|
|
|
|
|
|
|
|
|
global_extra_cmdline_args = ["-autotest_mode"] # Default is ["-BatchMode", "-autotest_mode"]
|
|
|
|
|
use_null_renderer = False # Default is True
|
|
|
|
|
enable_prefab_system = False
|
|
|
|
|
|
|
|
|
|
@pytest.mark.test_case_id("C34603773")
|
|
|
|
|
class AtomGPU_BasicLevelSetup_SetsUpLevel(EditorSharedTest):
|
|
|
|
|
use_null_renderer = False # Default is True
|
|
|
|
|
screenshot_name = "AtomBasicLevelSetup.ppm"
|
|
|
|
|
test_screenshots = [] # Gets set by setup()
|
|
|
|
|
screenshot_directory = "" # Gets set by setup()
|
|
|
|
|
|
|
|
|
|
# Clear existing test screenshots before starting test.
|
|
|
|
|
def setup(self, workspace):
|
|
|
|
|
screenshot_directory = os.path.join(workspace.paths.project(), DEFAULT_SUBFOLDER_PATH)
|
|
|
|
|
test_screenshots = [os.path.join(screenshot_directory, self.screenshot_name)]
|
|
|
|
|
file_system.delete(test_screenshots, True, True)
|
|
|
|
|
|
|
|
|
|
golden_images = [os.path.join(golden_images_directory(), screenshot_name)]
|
|
|
|
|
|
|
|
|
|
from Atom.tests import hydra_AtomGPU_BasicLevelSetup as test_module
|
|
|
|
|
|
|
|
|
|
assert compare_screenshot_to_golden_image(screenshot_directory, test_screenshots, golden_images, 0.99) is True
|
|
|
|
|
|
|
|
|
|
@pytest.mark.test_case_id("C34525095")
|
|
|
|
|
class AtomGPU_LightComponent_AreaLightScreenshotsMatchGoldenImages(EditorSharedTest):
|
|
|
|
|
use_null_renderer = False # Default is True
|
|
|
|
|
screenshot_names = [
|
|
|
|
|
"AreaLight_1.ppm",
|
|
|
|
|
"AreaLight_2.ppm",
|
|
|
|
|
"AreaLight_3.ppm",
|
|
|
|
|
"AreaLight_4.ppm",
|
|
|
|
|
"AreaLight_5.ppm",
|
|
|
|
|
]
|
|
|
|
|
test_screenshots = [] # Gets set by setup()
|
|
|
|
|
screenshot_directory = "" # Gets set by setup()
|
|
|
|
|
|
|
|
|
|
# Clear existing test screenshots before starting test.
|
|
|
|
|
def setup(self, workspace):
|
|
|
|
|
screenshot_directory = os.path.join(workspace.paths.project(), DEFAULT_SUBFOLDER_PATH)
|
|
|
|
|
for screenshot in self.screenshot_names:
|
|
|
|
|
screenshot_path = os.path.join(screenshot_directory, screenshot)
|
|
|
|
|
self.test_screenshots.append(screenshot_path)
|
|
|
|
|
file_system.delete(self.test_screenshots, True, True)
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def screenshot_setup(screenshot_directory, screenshot_names):
|
|
|
|
|
"""
|
|
|
|
|
:param screenshot_names: list of screenshot file names with extensions
|
|
|
|
|
:return: tuple test_screenshots, golden_images each a list of full file paths
|
|
|
|
|
"""
|
|
|
|
|
test_screenshots = []
|
|
|
|
|
golden_images = []
|
|
|
|
|
for screenshot in screenshot_names:
|
|
|
|
|
screenshot_path = os.path.join(screenshot_directory, screenshot)
|
|
|
|
|
test_screenshots.append(screenshot_path)
|
|
|
|
|
file_system.delete(test_screenshots, True, True)
|
|
|
|
|
for golden_image in screenshot_names:
|
|
|
|
|
golden_image_path = os.path.join(golden_images_directory(), golden_image)
|
|
|
|
|
golden_images.append(golden_image_path)
|
|
|
|
|
return test_screenshots, golden_images
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.test_case_id("C34525095")
|
|
|
|
|
class AtomGPU_LightComponent_AreaLightScreenshotsMatchGoldenImages_DX12(EditorSingleTest):
|
|
|
|
|
from Atom.tests import hydra_AtomGPU_AreaLightScreenshotTest as test_module
|
|
|
|
|
|
|
|
|
|
assert compare_screenshot_to_golden_image(screenshot_directory, test_screenshots, golden_images, 0.99) is True
|
|
|
|
|
extra_cmdline_args = ["-rhi=dx12"]
|
|
|
|
|
|
|
|
|
|
# Custom setup/teardown to remove old screenshots and establish paths to golden images
|
|
|
|
|
def setup(self, request, workspace, editor, editor_test_results, launcher_platform):
|
|
|
|
|
self.screenshot_directory = os.path.join(workspace.paths.project(), DEFAULT_SUBFOLDER_PATH)
|
|
|
|
|
self.screenshot_names = [
|
|
|
|
|
"AreaLight_1.ppm",
|
|
|
|
|
"AreaLight_2.ppm",
|
|
|
|
|
"AreaLight_3.ppm",
|
|
|
|
|
"AreaLight_4.ppm",
|
|
|
|
|
"AreaLight_5.ppm",
|
|
|
|
|
]
|
|
|
|
|
self.test_screenshots, self.golden_images = TestAutomation.screenshot_setup(
|
|
|
|
|
screenshot_directory=self.screenshot_directory,
|
|
|
|
|
screenshot_names=self.screenshot_names)
|
|
|
|
|
|
|
|
|
|
def wrap_run(self, request, workspace, editor, editor_test_results, launcher_platform):
|
|
|
|
|
yield
|
|
|
|
|
assert compare_screenshot_to_golden_image(self.screenshot_directory,
|
|
|
|
|
self.test_screenshots,
|
|
|
|
|
self.golden_images,
|
|
|
|
|
similarity_threshold=0.96) is True
|
|
|
|
|
|
|
|
|
|
@pytest.mark.test_case_id("C34525110")
|
|
|
|
|
class AtomGPU_LightComponent_SpotLightScreenshotsMatchGoldenImages(EditorSharedTest):
|
|
|
|
|
use_null_renderer = False # Default is True
|
|
|
|
|
screenshot_names = [
|
|
|
|
|
"SpotLight_1.ppm",
|
|
|
|
|
"SpotLight_2.ppm",
|
|
|
|
|
"SpotLight_3.ppm",
|
|
|
|
|
"SpotLight_4.ppm",
|
|
|
|
|
"SpotLight_5.ppm",
|
|
|
|
|
"SpotLight_6.ppm",
|
|
|
|
|
]
|
|
|
|
|
test_screenshots = [] # Gets set by setup()
|
|
|
|
|
screenshot_directory = "" # Gets set by setup()
|
|
|
|
|
@pytest.mark.test_case_id("C34525095")
|
|
|
|
|
class AtomGPU_LightComponent_AreaLightScreenshotsMatchGoldenImages_Vulkan(EditorSingleTest):
|
|
|
|
|
from Atom.tests import hydra_AtomGPU_AreaLightScreenshotTest as test_module
|
|
|
|
|
|
|
|
|
|
# Clear existing test screenshots before starting test.
|
|
|
|
|
def setup(self, workspace):
|
|
|
|
|
screenshot_directory = os.path.join(workspace.paths.project(), DEFAULT_SUBFOLDER_PATH)
|
|
|
|
|
for screenshot in self.screenshot_names:
|
|
|
|
|
screenshot_path = os.path.join(screenshot_directory, screenshot)
|
|
|
|
|
self.test_screenshots.append(screenshot_path)
|
|
|
|
|
file_system.delete(self.test_screenshots, True, True)
|
|
|
|
|
extra_cmdline_args = ["-rhi=vulkan"]
|
|
|
|
|
|
|
|
|
|
# Custom setup/teardown to remove old screenshots and establish paths to golden images
|
|
|
|
|
def setup(self, request, workspace, editor, editor_test_results, launcher_platform):
|
|
|
|
|
self.screenshot_directory = os.path.join(workspace.paths.project(), DEFAULT_SUBFOLDER_PATH)
|
|
|
|
|
self.screenshot_names = [
|
|
|
|
|
"AreaLight_1.ppm",
|
|
|
|
|
"AreaLight_2.ppm",
|
|
|
|
|
"AreaLight_3.ppm",
|
|
|
|
|
"AreaLight_4.ppm",
|
|
|
|
|
"AreaLight_5.ppm",
|
|
|
|
|
]
|
|
|
|
|
self.test_screenshots, self.golden_images = TestAutomation.screenshot_setup(
|
|
|
|
|
screenshot_directory=self.screenshot_directory,
|
|
|
|
|
screenshot_names=self.screenshot_names)
|
|
|
|
|
|
|
|
|
|
def wrap_run(self, request, workspace, editor, editor_test_results, launcher_platform):
|
|
|
|
|
yield
|
|
|
|
|
assert compare_screenshot_to_golden_image(self.screenshot_directory,
|
|
|
|
|
self.test_screenshots,
|
|
|
|
|
self.golden_images,
|
|
|
|
|
similarity_threshold=0.96) is True
|
|
|
|
|
|
|
|
|
|
golden_images = []
|
|
|
|
|
for golden_image in screenshot_names:
|
|
|
|
|
golden_image_path = os.path.join(golden_images_directory(), golden_image)
|
|
|
|
|
golden_images.append(golden_image_path)
|
|
|
|
|
@pytest.mark.test_case_id("C34525110")
|
|
|
|
|
class AtomGPU_LightComponent_SpotLightScreenshotsMatchGoldenImages_DX12(EditorSingleTest):
|
|
|
|
|
from Atom.tests import hydra_AtomGPU_SpotLightScreenshotTest as test_module
|
|
|
|
|
|
|
|
|
|
extra_cmdline_args = ["-rhi=dx12"]
|
|
|
|
|
|
|
|
|
|
# Custom setup/teardown to remove old screenshots and establish paths to golden images
|
|
|
|
|
def setup(self, request, workspace, editor, editor_test_results, launcher_platform):
|
|
|
|
|
self.screenshot_directory = os.path.join(workspace.paths.project(), DEFAULT_SUBFOLDER_PATH)
|
|
|
|
|
self.screenshot_names = [
|
|
|
|
|
"SpotLight_1.ppm",
|
|
|
|
|
"SpotLight_2.ppm",
|
|
|
|
|
"SpotLight_3.ppm",
|
|
|
|
|
"SpotLight_4.ppm",
|
|
|
|
|
"SpotLight_5.ppm",
|
|
|
|
|
"SpotLight_6.ppm",
|
|
|
|
|
]
|
|
|
|
|
self.test_screenshots, self.golden_images = TestAutomation.screenshot_setup(
|
|
|
|
|
screenshot_directory=self.screenshot_directory,
|
|
|
|
|
screenshot_names=self.screenshot_names)
|
|
|
|
|
|
|
|
|
|
def wrap_run(self, request, workspace, editor, editor_test_results, launcher_platform):
|
|
|
|
|
yield
|
|
|
|
|
assert compare_screenshot_to_golden_image(self.screenshot_directory,
|
|
|
|
|
self.test_screenshots,
|
|
|
|
|
self.golden_images,
|
|
|
|
|
similarity_threshold=0.96) is True
|
|
|
|
|
|
|
|
|
|
@pytest.mark.test_case_id("C34525110")
|
|
|
|
|
class AtomGPU_LightComponent_SpotLightScreenshotsMatchGoldenImages_Vulkan(EditorSingleTest):
|
|
|
|
|
from Atom.tests import hydra_AtomGPU_SpotLightScreenshotTest as test_module
|
|
|
|
|
|
|
|
|
|
assert compare_screenshot_to_golden_image(screenshot_directory, test_screenshots, golden_images, 0.99) is True
|
|
|
|
|
extra_cmdline_args = ["-rhi=vulkan"]
|
|
|
|
|
|
|
|
|
|
# Custom setup/teardown to remove old screenshots and establish paths to golden images
|
|
|
|
|
def setup(self, request, workspace, editor, editor_test_results, launcher_platform):
|
|
|
|
|
self.screenshot_directory = os.path.join(workspace.paths.project(), DEFAULT_SUBFOLDER_PATH)
|
|
|
|
|
self.screenshot_names = [
|
|
|
|
|
"SpotLight_1.ppm",
|
|
|
|
|
"SpotLight_2.ppm",
|
|
|
|
|
"SpotLight_3.ppm",
|
|
|
|
|
"SpotLight_4.ppm",
|
|
|
|
|
"SpotLight_5.ppm",
|
|
|
|
|
"SpotLight_6.ppm",
|
|
|
|
|
]
|
|
|
|
|
self.test_screenshots, self.golden_images = TestAutomation.screenshot_setup(
|
|
|
|
|
screenshot_directory=self.screenshot_directory,
|
|
|
|
|
screenshot_names=self.screenshot_names)
|
|
|
|
|
|
|
|
|
|
def wrap_run(self, request, workspace, editor, editor_test_results, launcher_platform):
|
|
|
|
|
yield
|
|
|
|
|
assert compare_screenshot_to_golden_image(self.screenshot_directory,
|
|
|
|
|
self.test_screenshots,
|
|
|
|
|
self.golden_images,
|
|
|
|
|
similarity_threshold=0.96) is True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize('rhi', ['dx12', 'vulkan'])
|
|
|
|
|
|