From 34e4784c43e4b3f1d3ef6341e5d79cd7c437772b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chrobot?= Date: Tue, 4 Aug 2026 14:10:46 +0200 Subject: [PATCH 01/11] Re-enabled ps5 and webgl --- .yamato/console-standalone-test.yml | 17 +++++---- .yamato/project.metafile | 56 ++++++++++++++--------------- 2 files changed, 34 insertions(+), 39 deletions(-) diff --git a/.yamato/console-standalone-test.yml b/.yamato/console-standalone-test.yml index dba4a796a1..6af97cdf65 100644 --- a/.yamato/console-standalone-test.yml +++ b/.yamato/console-standalone-test.yml @@ -31,7 +31,6 @@ # Each console requires specific SDK paths and tools # QUALITY THOUGHTS-------------------------------------------------------------------- - # TODO: consider adding all projects that have tests # To see where this job is included (in trigger job definitions) look into _triggers.yml file @@ -55,12 +54,12 @@ console_standalone_build_{{ project.name }}_{{ platform.name }}_{{ editor }}: variables: # PS4 related SCE_ORBIS_SDK_DIR: 'C:\Users\bokken\SCE\ps4_sdk_12_00' -# PS5 related --> THIS WAS DISABLED IN PROJECT.METAFILE. SEE MTT-12118 - SCE_PROSPERO_SDK_DIR: 'C:\Program Files (x86)\SCE\Prospero SDKs\9.000' - SHADER_COMPILER_PATH: '${SCE_PROSPERO_SDK_DIR}\target\bins' +# PS5 related --> playstation/ps5-buildandexecute image ships SDK 13.000. + SCE_PROSPERO_SDK_DIR: 'C:\Program Files (x86)\SCE\Prospero SDKs\13.000' + SHADER_COMPILER_PATH: '${SCE_PROSPERO_SDK_DIR}\host_tools\bin' SCE_ROOT_DIR: 'C:\Program Files (x86)\SCE' # Switch related - NINTENDO_SDK_ROOT: 'C:\Nintendo\nx_sdk-18_3_0\NintendoSDK' + NINTENDO_SDK_ROOT: 'C:\Nintendo\nx_sdk-22_2_0\NintendoSDK' UNITY_NINTENDOSDK_CLI_TOOLS: '${NINTENDO_SDK_ROOT}\Tools\CommandLineTools' artifacts: players: @@ -94,12 +93,12 @@ console_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}: variables: # PS4 related SCE_ORBIS_SDK_DIR: 'C:\Users\bokken\SCE\ps4_sdk_12_00' -# PS5 related --> THIS WAS DISABLED IN PROJECT.METAFILE. SEE MTT-12118 - SCE_PROSPERO_SDK_DIR: 'C:\Program Files (x86)\SCE\Prospero SDKs\9.000' - SHADER_COMPILER_PATH: '${SCE_PROSPERO_SDK_DIR}\target\bins' +# PS5 related --> playstation/ps5-buildandexecute image ships SDK 13.000. + SCE_PROSPERO_SDK_DIR: 'C:\Program Files (x86)\SCE\Prospero SDKs\13.000' + SHADER_COMPILER_PATH: '${SCE_PROSPERO_SDK_DIR}\host_tools\bin' SCE_ROOT_DIR: 'C:\Program Files (x86)\SCE' # Switch related - NINTENDO_SDK_ROOT: 'C:\Nintendo\nx_sdk-18_3_0\NintendoSDK' + NINTENDO_SDK_ROOT: 'C:\Nintendo\nx_sdk-22_2_0\NintendoSDK' UNITY_NINTENDOSDK_CLI_TOOLS: '${NINTENDO_SDK_ROOT}\Tools\CommandLineTools' artifacts: logs: diff --git a/.yamato/project.metafile b/.yamato/project.metafile index 13443d6451..3bb9aad111 100644 --- a/.yamato/project.metafile +++ b/.yamato/project.metafile @@ -111,23 +111,19 @@ test_platforms: flavor: b1.large larger_flavor: b1.xlarge standalone: PS4 - # - name: ps5 --> SEE MTT-12118 - # type: Unity::VM - # image: package-ci/win10-ps5:v4 - # flavor: b1.large - # larger_flavor: b1.xlarge - # standalone: PS5 - # - name: switch --> TEMPORARILY DISABLED. SEE MTT-12118 - # The NintendoSDK on the win10-switch:v4 Bokken image is incomplete for the SDK - # version the newer editor Playback Engines require: 18_3_0 is missing the - # nintendo-switch-support lib the new toolchain links against, and 21_4_3 is missing the - # Tools\Graphics\NvnTools (GraphicsConverter) libraries needed to package textures. - # Neither is fixable from .yamato; re-enable once Package CI ships a complete SDK on the image. - # type: Unity::VM - # image: package-ci/win10-switch:v4 - # flavor: b1.large - # larger_flavor: b1.xlarge - # standalone: Switch + # ps5 uses the PlayStation team image (SDK 13.000); package-ci/win10-ps5:v4 only ships SDK 9.00. + - name: ps5 + type: Unity::VM + image: playstation/ps5-buildandexecute:v10.8.7 + flavor: b1.large + larger_flavor: b1.xlarge + standalone: PS5 + - name: switch + type: Unity::VM + image: package-ci/win10-switch:v4 + flavor: b1.large + larger_flavor: b1.xlarge + standalone: Switch - name: GameCoreXboxOne type: Unity::VM image: package-ci/win10-xbox:v4 @@ -147,19 +143,19 @@ test_platforms: flavor: b1.large larger_flavor: b1.xlarge standalone: PS4 - #- name: ps5 --> SEE MTT-12118 - # type: Unity::console::ps5 - # image: package-ci/win10-ps5:v4 - # flavor: b1.large - # larger_flavor: b1.xlarge - # standalone: PS5 - # - name: switch --> TEMPORARILY DISABLED. SEE MTT-12118 (incomplete NintendoSDK on win10-switch:v4 image) - # type: Unity::console::switch - # image: package-ci/win10-switch:v4 - # flavor: b1.large - # larger_flavor: b1.xlarge - # standalone: Switch - # base: win + - name: ps5 + type: Unity::console::ps5 + image: playstation/ps5-buildandexecute:v10.8.7 + flavor: b1.large + larger_flavor: b1.xlarge + standalone: PS5 + - name: switch + type: Unity::console::switch + image: package-ci/win10-switch:v4 + flavor: b1.large + larger_flavor: b1.xlarge + standalone: Switch + base: win - name: GameCoreXboxOne type: Unity::console::xbox image: package-ci/win10-xbox:v4 From 8feb30ec21ea8f4349923fba3e01c3ae8c9f0351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chrobot?= Date: Tue, 4 Aug 2026 15:23:41 +0200 Subject: [PATCH 02/11] ci: Add WebGL PlayMode test job (MTT-15569) Split the WebGL CI into a build phase and a run phase. webgl-build.yml now exposes the built player as a dedicated 'players' artifact, and a new webgl-test.yml run job consumes it and executes the PlayMode tests inside Firefox on a GPU-backed Ubuntu agent (Unity::VM::GPU, rtx2080). The Firefox browser flags are passed explicitly so UTR does not attempt to download the browser from Stevedore. The run job is wired into the Nightly and Weekly (QV) triggers only, not into PR triggers, since WebGL failures are infrequent and the build is slow. Runtime RuntimePlatform.WebGLPlayer exclusions are intentionally deferred to be added reactively after the first real CI run. --- .yamato/README.md | 2 +- .yamato/_run-all.yml | 42 ++++++++++++-- .yamato/_triggers.yml | 7 ++- .yamato/project.metafile | 9 +++ .yamato/{webgl-build.yml => webgl-test.yml} | 63 ++++++++++++++++----- 5 files changed, 103 insertions(+), 20 deletions(-) rename .yamato/{webgl-build.yml => webgl-test.yml} (50%) diff --git a/.yamato/README.md b/.yamato/README.md index 7db6767555..f03d144fd5 100644 --- a/.yamato/README.md +++ b/.yamato/README.md @@ -21,7 +21,7 @@ CI related files are present inside .yamato/ folder and we can distinguish speci - `.yamato/project-standards.yml` responsible for running standards check on a package. - `.yamato/code-coverage.yml` responsible for running code coverage analysis. - `.yamato/performance-tests.yml` responsible for running performance tests. -- `.yamato/webgl-build.yml` responsible for making a build for webgl platform. +- `.yamato/webgl-test.yml` responsible for building a webgl player and running its PlayMode tests in a browser. ### Standalone Tests - `.yamato/desktop-standalone-tests.yml` responsible for running tests on standalone desktops. diff --git a/.yamato/_run-all.yml b/.yamato/_run-all.yml index 24daf40665..e28dfb4767 100644 --- a/.yamato/_run-all.yml +++ b/.yamato/_run-all.yml @@ -129,7 +129,7 @@ run_all_webgl_builds: {% for project in projects.default -%} {% for platform in test_platforms.desktop -%} {% for editor in validation_editors.all -%} - - .yamato/webgl-build.yml#webgl_build_{{ project.name }}_{{ platform.name }}_{{ editor }} + - .yamato/webgl-test.yml#webgl_build_{{ project.name }}_{{ platform.name }}_{{ editor }} {% endfor -%} {% endfor -%} {% endfor -%} @@ -141,7 +141,7 @@ run_all_webgl_builds_trunk: dependencies: {% for project in projects.default -%} {% for platform in test_platforms.desktop -%} - - .yamato/webgl-build.yml#webgl_build_{{ project.name }}_{{ platform.name }}_trunk + - .yamato/webgl-test.yml#webgl_build_{{ project.name }}_{{ platform.name }}_trunk {% endfor -%} {% endfor -%} @@ -152,7 +152,7 @@ run_all_webgl_builds_pinnedTrunk: dependencies: {% for project in projects.default -%} {% for platform in test_platforms.desktop -%} - - .yamato/webgl-build.yml#webgl_build_{{ project.name }}_{{ platform.name }}_{{ pinnedTrunk }} + - .yamato/webgl-test.yml#webgl_build_{{ project.name }}_{{ platform.name }}_{{ pinnedTrunk }} {% endfor -%} {% endfor -%} @@ -162,7 +162,41 @@ run_all_webgl_builds_6000: dependencies: {% for project in projects.default -%} {% for platform in test_platforms.desktop -%} - - .yamato/webgl-build.yml#webgl_build_{{ project.name }}_{{ platform.name }}_6000.0 + - .yamato/webgl-test.yml#webgl_build_{{ project.name }}_{{ platform.name }}_6000.0 +{% endfor -%} +{% endfor -%} + + +# Runs all WebGL PlayMode tests (runs the produced player in a browser on a GPU agent) +run_all_webgl_tests: + name: Run All WebGl Tests + dependencies: +{% for project in projects.default -%} +{% for platform in test_platforms.webgl_test -%} +{% for editor in validation_editors.all -%} + - .yamato/webgl-test.yml#webgl_test_{{ project.name }}_{{ platform.name }}_{{ editor }} +{% endfor -%} +{% endfor -%} +{% endfor -%} + + +# Runs all WebGL PlayMode tests on trunk editor +run_all_webgl_tests_trunk: + name: Run All WebGl Tests [Trunk only] + dependencies: +{% for project in projects.default -%} +{% for platform in test_platforms.webgl_test -%} + - .yamato/webgl-test.yml#webgl_test_{{ project.name }}_{{ platform.name }}_trunk +{% endfor -%} +{% endfor -%} + +# Runs all WebGL PlayMode tests on 6000.0 editor +run_all_webgl_tests_6000: + name: Run All WebGl Tests [6000.0] + dependencies: +{% for project in projects.default -%} +{% for platform in test_platforms.webgl_test -%} + - .yamato/webgl-test.yml#webgl_test_{{ project.name }}_{{ platform.name }}_6000.0 {% endfor -%} {% endfor -%} diff --git a/.yamato/_triggers.yml b/.yamato/_triggers.yml index d70ba68fe9..10c332896b 100644 --- a/.yamato/_triggers.yml +++ b/.yamato/_triggers.yml @@ -151,6 +151,9 @@ develop_nightly: # Build player for webgl platform on trunk and 6000.0 editors - .yamato/_run-all.yml#run_all_webgl_builds_trunk - .yamato/_run-all.yml#run_all_webgl_builds_6000 + # Run WebGL PlayMode tests (browser on GPU agent) on trunk and 6000.0 editors + - .yamato/_run-all.yml#run_all_webgl_tests_trunk + - .yamato/_run-all.yml#run_all_webgl_tests_6000 # Run Runtime tests against cmb service on trunk and 6000.0 editors - .yamato/_run-all.yml#run_all_project_tests_cmb_service_trunk - .yamato/_run-all.yml#run_all_project_tests_cmb_service_6000 @@ -159,7 +162,7 @@ develop_nightly: - .yamato/project-updated-dependencies-test.yml#updated-dependencies_testproject_NGO_win_6000.0 # Run API validation to early-detect all new APIs that would force us to release new minor version of the package. Note that for this to work the package version in package.json must correspond to "actual package state" which means that it should be higher than last released version - .yamato/vetting-test.yml#vetting_test - # Run code coverage test (nightly uses actual trunk) + # Run code coverage test (nightly uses actual trunk) - .yamato/code-coverage.yml#code_coverage_project_test_testproject_ubuntu_trunk @@ -189,5 +192,7 @@ develop_weekly_trunk: - .yamato/_run-all.yml#run_all_project_tests_console_standalone # Build player for webgl platform on trunk - .yamato/_run-all.yml#run_all_webgl_builds + # Run WebGL PlayMode tests (browser on GPU agent) + - .yamato/_run-all.yml#run_all_webgl_tests # Run Runtime tests against CMB service - .yamato/_run-all.yml#run_all_project_tests_cmb_service diff --git a/.yamato/project.metafile b/.yamato/project.metafile index 3bb9aad111..c07ee08cfc 100644 --- a/.yamato/project.metafile +++ b/.yamato/project.metafile @@ -168,6 +168,15 @@ test_platforms: flavor: b1.large larger_flavor: b1.xlarge standalone: GameCoreScarlett + # WebGL runtime tests run the built player inside a browser, which requires a real GPU and display. + # We therefore run them on a GPU-backed Ubuntu VM (rtx2080). Firefox is preinstalled on the package-ci Ubuntu image. + webgl_test: + - name: ubuntu + type: Unity::VM::GPU + image: package-ci/ubuntu-22.04:v4.87.0 + flavor: b1.large + model: rtx2080 + standalone: WebGL # EDITOR CONFIGURATIONS------------------------------------------------------------------------------- # Editors to be used for testing. NGOv2.X official support started from 6000.0 editor diff --git a/.yamato/webgl-build.yml b/.yamato/webgl-test.yml similarity index 50% rename from .yamato/webgl-build.yml rename to .yamato/webgl-test.yml index 1f028ce10f..567f22448e 100644 --- a/.yamato/webgl-build.yml +++ b/.yamato/webgl-test.yml @@ -2,28 +2,36 @@ --- # DESCRIPTION-------------------------------------------------------------------------- - # This job is responsible for validating a successful building of a player on WebGl standalone platform. - # This job WILL NOT execute any tests, we only validate the building process. - # This is because WebGL runs in browser and for tests to be executed we would need to consider having a web server, browser automation and overall complex test setup which currently we don't have. + # This job is responsible for WebGL platform test validation. + # It is split into a build phase (produces the WebGL player) and a run phase (executes the produced player inside a browser to run PlayMode tests). # CONFIGURATION STRUCTURE-------------------------------------------------------------- - # Jobs configurations are generated using nested loops through: - # 1. For the default project (project is used only as a context for the build). - # 2. For all desktop platforms (Windows, Ubuntu, macOS) - # 3. For all supported Unity Editor versions (For NGOv2.X it means 6000+) + # Jobs are generated using nested loops (separate build phase and run phase). Worth noting that run phase uses the build as dependency: + # 1. Build phase runs for all desktop platforms (Windows, Ubuntu, macOS); run phase runs on a single GPU-backed Ubuntu agent. + # 2. For all supported Unity Editor versions (For NGOv2.X it means 6000+). + # 3. For the default project. # TECHNICAL CONSIDERATIONS---------------------------------------------------------------- - # WebGL requires IL2CPP scripting backend (Mono is not supported) - # We are not using ARM64 architectures since we only perform a build action. x64 architectures are preferred for build phase (in order to optimize available resource usage) - # We only perform build validation (no runtime testing) + # WebGL requires IL2CPP scripting backend (Mono is not supported). + # Build phase: + # We are not using ARM64 architectures since we only perform a build action. x64 architectures are preferred for build phase (in order to optimize available resource usage). + # Run phase: + # Running the player means launching a real browser, which needs a GPU and a display, therefore we run on a GPU-backed Ubuntu agent (Unity::VM::GPU, rtx2080). See webgl_test in project.metafile. + # We do NOT pass -nographics here (unlike the build job) because the browser needs graphics to run. + # Firefox is preinstalled on the package-ci Ubuntu image (/usr/bin/firefox). + # Passing --target-browser and --target-browser-executable explicitly is mandatory: without them UTR tries to download Firefox from Stevedore via perl, which fails on the CI agent. + # --player-connection-ip=${BOKKEN_HOST_IP} is required so the browser-hosted player can connect back to the test runner. # QUALITY CONSIDERATIONS-------------------------------------------------------------------- - # In the future we could try to implement an infrastructure to run test in webgl context but this could be quite complicated and would need to be evaluated if it's worth it - # To see where this job is included (in trigger job definitions) look into _triggers.yml file - # WebGL jobs were timing up more often in develop-2.0.0 branch (especially on trunk) so we increased the timeout from 1800 to 3600. We should investigate why it times more often in develop-2.0.0/ubuntu/trunk + # WebGL failures are infrequent and the build is slow, so this job is placed on Nightly/Weekly (QV) only, not on PR triggers. + # Runtime platform exclusions (RuntimePlatform.WebGLPlayer) are intentionally not pre-added; they are introduced reactively after the first real CI run. + # To see where this job is included (in trigger job definitions) look into _triggers.yml file. + # WebGL jobs were timing up more often in develop-2.0.0 branch (especially on trunk) so we increased the timeout from 1800 to 3600. We should investigate why it times more often in develop-2.0.0/ubuntu/trunk. #-------------------------------------------------------------------------------------- + +# BUILD PHASE CONFIGURATION------------------------------------------------------------------------------------ {% for project in projects.default -%} {% for platform in test_platforms.desktop -%} {% for editor in validation_editors.all -%} @@ -47,10 +55,37 @@ webgl_build_{{ project.name }}_{{ platform.name }}_{{ editor }}: # This will perform only building phase (--build-only) with a timeout set by the test_timeout variable in the project metafile. - UnifiedTestRunner --suite=playmode --platform=WebGL --scripting-backend=il2cpp --testproject={{ project.path }} --editor-location=.Editor --artifacts_path=artifacts --player-save-path=build/players --extra-editor-arg=-batchmode --extra-editor-arg=-nographics --reruncount=1 --clean-library-on-rerun --build-only --timeout={{ test_timeout }} artifacts: + players: + paths: + - "build/players/**/*" logs: paths: - "artifacts/**/*" - - "build/players/**/*" +{% endfor -%} +{% endfor -%} +{% endfor -%} + + +# RUN PHASE CONFIGURATION------------------------------------------------------------------------------------ +{% for project in projects.default -%} +{% for platform in test_platforms.webgl_test -%} +{% for editor in validation_editors.all -%} +webgl_test_{{ project.name }}_{{ platform.name }}_{{ editor }}: + name: WebGl Test - {{ project.name }} [{{ platform.name }}, {{ editor }}, il2cpp] + agent: + type: {{ platform.type }} + image: {{ platform.image }} + flavor: {{ platform.flavor }} + model: {{ platform.model }} # GPU model required to run a browser (more information in project.metafile) + commands: + - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor -c webgl -c il2cpp # Downloading the editor with additional webgl and il2cpp components + - UnifiedTestRunner --suite=playmode --platform=WebGL --scripting-backend=il2cpp --testproject={{ project.path }} --editor-location=.Editor --artifacts_path=artifacts --player-load-path=build/players --target-browser=Firefox --target-browser-executable=/usr/bin/firefox --player-connection-ip=${BOKKEN_HOST_IP} --reruncount=1 --clean-library-on-rerun --timeout={{ test_timeout }} + artifacts: + logs: + paths: + - "artifacts/**/*" + dependencies: + - .yamato/webgl-test.yml#webgl_build_{{ project.name }}_ubuntu_{{ editor }} {% endfor -%} {% endfor -%} {% endfor -%} From 1edbd8492b5bcf4076acc80e3aa18bd99483a43e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chrobot?= Date: Tue, 4 Aug 2026 16:29:15 +0200 Subject: [PATCH 03/11] corrected images --- .yamato/console-standalone-test.yml | 12 ++++++------ .yamato/project.metafile | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.yamato/console-standalone-test.yml b/.yamato/console-standalone-test.yml index 6af97cdf65..1bfc6af893 100644 --- a/.yamato/console-standalone-test.yml +++ b/.yamato/console-standalone-test.yml @@ -54,12 +54,12 @@ console_standalone_build_{{ project.name }}_{{ platform.name }}_{{ editor }}: variables: # PS4 related SCE_ORBIS_SDK_DIR: 'C:\Users\bokken\SCE\ps4_sdk_12_00' -# PS5 related --> playstation/ps5-buildandexecute image ships SDK 13.000. +# PS5 related --> win10-ps5:v4 ships SDK 13.000 but defaults SCE_PROSPERO_SDK_DIR to an unsupported version, so set it explicitly. SCE_PROSPERO_SDK_DIR: 'C:\Program Files (x86)\SCE\Prospero SDKs\13.000' SHADER_COMPILER_PATH: '${SCE_PROSPERO_SDK_DIR}\host_tools\bin' SCE_ROOT_DIR: 'C:\Program Files (x86)\SCE' -# Switch related - NINTENDO_SDK_ROOT: 'C:\Nintendo\nx_sdk-22_2_0\NintendoSDK' +# Switch related --> win10-switch:v4 unsets NINTENDO_SDK_ROOT, so set it explicitly to the installed SDK 22.2.0. + NINTENDO_SDK_ROOT: 'C:\Nintendo\nintendosdk-en-22_2_0\NintendoSDK' UNITY_NINTENDOSDK_CLI_TOOLS: '${NINTENDO_SDK_ROOT}\Tools\CommandLineTools' artifacts: players: @@ -93,12 +93,12 @@ console_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}: variables: # PS4 related SCE_ORBIS_SDK_DIR: 'C:\Users\bokken\SCE\ps4_sdk_12_00' -# PS5 related --> playstation/ps5-buildandexecute image ships SDK 13.000. +# PS5 related --> win10-ps5:v4 ships SDK 13.000 but defaults SCE_PROSPERO_SDK_DIR to an unsupported version, so set it explicitly. SCE_PROSPERO_SDK_DIR: 'C:\Program Files (x86)\SCE\Prospero SDKs\13.000' SHADER_COMPILER_PATH: '${SCE_PROSPERO_SDK_DIR}\host_tools\bin' SCE_ROOT_DIR: 'C:\Program Files (x86)\SCE' -# Switch related - NINTENDO_SDK_ROOT: 'C:\Nintendo\nx_sdk-22_2_0\NintendoSDK' +# Switch related --> win10-switch:v4 unsets NINTENDO_SDK_ROOT, so set it explicitly to the installed SDK 22.2.0. + NINTENDO_SDK_ROOT: 'C:\Nintendo\nintendosdk-en-22_2_0\NintendoSDK' UNITY_NINTENDOSDK_CLI_TOOLS: '${NINTENDO_SDK_ROOT}\Tools\CommandLineTools' artifacts: logs: diff --git a/.yamato/project.metafile b/.yamato/project.metafile index c07ee08cfc..a1ff52dbad 100644 --- a/.yamato/project.metafile +++ b/.yamato/project.metafile @@ -111,10 +111,10 @@ test_platforms: flavor: b1.large larger_flavor: b1.xlarge standalone: PS4 - # ps5 uses the PlayStation team image (SDK 13.000); package-ci/win10-ps5:v4 only ships SDK 9.00. + # ps5: win10-ps5:v4 defaults SCE_PROSPERO_SDK_DIR to an unsupported SDK, so it is overridden to 13.000 in console-standalone-test.yml. - name: ps5 type: Unity::VM - image: playstation/ps5-buildandexecute:v10.8.7 + image: package-ci/win10-ps5:v4 flavor: b1.large larger_flavor: b1.xlarge standalone: PS5 @@ -145,7 +145,7 @@ test_platforms: standalone: PS4 - name: ps5 type: Unity::console::ps5 - image: playstation/ps5-buildandexecute:v10.8.7 + image: package-ci/win10-ps5:v4 flavor: b1.large larger_flavor: b1.xlarge standalone: PS5 From 44ca1aded644f5003658e0fb648e6280926bc043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chrobot?= Date: Wed, 5 Aug 2026 10:59:17 +0200 Subject: [PATCH 04/11] disabled webgl test --- testproject/Assets/Tests/Runtime/AddressablesTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/testproject/Assets/Tests/Runtime/AddressablesTests.cs b/testproject/Assets/Tests/Runtime/AddressablesTests.cs index 7dd8aff688..31ca6055d7 100644 --- a/testproject/Assets/Tests/Runtime/AddressablesTests.cs +++ b/testproject/Assets/Tests/Runtime/AddressablesTests.cs @@ -17,6 +17,7 @@ namespace TestProject.RuntimeTests [TestFixture(HostOrServer.DAHost)] [TestFixture(HostOrServer.Host)] [TestFixture(HostOrServer.Server)] + [UnityPlatform(exclude = new[] { RuntimePlatform.WebGLPlayer })] // Addressables content is served over HTTP, which the WebGL CI player cannot reach - MTT-15569 public class AddressablesTests : NetcodeIntegrationTest { protected override int NumberOfClients => 2; From 9ee92daf69030dd09beee41f9242940e20e63087 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chrobot?= Date: Wed, 5 Aug 2026 11:11:51 +0200 Subject: [PATCH 05/11] adjustments --- .yamato/console-standalone-test.yml | 2 +- .../Tests/Runtime/TransformInterpolationTests.cs | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.yamato/console-standalone-test.yml b/.yamato/console-standalone-test.yml index 1bfc6af893..9d9492f580 100644 --- a/.yamato/console-standalone-test.yml +++ b/.yamato/console-standalone-test.yml @@ -50,7 +50,7 @@ console_standalone_build_{{ project.name }}_{{ platform.name }}_{{ editor }}: {% endif %} commands: - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor -c il2cpp -c {{ platform.name }} - - UnifiedTestRunner --testproject={{ project.path }} --architecture={% if platform.name == "switch" %}arm64{% else %}x64{% endif %} --scripting-backend=il2cpp --suite=playmode --platform={{ platform.standalone }} --editor-location=.Editor --artifacts-path=artifacts --player-save-path=build/players --testfilter="Unity.Netcode.RuntimeTests.*" --extra-editor-arg=-batchmode --extra-editor-arg=-nographics --reruncount=1 --clean-library-on-rerun --build-only --timeout={{ test_timeout}} + - UnifiedTestRunner --testproject={{ project.path }} --architecture={% if platform.name == "switch" %}arm64{% else %}x64{% endif %} --scripting-backend=il2cpp --suite=playmode --platform={{ platform.standalone }} --editor-location=.Editor --artifacts-path=artifacts --player-save-path=build/players --testfilter="Unity.Netcode.RuntimeTests.*" --extra-editor-arg=-batchmode --extra-editor-arg=-nographics{% if platform.name == "switch" %} --extra-editor-arg=-overrideTextureCompression --extra-editor-arg=ForceUncompressed{% endif %} --reruncount=1 --clean-library-on-rerun --build-only --timeout={{ test_timeout}} variables: # PS4 related SCE_ORBIS_SDK_DIR: 'C:\Users\bokken\SCE\ps4_sdk_12_00' diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/TransformInterpolationTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/TransformInterpolationTests.cs index 4e29237a82..20bcefb62c 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/TransformInterpolationTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/TransformInterpolationTests.cs @@ -11,11 +11,15 @@ namespace Unity.Netcode.RuntimeTests internal class TransformInterpolationObject : NetworkTransform { public static bool TestComplete = false; - // Set the minimum threshold which we will use as our margin of error -#if UNITY_EDITOR + // Set the minimum threshold which we will use as our margin of error. + // Consoles interpolate with lower floating point precision, so they need additional room for error. + // The platform define is set both in a console player and in the editor when it targets a console, + // which covers console tests whether they run on-device or through the editor playmode harness. +#if UNITY_PS4 || UNITY_PS5 || UNITY_SWITCH || UNITY_GAMECORE + public const float MinThreshold = 0.009999f; +#elif UNITY_EDITOR public const float MinThreshold = 0.00555555f; #else - // Add additional room for error on console tests public const float MinThreshold = 0.009999f; #endif From f5a2ef30254d7de8150ee73ff7b852be799d6d3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chrobot?= Date: Wed, 12 Aug 2026 16:21:14 +0200 Subject: [PATCH 06/11] Removed WebGL changes --- .yamato/README.md | 2 +- .yamato/_run-all.yml | 42 ++----------- .yamato/_triggers.yml | 7 +-- .yamato/project.metafile | 9 --- .yamato/{webgl-test.yml => webgl-build.yml} | 63 +++++-------------- .../Assets/Tests/Runtime/AddressablesTests.cs | 1 - 6 files changed, 20 insertions(+), 104 deletions(-) rename .yamato/{webgl-test.yml => webgl-build.yml} (50%) diff --git a/.yamato/README.md b/.yamato/README.md index f03d144fd5..7db6767555 100644 --- a/.yamato/README.md +++ b/.yamato/README.md @@ -21,7 +21,7 @@ CI related files are present inside .yamato/ folder and we can distinguish speci - `.yamato/project-standards.yml` responsible for running standards check on a package. - `.yamato/code-coverage.yml` responsible for running code coverage analysis. - `.yamato/performance-tests.yml` responsible for running performance tests. -- `.yamato/webgl-test.yml` responsible for building a webgl player and running its PlayMode tests in a browser. +- `.yamato/webgl-build.yml` responsible for making a build for webgl platform. ### Standalone Tests - `.yamato/desktop-standalone-tests.yml` responsible for running tests on standalone desktops. diff --git a/.yamato/_run-all.yml b/.yamato/_run-all.yml index 765aea1c53..5f9e320670 100644 --- a/.yamato/_run-all.yml +++ b/.yamato/_run-all.yml @@ -129,7 +129,7 @@ run_all_webgl_builds: {% for project in projects.default -%} {% for platform in test_platforms.desktop -%} {% for editor in validation_editors.all -%} - - .yamato/webgl-test.yml#webgl_build_{{ project.name }}_{{ platform.name }}_{{ editor }} + - .yamato/webgl-build.yml#webgl_build_{{ project.name }}_{{ platform.name }}_{{ editor }} {% endfor -%} {% endfor -%} {% endfor -%} @@ -141,7 +141,7 @@ run_all_webgl_builds_trunk: dependencies: {% for project in projects.default -%} {% for platform in test_platforms.desktop -%} - - .yamato/webgl-test.yml#webgl_build_{{ project.name }}_{{ platform.name }}_trunk + - .yamato/webgl-build.yml#webgl_build_{{ project.name }}_{{ platform.name }}_trunk {% endfor -%} {% endfor -%} @@ -152,7 +152,7 @@ run_all_webgl_builds_pinnedTrunk: dependencies: {% for project in projects.default -%} {% for platform in test_platforms.desktop -%} - - .yamato/webgl-test.yml#webgl_build_{{ project.name }}_{{ platform.name }}_{{ pinnedTrunk }} + - .yamato/webgl-build.yml#webgl_build_{{ project.name }}_{{ platform.name }}_{{ pinnedTrunk }} {% endfor -%} {% endfor -%} @@ -162,41 +162,7 @@ run_all_webgl_builds_6000: dependencies: {% for project in projects.default -%} {% for platform in test_platforms.desktop -%} - - .yamato/webgl-test.yml#webgl_build_{{ project.name }}_{{ platform.name }}_6000.0 -{% endfor -%} -{% endfor -%} - - -# Runs all WebGL PlayMode tests (runs the produced player in a browser on a GPU agent) -run_all_webgl_tests: - name: Run All WebGl Tests - dependencies: -{% for project in projects.default -%} -{% for platform in test_platforms.webgl_test -%} -{% for editor in validation_editors.all -%} - - .yamato/webgl-test.yml#webgl_test_{{ project.name }}_{{ platform.name }}_{{ editor }} -{% endfor -%} -{% endfor -%} -{% endfor -%} - - -# Runs all WebGL PlayMode tests on trunk editor -run_all_webgl_tests_trunk: - name: Run All WebGl Tests [Trunk only] - dependencies: -{% for project in projects.default -%} -{% for platform in test_platforms.webgl_test -%} - - .yamato/webgl-test.yml#webgl_test_{{ project.name }}_{{ platform.name }}_trunk -{% endfor -%} -{% endfor -%} - -# Runs all WebGL PlayMode tests on 6000.0 editor -run_all_webgl_tests_6000: - name: Run All WebGl Tests [6000.0] - dependencies: -{% for project in projects.default -%} -{% for platform in test_platforms.webgl_test -%} - - .yamato/webgl-test.yml#webgl_test_{{ project.name }}_{{ platform.name }}_6000.0 + - .yamato/webgl-build.yml#webgl_build_{{ project.name }}_{{ platform.name }}_6000.0 {% endfor -%} {% endfor -%} diff --git a/.yamato/_triggers.yml b/.yamato/_triggers.yml index 548c45b406..3b292603b4 100644 --- a/.yamato/_triggers.yml +++ b/.yamato/_triggers.yml @@ -151,9 +151,6 @@ develop_nightly: # Build player for webgl platform on trunk and 6000.0 editors - .yamato/_run-all.yml#run_all_webgl_builds_trunk - .yamato/_run-all.yml#run_all_webgl_builds_6000 - # Run WebGL PlayMode tests (browser on GPU agent) on trunk and 6000.0 editors - - .yamato/_run-all.yml#run_all_webgl_tests_trunk - - .yamato/_run-all.yml#run_all_webgl_tests_6000 # Run Runtime tests against cmb service on trunk and 6000.0 editors - .yamato/_run-all.yml#run_all_project_tests_cmb_service_trunk - .yamato/_run-all.yml#run_all_project_tests_cmb_service_6000 @@ -162,7 +159,7 @@ develop_nightly: - .yamato/project-updated-dependencies-test.yml#updated-dependencies_testproject_NGO_win_6000.0 # Run API validation to early-detect all new APIs that would force us to release new minor version of the package. Note that for this to work the package version in package.json must correspond to "actual package state" which means that it should be higher than last released version - .yamato/vetting-test.yml#vetting_test - # Run code coverage test (nightly uses actual trunk) + # Run code coverage test (nightly uses actual trunk) - .yamato/code-coverage.yml#code_coverage_project_test_testproject_ubuntu_trunk @@ -192,7 +189,5 @@ develop_weekly_trunk: - .yamato/_run-all.yml#run_all_project_tests_console_standalone # Build player for webgl platform on trunk - .yamato/_run-all.yml#run_all_webgl_builds - # Run WebGL PlayMode tests (browser on GPU agent) - - .yamato/_run-all.yml#run_all_webgl_tests # Run Runtime tests against CMB service - .yamato/_run-all.yml#run_all_project_tests_cmb_service diff --git a/.yamato/project.metafile b/.yamato/project.metafile index 8924d96265..9598e5ec4c 100644 --- a/.yamato/project.metafile +++ b/.yamato/project.metafile @@ -168,15 +168,6 @@ test_platforms: flavor: b1.large larger_flavor: b1.xlarge standalone: GameCoreScarlett - # WebGL runtime tests run the built player inside a browser, which requires a real GPU and display. - # We therefore run them on a GPU-backed Ubuntu VM (rtx2080). Firefox is preinstalled on the package-ci Ubuntu image. - webgl_test: - - name: ubuntu - type: Unity::VM::GPU - image: package-ci/ubuntu-22.04:v4.87.0 - flavor: b1.large - model: rtx2080 - standalone: WebGL # EDITOR CONFIGURATIONS------------------------------------------------------------------------------- # Editors to be used for testing. NGOv2.X official support started from 6000.0 editor diff --git a/.yamato/webgl-test.yml b/.yamato/webgl-build.yml similarity index 50% rename from .yamato/webgl-test.yml rename to .yamato/webgl-build.yml index 567f22448e..1f028ce10f 100644 --- a/.yamato/webgl-test.yml +++ b/.yamato/webgl-build.yml @@ -2,36 +2,28 @@ --- # DESCRIPTION-------------------------------------------------------------------------- - # This job is responsible for WebGL platform test validation. - # It is split into a build phase (produces the WebGL player) and a run phase (executes the produced player inside a browser to run PlayMode tests). + # This job is responsible for validating a successful building of a player on WebGl standalone platform. + # This job WILL NOT execute any tests, we only validate the building process. + # This is because WebGL runs in browser and for tests to be executed we would need to consider having a web server, browser automation and overall complex test setup which currently we don't have. # CONFIGURATION STRUCTURE-------------------------------------------------------------- - # Jobs are generated using nested loops (separate build phase and run phase). Worth noting that run phase uses the build as dependency: - # 1. Build phase runs for all desktop platforms (Windows, Ubuntu, macOS); run phase runs on a single GPU-backed Ubuntu agent. - # 2. For all supported Unity Editor versions (For NGOv2.X it means 6000+). - # 3. For the default project. + # Jobs configurations are generated using nested loops through: + # 1. For the default project (project is used only as a context for the build). + # 2. For all desktop platforms (Windows, Ubuntu, macOS) + # 3. For all supported Unity Editor versions (For NGOv2.X it means 6000+) # TECHNICAL CONSIDERATIONS---------------------------------------------------------------- - # WebGL requires IL2CPP scripting backend (Mono is not supported). - # Build phase: - # We are not using ARM64 architectures since we only perform a build action. x64 architectures are preferred for build phase (in order to optimize available resource usage). - # Run phase: - # Running the player means launching a real browser, which needs a GPU and a display, therefore we run on a GPU-backed Ubuntu agent (Unity::VM::GPU, rtx2080). See webgl_test in project.metafile. - # We do NOT pass -nographics here (unlike the build job) because the browser needs graphics to run. - # Firefox is preinstalled on the package-ci Ubuntu image (/usr/bin/firefox). - # Passing --target-browser and --target-browser-executable explicitly is mandatory: without them UTR tries to download Firefox from Stevedore via perl, which fails on the CI agent. - # --player-connection-ip=${BOKKEN_HOST_IP} is required so the browser-hosted player can connect back to the test runner. + # WebGL requires IL2CPP scripting backend (Mono is not supported) + # We are not using ARM64 architectures since we only perform a build action. x64 architectures are preferred for build phase (in order to optimize available resource usage) + # We only perform build validation (no runtime testing) # QUALITY CONSIDERATIONS-------------------------------------------------------------------- - # WebGL failures are infrequent and the build is slow, so this job is placed on Nightly/Weekly (QV) only, not on PR triggers. - # Runtime platform exclusions (RuntimePlatform.WebGLPlayer) are intentionally not pre-added; they are introduced reactively after the first real CI run. - # To see where this job is included (in trigger job definitions) look into _triggers.yml file. - # WebGL jobs were timing up more often in develop-2.0.0 branch (especially on trunk) so we increased the timeout from 1800 to 3600. We should investigate why it times more often in develop-2.0.0/ubuntu/trunk. + # In the future we could try to implement an infrastructure to run test in webgl context but this could be quite complicated and would need to be evaluated if it's worth it + # To see where this job is included (in trigger job definitions) look into _triggers.yml file + # WebGL jobs were timing up more often in develop-2.0.0 branch (especially on trunk) so we increased the timeout from 1800 to 3600. We should investigate why it times more often in develop-2.0.0/ubuntu/trunk #-------------------------------------------------------------------------------------- - -# BUILD PHASE CONFIGURATION------------------------------------------------------------------------------------ {% for project in projects.default -%} {% for platform in test_platforms.desktop -%} {% for editor in validation_editors.all -%} @@ -55,37 +47,10 @@ webgl_build_{{ project.name }}_{{ platform.name }}_{{ editor }}: # This will perform only building phase (--build-only) with a timeout set by the test_timeout variable in the project metafile. - UnifiedTestRunner --suite=playmode --platform=WebGL --scripting-backend=il2cpp --testproject={{ project.path }} --editor-location=.Editor --artifacts_path=artifacts --player-save-path=build/players --extra-editor-arg=-batchmode --extra-editor-arg=-nographics --reruncount=1 --clean-library-on-rerun --build-only --timeout={{ test_timeout }} artifacts: - players: - paths: - - "build/players/**/*" logs: paths: - "artifacts/**/*" -{% endfor -%} -{% endfor -%} -{% endfor -%} - - -# RUN PHASE CONFIGURATION------------------------------------------------------------------------------------ -{% for project in projects.default -%} -{% for platform in test_platforms.webgl_test -%} -{% for editor in validation_editors.all -%} -webgl_test_{{ project.name }}_{{ platform.name }}_{{ editor }}: - name: WebGl Test - {{ project.name }} [{{ platform.name }}, {{ editor }}, il2cpp] - agent: - type: {{ platform.type }} - image: {{ platform.image }} - flavor: {{ platform.flavor }} - model: {{ platform.model }} # GPU model required to run a browser (more information in project.metafile) - commands: - - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor -c webgl -c il2cpp # Downloading the editor with additional webgl and il2cpp components - - UnifiedTestRunner --suite=playmode --platform=WebGL --scripting-backend=il2cpp --testproject={{ project.path }} --editor-location=.Editor --artifacts_path=artifacts --player-load-path=build/players --target-browser=Firefox --target-browser-executable=/usr/bin/firefox --player-connection-ip=${BOKKEN_HOST_IP} --reruncount=1 --clean-library-on-rerun --timeout={{ test_timeout }} - artifacts: - logs: - paths: - - "artifacts/**/*" - dependencies: - - .yamato/webgl-test.yml#webgl_build_{{ project.name }}_ubuntu_{{ editor }} + - "build/players/**/*" {% endfor -%} {% endfor -%} {% endfor -%} diff --git a/testproject/Assets/Tests/Runtime/AddressablesTests.cs b/testproject/Assets/Tests/Runtime/AddressablesTests.cs index 31ca6055d7..7dd8aff688 100644 --- a/testproject/Assets/Tests/Runtime/AddressablesTests.cs +++ b/testproject/Assets/Tests/Runtime/AddressablesTests.cs @@ -17,7 +17,6 @@ namespace TestProject.RuntimeTests [TestFixture(HostOrServer.DAHost)] [TestFixture(HostOrServer.Host)] [TestFixture(HostOrServer.Server)] - [UnityPlatform(exclude = new[] { RuntimePlatform.WebGLPlayer })] // Addressables content is served over HTTP, which the WebGL CI player cannot reach - MTT-15569 public class AddressablesTests : NetcodeIntegrationTest { protected override int NumberOfClients => 2; From 2050e8f4b024d74f347e9c6eab8bd43d26e0d5ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chrobot?= Date: Wed, 12 Aug 2026 16:29:04 +0200 Subject: [PATCH 07/11] reverted change --- .../Tests/Runtime/TransformInterpolationTests.cs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/TransformInterpolationTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/TransformInterpolationTests.cs index 20bcefb62c..4e29237a82 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/TransformInterpolationTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/TransformInterpolationTests.cs @@ -11,15 +11,11 @@ namespace Unity.Netcode.RuntimeTests internal class TransformInterpolationObject : NetworkTransform { public static bool TestComplete = false; - // Set the minimum threshold which we will use as our margin of error. - // Consoles interpolate with lower floating point precision, so they need additional room for error. - // The platform define is set both in a console player and in the editor when it targets a console, - // which covers console tests whether they run on-device or through the editor playmode harness. -#if UNITY_PS4 || UNITY_PS5 || UNITY_SWITCH || UNITY_GAMECORE - public const float MinThreshold = 0.009999f; -#elif UNITY_EDITOR + // Set the minimum threshold which we will use as our margin of error +#if UNITY_EDITOR public const float MinThreshold = 0.00555555f; #else + // Add additional room for error on console tests public const float MinThreshold = 0.009999f; #endif From f26ed8d49fa7795f858b4978c66c4982de32f33c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chrobot?= Date: Thu, 13 Aug 2026 10:55:34 +0200 Subject: [PATCH 08/11] added diagnostic for switch --- .yamato/console-standalone-test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.yamato/console-standalone-test.yml b/.yamato/console-standalone-test.yml index 9d9492f580..62c98c60a4 100644 --- a/.yamato/console-standalone-test.yml +++ b/.yamato/console-standalone-test.yml @@ -50,6 +50,10 @@ console_standalone_build_{{ project.name }}_{{ platform.name }}_{{ editor }}: {% endif %} commands: - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor -c il2cpp -c {{ platform.name }} +{% if platform.name == "switch" %} + # TEMPORARY DIAGNOSTIC (MTT-12118): print which installed Nintendo SDKs contain NvnImage.dll and which nintendo-switch-support version the editor expects, to pick the correct NINTENDO_SDK_ROOT. Remove once the SDK version is chosen. + - powershell -Command "Write-Host '--- SWITCH SDK DIAGNOSTIC (MTT-12118) ---'; Get-ChildItem C:\Nintendo -Directory -ErrorAction SilentlyContinue | ForEach-Object { $d = Join-Path $_.FullName 'NintendoSDK\Tools\Graphics\NvnTools\NvnImage.dll'; Write-Host ('SDK ' + $_.Name + ' NvnImage.dll=' + (Test-Path $d)) }; $sup = Get-ChildItem -Path .Editor -Recurse -Directory -Filter 'nintendo-switch-support' -ErrorAction SilentlyContinue | Select-Object -First 1; if ($sup) { Get-ChildItem $sup.FullName -Directory | ForEach-Object { Write-Host ('editor-expects-switch-support ' + $_.Name) } } else { Write-Host 'nintendo-switch-support dir not found under .Editor' }" +{% endif %} - UnifiedTestRunner --testproject={{ project.path }} --architecture={% if platform.name == "switch" %}arm64{% else %}x64{% endif %} --scripting-backend=il2cpp --suite=playmode --platform={{ platform.standalone }} --editor-location=.Editor --artifacts-path=artifacts --player-save-path=build/players --testfilter="Unity.Netcode.RuntimeTests.*" --extra-editor-arg=-batchmode --extra-editor-arg=-nographics{% if platform.name == "switch" %} --extra-editor-arg=-overrideTextureCompression --extra-editor-arg=ForceUncompressed{% endif %} --reruncount=1 --clean-library-on-rerun --build-only --timeout={{ test_timeout}} variables: # PS4 related From e1f559b385d2c5c18ee46bcbbee22820098ef922 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chrobot?= Date: Thu, 13 Aug 2026 11:18:50 +0200 Subject: [PATCH 09/11] corrected Switch sdk version --- .yamato/console-standalone-test.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.yamato/console-standalone-test.yml b/.yamato/console-standalone-test.yml index 62c98c60a4..675528d9cf 100644 --- a/.yamato/console-standalone-test.yml +++ b/.yamato/console-standalone-test.yml @@ -50,10 +50,6 @@ console_standalone_build_{{ project.name }}_{{ platform.name }}_{{ editor }}: {% endif %} commands: - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor -c il2cpp -c {{ platform.name }} -{% if platform.name == "switch" %} - # TEMPORARY DIAGNOSTIC (MTT-12118): print which installed Nintendo SDKs contain NvnImage.dll and which nintendo-switch-support version the editor expects, to pick the correct NINTENDO_SDK_ROOT. Remove once the SDK version is chosen. - - powershell -Command "Write-Host '--- SWITCH SDK DIAGNOSTIC (MTT-12118) ---'; Get-ChildItem C:\Nintendo -Directory -ErrorAction SilentlyContinue | ForEach-Object { $d = Join-Path $_.FullName 'NintendoSDK\Tools\Graphics\NvnTools\NvnImage.dll'; Write-Host ('SDK ' + $_.Name + ' NvnImage.dll=' + (Test-Path $d)) }; $sup = Get-ChildItem -Path .Editor -Recurse -Directory -Filter 'nintendo-switch-support' -ErrorAction SilentlyContinue | Select-Object -First 1; if ($sup) { Get-ChildItem $sup.FullName -Directory | ForEach-Object { Write-Host ('editor-expects-switch-support ' + $_.Name) } } else { Write-Host 'nintendo-switch-support dir not found under .Editor' }" -{% endif %} - UnifiedTestRunner --testproject={{ project.path }} --architecture={% if platform.name == "switch" %}arm64{% else %}x64{% endif %} --scripting-backend=il2cpp --suite=playmode --platform={{ platform.standalone }} --editor-location=.Editor --artifacts-path=artifacts --player-save-path=build/players --testfilter="Unity.Netcode.RuntimeTests.*" --extra-editor-arg=-batchmode --extra-editor-arg=-nographics{% if platform.name == "switch" %} --extra-editor-arg=-overrideTextureCompression --extra-editor-arg=ForceUncompressed{% endif %} --reruncount=1 --clean-library-on-rerun --build-only --timeout={{ test_timeout}} variables: # PS4 related @@ -62,8 +58,8 @@ console_standalone_build_{{ project.name }}_{{ platform.name }}_{{ editor }}: SCE_PROSPERO_SDK_DIR: 'C:\Program Files (x86)\SCE\Prospero SDKs\13.000' SHADER_COMPILER_PATH: '${SCE_PROSPERO_SDK_DIR}\host_tools\bin' SCE_ROOT_DIR: 'C:\Program Files (x86)\SCE' -# Switch related --> win10-switch:v4 unsets NINTENDO_SDK_ROOT, so set it explicitly to the installed SDK 22.2.0. - NINTENDO_SDK_ROOT: 'C:\Nintendo\nintendosdk-en-22_2_0\NintendoSDK' +# Switch related --> win10-switch:v4 unsets NINTENDO_SDK_ROOT, so set it explicitly. SDK 21.4.0 is installed on the image AND matches the editor playback engine's nintendo-switch-support version (21_04); the newer 22.2.0 is NOT installed on this image. + NINTENDO_SDK_ROOT: 'C:\Nintendo\nintendosdk-en-21_4_0\NintendoSDK' UNITY_NINTENDOSDK_CLI_TOOLS: '${NINTENDO_SDK_ROOT}\Tools\CommandLineTools' artifacts: players: @@ -101,8 +97,8 @@ console_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}: SCE_PROSPERO_SDK_DIR: 'C:\Program Files (x86)\SCE\Prospero SDKs\13.000' SHADER_COMPILER_PATH: '${SCE_PROSPERO_SDK_DIR}\host_tools\bin' SCE_ROOT_DIR: 'C:\Program Files (x86)\SCE' -# Switch related --> win10-switch:v4 unsets NINTENDO_SDK_ROOT, so set it explicitly to the installed SDK 22.2.0. - NINTENDO_SDK_ROOT: 'C:\Nintendo\nintendosdk-en-22_2_0\NintendoSDK' +# Switch related --> win10-switch:v4 unsets NINTENDO_SDK_ROOT, so set it explicitly. SDK 21.4.0 is installed on the image AND matches the editor playback engine's nintendo-switch-support version (21_04); the newer 22.2.0 is NOT installed on this image. + NINTENDO_SDK_ROOT: 'C:\Nintendo\nintendosdk-en-21_4_0\NintendoSDK' UNITY_NINTENDOSDK_CLI_TOOLS: '${NINTENDO_SDK_ROOT}\Tools\CommandLineTools' artifacts: logs: From 55c116b2fb4e2742889a46993d73ca7914903bb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chrobot?= Date: Thu, 13 Aug 2026 13:14:58 +0200 Subject: [PATCH 10/11] temporarily disabled switch --- .yamato/console-standalone-test.yml | 8 ++++---- .yamato/project.metafile | 28 +++++++++++++++------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/.yamato/console-standalone-test.yml b/.yamato/console-standalone-test.yml index 675528d9cf..bdffdec4e5 100644 --- a/.yamato/console-standalone-test.yml +++ b/.yamato/console-standalone-test.yml @@ -58,8 +58,8 @@ console_standalone_build_{{ project.name }}_{{ platform.name }}_{{ editor }}: SCE_PROSPERO_SDK_DIR: 'C:\Program Files (x86)\SCE\Prospero SDKs\13.000' SHADER_COMPILER_PATH: '${SCE_PROSPERO_SDK_DIR}\host_tools\bin' SCE_ROOT_DIR: 'C:\Program Files (x86)\SCE' -# Switch related --> win10-switch:v4 unsets NINTENDO_SDK_ROOT, so set it explicitly. SDK 21.4.0 is installed on the image AND matches the editor playback engine's nintendo-switch-support version (21_04); the newer 22.2.0 is NOT installed on this image. - NINTENDO_SDK_ROOT: 'C:\Nintendo\nintendosdk-en-21_4_0\NintendoSDK' +# Switch related --> Switch is DISABLED in project.metafile (MTT-12118): 6000.x/trunk editors mandate NintendoSDK 22.2.x, which is not installed on win10-switch:v4 (only nintendosdk-en-21_4_0 is). This target path is correct for when PETS ships 22.2.x and Switch is re-enabled. + NINTENDO_SDK_ROOT: 'C:\Nintendo\nintendosdk-en-22_2_0\NintendoSDK' UNITY_NINTENDOSDK_CLI_TOOLS: '${NINTENDO_SDK_ROOT}\Tools\CommandLineTools' artifacts: players: @@ -97,8 +97,8 @@ console_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}: SCE_PROSPERO_SDK_DIR: 'C:\Program Files (x86)\SCE\Prospero SDKs\13.000' SHADER_COMPILER_PATH: '${SCE_PROSPERO_SDK_DIR}\host_tools\bin' SCE_ROOT_DIR: 'C:\Program Files (x86)\SCE' -# Switch related --> win10-switch:v4 unsets NINTENDO_SDK_ROOT, so set it explicitly. SDK 21.4.0 is installed on the image AND matches the editor playback engine's nintendo-switch-support version (21_04); the newer 22.2.0 is NOT installed on this image. - NINTENDO_SDK_ROOT: 'C:\Nintendo\nintendosdk-en-21_4_0\NintendoSDK' +# Switch related --> Switch is DISABLED in project.metafile (MTT-12118): 6000.x/trunk editors mandate NintendoSDK 22.2.x, which is not installed on win10-switch:v4 (only nintendosdk-en-21_4_0 is). This target path is correct for when PETS ships 22.2.x and Switch is re-enabled. + NINTENDO_SDK_ROOT: 'C:\Nintendo\nintendosdk-en-22_2_0\NintendoSDK' UNITY_NINTENDOSDK_CLI_TOOLS: '${NINTENDO_SDK_ROOT}\Tools\CommandLineTools' artifacts: logs: diff --git a/.yamato/project.metafile b/.yamato/project.metafile index 9598e5ec4c..320f7f0104 100644 --- a/.yamato/project.metafile +++ b/.yamato/project.metafile @@ -118,12 +118,13 @@ test_platforms: flavor: b1.large larger_flavor: b1.xlarge standalone: PS5 - - name: switch - type: Unity::VM - image: package-ci/win10-switch:v4 - flavor: b1.large - larger_flavor: b1.xlarge - standalone: Switch + # switch --> DISABLED. SEE MTT-12118. 6000.x/trunk editors mandate NintendoSDK 22.2.x, but package-ci/win10-switch:v4 currently ships only nintendosdk-en-21_4_0. That fixes texture packaging but the native IL2CPP link then fails (undefined symbol std::__1::__hash_memory, from the 22_02 SwitchPlayer.a). Re-enable once PETS publishes a win10-switch image with nintendosdk-en-22_2_x. + # - name: switch + # type: Unity::VM + # image: package-ci/win10-switch:v4 + # flavor: b1.large + # larger_flavor: b1.xlarge + # standalone: Switch - name: GameCoreXboxOne type: Unity::VM image: package-ci/win10-xbox:v4 @@ -149,13 +150,14 @@ test_platforms: flavor: b1.large larger_flavor: b1.xlarge standalone: PS5 - - name: switch - type: Unity::console::switch - image: package-ci/win10-switch:v4 - flavor: b1.large - larger_flavor: b1.xlarge - standalone: Switch - base: win + # switch --> DISABLED. SEE MTT-12118 (needs NintendoSDK 22.2.x on the image; see console_build note). + # - name: switch + # type: Unity::console::switch + # image: package-ci/win10-switch:v4 + # flavor: b1.large + # larger_flavor: b1.xlarge + # standalone: Switch + # base: win - name: GameCoreXboxOne type: Unity::console::xbox image: package-ci/win10-xbox:v4 From 114d590d5996e99f115aca3a46b02cdcdaf19e89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chrobot?= Date: Thu, 13 Aug 2026 13:21:00 +0200 Subject: [PATCH 11/11] corrected ticket description --- .yamato/console-standalone-test.yml | 4 ++-- .yamato/project.metafile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.yamato/console-standalone-test.yml b/.yamato/console-standalone-test.yml index bdffdec4e5..9574e07e1b 100644 --- a/.yamato/console-standalone-test.yml +++ b/.yamato/console-standalone-test.yml @@ -58,7 +58,7 @@ console_standalone_build_{{ project.name }}_{{ platform.name }}_{{ editor }}: SCE_PROSPERO_SDK_DIR: 'C:\Program Files (x86)\SCE\Prospero SDKs\13.000' SHADER_COMPILER_PATH: '${SCE_PROSPERO_SDK_DIR}\host_tools\bin' SCE_ROOT_DIR: 'C:\Program Files (x86)\SCE' -# Switch related --> Switch is DISABLED in project.metafile (MTT-12118): 6000.x/trunk editors mandate NintendoSDK 22.2.x, which is not installed on win10-switch:v4 (only nintendosdk-en-21_4_0 is). This target path is correct for when PETS ships 22.2.x and Switch is re-enabled. +# Switch related --> Switch is DISABLED in project.metafile (MTT-15636): 6000.x/trunk editors mandate NintendoSDK 22.2.x, which is not installed on win10-switch:v4 (only nintendosdk-en-21_4_0 is). This target path is correct for when PETS ships 22.2.x and Switch is re-enabled. NINTENDO_SDK_ROOT: 'C:\Nintendo\nintendosdk-en-22_2_0\NintendoSDK' UNITY_NINTENDOSDK_CLI_TOOLS: '${NINTENDO_SDK_ROOT}\Tools\CommandLineTools' artifacts: @@ -97,7 +97,7 @@ console_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}: SCE_PROSPERO_SDK_DIR: 'C:\Program Files (x86)\SCE\Prospero SDKs\13.000' SHADER_COMPILER_PATH: '${SCE_PROSPERO_SDK_DIR}\host_tools\bin' SCE_ROOT_DIR: 'C:\Program Files (x86)\SCE' -# Switch related --> Switch is DISABLED in project.metafile (MTT-12118): 6000.x/trunk editors mandate NintendoSDK 22.2.x, which is not installed on win10-switch:v4 (only nintendosdk-en-21_4_0 is). This target path is correct for when PETS ships 22.2.x and Switch is re-enabled. +# Switch related --> Switch is DISABLED in project.metafile (MTT-15636): 6000.x/trunk editors mandate NintendoSDK 22.2.x, which is not installed on win10-switch:v4 (only nintendosdk-en-21_4_0 is). This target path is correct for when PETS ships 22.2.x and Switch is re-enabled. NINTENDO_SDK_ROOT: 'C:\Nintendo\nintendosdk-en-22_2_0\NintendoSDK' UNITY_NINTENDOSDK_CLI_TOOLS: '${NINTENDO_SDK_ROOT}\Tools\CommandLineTools' artifacts: diff --git a/.yamato/project.metafile b/.yamato/project.metafile index 320f7f0104..518f8ec2ba 100644 --- a/.yamato/project.metafile +++ b/.yamato/project.metafile @@ -118,7 +118,7 @@ test_platforms: flavor: b1.large larger_flavor: b1.xlarge standalone: PS5 - # switch --> DISABLED. SEE MTT-12118. 6000.x/trunk editors mandate NintendoSDK 22.2.x, but package-ci/win10-switch:v4 currently ships only nintendosdk-en-21_4_0. That fixes texture packaging but the native IL2CPP link then fails (undefined symbol std::__1::__hash_memory, from the 22_02 SwitchPlayer.a). Re-enable once PETS publishes a win10-switch image with nintendosdk-en-22_2_x. + # switch --> DISABLED. SEE MTT-15636 (split from MTT-12118). 6000.x/trunk editors mandate NintendoSDK 22.2.x, but package-ci/win10-switch:v4 currently ships only nintendosdk-en-21_4_0. That fixes texture packaging but the native IL2CPP link then fails (undefined symbol std::__1::__hash_memory, from the 22_02 SwitchPlayer.a). Re-enable once PETS publishes a win10-switch image with nintendosdk-en-22_2_x. # - name: switch # type: Unity::VM # image: package-ci/win10-switch:v4 @@ -150,7 +150,7 @@ test_platforms: flavor: b1.large larger_flavor: b1.xlarge standalone: PS5 - # switch --> DISABLED. SEE MTT-12118 (needs NintendoSDK 22.2.x on the image; see console_build note). + # switch --> DISABLED. SEE MTT-15636 (needs NintendoSDK 22.2.x on the image; see console_build note). # - name: switch # type: Unity::console::switch # image: package-ci/win10-switch:v4