Skip to content

[release/10.0] Selective merge of main to release/10.0#1553

Merged
vitek-karas merged 11 commits intodotnet:release/10.0from
matouskozak:backport-main-to-release/10
Mar 12, 2026
Merged

[release/10.0] Selective merge of main to release/10.0#1553
vitek-karas merged 11 commits intodotnet:release/10.0from
matouskozak:backport-main-to-release/10

Conversation

@matouskozak
Copy link
Member

@matouskozak matouskozak commented Mar 11, 2026

Backport critical fixes from main to release/10.0

Problem

The release/10.0 CI is broken because 5 integration test projects still reference deprecated osx.13 Helix queues that are no longer available.

Failed build: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1330074

Changes

Cherry-picks from main, grouped by priority:

Fix CI — update deprecated Helix queues:

Bug fixes improving CI reliability:

CI pipeline improvements:

What was NOT backported (and why)

PR Reason
#1497 (Version → 11.0.0) Not applicable to release/10.0
#1534, #1538, #1537, #1535 (WASM/browser changes) Not needed for release/10.0 CI fix
#1505 (NUnitV3 TouchUnit support) Feature change, not needed
#1521, #1507 (arcade dependency updates) release/10.0 has its own dependency flow
#1542 (SDK 10.0.103), #1501, #1499, #1512 Already backported via #1543

kotlarmilos and others added 11 commits March 11, 2026 11:49
)

* Update Simulator.Commands Helix queue from osx.13 to osx.15

The Simulator.Commands.Tests.proj was using osx.13.amd64.open (macOS Ventura 13)
which is the oldest queue. Update to osx.15.amd64.open to align with the other
Apple simulator test projects and dotnet/runtime.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update iOS simulator version to 18.1 for osx.15 queue

The osx.15 machines have iOS 18.1 pre-installed. The old 16.4 version
required downloading a 6.18 GB simulator runtime, causing timeouts.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Use architecture-specific test app bundle for simulator commands test

The non-architecture-specific app bundle (from June 2025) fails to launch
on iOS 18.1 simulators. Update the download URL to use the x64-specific
path which has a newer app bundle (December 2025) that is compatible.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Use 'apple test' instead of 'install + just-test' in Simulator Commands E2E test

The manual 'install' + 'just-test' flow has a systematic failure on iOS 18.1
simulators (APP_LAUNCH_FAILURE). The 'apple test' command, which handles the
full lifecycle internally, works correctly on the same platform. This change
replaces the failing flow while still exercising 5 manual commands:
simulators install, reset-simulator, device, test (with --device), and uninstall.

The 'just-test' failure on iOS 18.1 should be investigated separately.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Don't fail test on uninstall after 'apple test' cleanup

The 'apple test' command shuts down the simulator during cleanup,
which causes the subsequent 'apple uninstall' to fail with
PACKAGE_NOT_FOUND. The uninstall is still executed to exercise
the command, but its exit code no longer affects the test result.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- New arm64 variants of Apple tests apps
- Use newer iphone simulator for testing
- Add application log for capturing mlaunch output and exit code detection
- Update tests
- document test app update

---------

Co-authored-by: Milos Kotlar <kotlarmilos@gmail.com>
…net#1517)

* Improve crash report handling in AppTester and ResultFileHandler

- Implemented crash report copy when test results are not found
- Added CopyCrashReportAsync method to IResultFileHandler for fetching crash reports
- Log crash dump

* Improve crash report handling to utilize HELIX_WORKITEM_UPLOAD_ROOT if available and improve logging format

* Skip crash report copy test on Windows
…P_CRASH after successful runs (dotnet#1551)

* Initial plan

* Fix tvOS device communication failures causing false TIMED_OUT and APP_CRASH results

Three layered fixes:

1. DeviceLogCapturer: Add 2-minute timeouts to 'log collect' and 'log show' processes
   in StopCapture() to prevent indefinite blocking when Apple TV device log streaming
   is broken (fixes apple run TIMED_OUT after mlaunch exits with expected code).

2. ResultFileHandler: Add retry with backoff (up to 3 attempts, 5s/10s/20s delays)
   to devicectl file copy in CopyResultsAsync() to handle transient device communication
   errors (com.apple.Mercury.error 1000, RSD error 0xE8000003).

3. TestReporter.ParseResult(): When Success=true was already set by CollectDeviceResult()
   (test run completed via app end signal), but the results file is missing (devicectl
   failed), return Succeeded instead of Crashed. Device communication failure after
   successful test completion is an infrastructure issue, not an app crash.

4. AppTester: Skip crash report retrieval when test run already completed and file copy
   fails, replacing misleading 'app may have crashed' message with accurate warning.

Adds unit tests for retry behavior and the new TestReporter.ParseResult() path.

Co-authored-by: steveisok <471438+steveisok@users.noreply.github.com>

* Improve test method naming per code review feedback

Co-authored-by: steveisok <471438+steveisok@users.noreply.github.com>

* Remove accidentally committed .nuget/nuget.exe binary and add to .gitignore

Co-authored-by: steveisok <471438+steveisok@users.noreply.github.com>

* Address PR review feedback

- DeviceLogCapturer: Add WaitForExit() flush after timed WaitForExit() to ensure
  async stdout/stderr buffers are fully drained before reading them (both log collect
  and log show processes).
- DeviceLogCapturer: Fix _outputPath cleanup on early-return paths (timeout and
  non-zero exit) by extracting CleanupOutputPath() helper and calling it uniformly.
- ResultFileHandler: Make DefaultRetryDelaysMs private (tests inject via constructor);
  clone the array on assignment to prevent external mutation.
- Integration tests: Update osx.13.amd64.open Helix queue to osx.15.amd64.open.

Co-authored-by: steveisok <471438+steveisok@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: steveisok <471438+steveisok@users.noreply.github.com>
…otnet#1550)

* Initial plan

* Add emulator recovery to AdbRunner and update Android commands to attempt recovery before DEVICE_NOT_FOUND

Co-authored-by: steveisok <471438+steveisok@users.noreply.github.com>

* Android: Attempt emulator recovery before returning DEVICE_NOT_FOUND

Co-authored-by: steveisok <471438+steveisok@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: steveisok <471438+steveisok@users.noreply.github.com>
* Initial plan

* Update mlaunch version from 1.1.72 to 1.1.97

Co-authored-by: rmarinho <1235097+rmarinho@users.noreply.github.com>

* Update queue for testing

* Try lowering Mlaunch

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: rmarinho <1235097+rmarinho@users.noreply.github.com>
Co-authored-by: Rui Marinho <me@ruimarinho.net>
Co-authored-by: Matous Kozak <55735845+matouskozak@users.noreply.github.com>
* Update post-build condition to exclude scheduled builds

* Update post-build condition to enable asset publishing only for non-scheduled builds
…net#1519)

* Add CodeQL language variable for C# and Python

* Update CodeQL language variable to include actions and powershell

* Enable CodeQL analysis on non-default branches

* Add CodeQL exclude path

* Add CodeQL cadence

* Exclude python langauge

* Revert changes

* Fix indentation
@matouskozak matouskozak self-assigned this Mar 11, 2026
@matouskozak matouskozak changed the title [release/10.] Selective merge of main to release/10.0 [release/10.0] Selective merge of main to release/10.0 Mar 11, 2026
@matouskozak matouskozak marked this pull request as ready for review March 11, 2026 13:29
@matouskozak matouskozak added the infrastructure Connected to Helix infrastructure label Mar 11, 2026
Copy link
Member

@vitek-karas vitek-karas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since these are just plain ports it's good.

@vitek-karas vitek-karas merged commit 981a759 into dotnet:release/10.0 Mar 12, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

infrastructure Connected to Helix infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants