-
Notifications
You must be signed in to change notification settings - Fork 62
Comparing changes
Open a pull request
base repository: dotnet/xharness
base: 0eeaa60169
head repository: dotnet/xharness
compare: b0c8bf6dba
- 16 commits
- 63 files changed
- 9 contributors
Commits on Mar 10, 2026
-
Fix tvOS device communication failures causing false TIMED_OUT and AP…
…P_CRASH after successful runs (#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>
Configuration menu - View commit details
-
Copy full SHA for a6f9fe6 - Browse repository at this point
Copy the full SHA a6f9fe6View commit details -
Android: Attempt emulator recovery before returning DEVICE_NOT_FOUND (#…
…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>
Configuration menu - View commit details
-
Copy full SHA for e7a795d - Browse repository at this point
Copy the full SHA e7a795dView commit details -
Update Simulator.Commands Helix queue from osx.13 to osx.15 (#1545)
* 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>
Configuration menu - View commit details
-
Copy full SHA for c32a777 - Browse repository at this point
Copy the full SHA c32a777View commit details
Commits on Mar 11, 2026
-
Update .NET SDK to 10.0.103 to address security vulnerabilities (#1542)
Upgrade from 10.0.100 to 10.0.103 as recommended by Component Governance alert 12328124. See https://aka.ms/dotnet-security-notes for details. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 2856c8a - Browse repository at this point
Copy the full SHA 2856c8aView commit details -
Switch E2E test pool from ubuntu-latest to DncEng public pool (#1556)
Use DncEngPublicBuildPool with build.ubuntu.2204.amd64.open image instead of the ubuntu-latest hosted pool for E2E test jobs. This ensures hosted pools are only used for macOS runs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 2ceb56d - Browse repository at this point
Copy the full SHA 2ceb56dView commit details
Commits on Mar 12, 2026
-
Fix CA2024 in TestReporter (#1555)
Avoid StreamReader.EndOfStream in the async run-log parser. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for ea007a3 - Browse repository at this point
Copy the full SHA ea007a3View commit details -
Enable NativeAOT support for iOS test runner (#1554)
Make ThreadlessXunitTestRunner platform-generic so it can be used on iOS/tvOS/Mac Catalyst in addition to WASM. The runner uses reflection-based test discovery (ThreadlessXunitDiscoverer) which is NativeAOT-compatible, unlike XUnitTestRunner which depends on XunitFrontController for dynamic assembly loading. Changes: - ThreadlessXunitTestRunner: make ResultsFileName settable, refactor WriteResultsToFile to support file-based XML output on non-browser platforms while preserving existing WASM behavior - iOSApplicationEntryPoint: detect NativeAOT via RuntimeFeature.IsDynamicCodeSupported and automatically use ThreadlessXunitTestRunner when dynamic code is not available Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 8fc29af - Browse repository at this point
Copy the full SHA 8fc29afView commit details -
[main] Update dependencies from dotnet/arcade (#1530)
[main] Update dependencies from dotnet/arcade - Fix CA2024: Do not use StreamReader.EndOfStream in async methods Implement the recommendation from https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2024 - Merge branch 'main' into darc-main-d6137969-a1fd-4d9c-b794-faea8b997496 - Merge main and update .NET SDK to 11.0.100-preview.2.26159.112 Merge latest main into the Arcade update PR branch and resolve the global.json conflict by upgrading the .NET SDK to Preview 2 (11.0.100-preview.2.26159.112). The previous SDK version (11.0.100-preview.1.26104.118) has a known bug (dotnet/sdk#53101) where dotnet tool install fails with 'DotnetToolSettings.xml not found', breaking all Helix E2E tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> - Update integration test Helix tool settings Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 04cea5f - Browse repository at this point
Copy the full SHA 04cea5fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 391c863 - Browse repository at this point
Copy the full SHA 391c863View commit details
Commits on Mar 15, 2026
-
Fix Chrome DevToolsActivePort crash retry for Selenium 4.0.0-alpha05 (#…
…1563) The retry logic in GetChromiumDriver only catches TargetInvocationException when the inner exception is WebDriverException. However, Selenium 4.0.0-alpha05 throws InvalidOperationException (not WebDriverException) for 'session not created: Chrome failed to start: crashed' errors that include 'DevToolsActivePort file doesn't exist'. This means the retry never fires for this common transient failure, causing intermittent test failures across CI (dotnet/runtime#124438). Changes: - Broaden catch to also match InvalidOperationException inner exceptions - Add 'DevToolsActivePort file doesn't exist' to retryable error snippets - Detect Windows containers via DOTNET_RUNNING_IN_CONTAINER env var for --no-sandbox (/.dockerenv only exists on Linux) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 7eea15a - Browse repository at this point
Copy the full SHA 7eea15aView commit details -
Fix artifact upload collision between Debug and Release matrix legs (#…
…1564) Both Debug and Release matrix legs call CIBuild which includes -publish, causing both to simultaneously upload PackageArtifacts (e.g. Microsoft.DotNet.XHarness.CLI.nupkg) to the same AzDO artifact container. This results in intermittent 'Blob is incomplete (missing block)' errors. Fix by passing /p:Publish=false for the Debug leg so only the Release leg publishes packages to artifact storage. The Debug leg still builds, tests, signs, and packs -- it just skips the artifact upload step. Ref: dotnet/dnceng#1916 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 6fe0045 - Browse repository at this point
Copy the full SHA 6fe0045View commit details
Commits on Mar 16, 2026
-
Configuration menu - View commit details
-
Copy full SHA for 581c6a9 - Browse repository at this point
Copy the full SHA 581c6a9View commit details
Commits on Mar 17, 2026
-
Reduce mlaunch default verbosity from 5 to 2 (#1561)
* Reduce mlaunch default verbosity from 5 to 2 The default verbosity of 5 causes mlaunch to pass five -v flags to devicectl, producing massive debug output (full device property trees, connection details, capabilities) that clutters console logs. Reducing to 2 keeps useful diagnostic info while removing the noise. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Reduce logging verbosity by filtering out system logs in TestOrchestrator and adding a separate process log in AppBundleInformationParser. * Reduce logging verbosity in MlaunchProcessManager and IMlaunchProcessManager by setting default verbosity to 0 --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 09774ba - Browse repository at this point
Copy the full SHA 09774baView commit details -
Add NativeAOT xunit test runner with threaded execution (#1560)
* Add NativeAOT xunit test runner with threaded execution Introduce NativeAotXunitTestRunner that extends ThreadlessXunitTestRunner with parallel test execution support and file-based result output. ThreadlessXunitTestRunner uses reflection-based discovery (NativeAOT-safe) but forces single-threaded execution. The new runner overrides the configuration to allow parallel test collections since NativeAOT has threads available. - Add NativeAotXunitTestRunner extending ThreadlessXunitTestRunner with configurable MaxParallelThreads and ParallelizeTestCollections - Extract virtual CreateConfiguration() and RunnerDisplayName from ThreadlessXunitTestRunner for extensibility - Revert PR #1554 changes to ThreadlessXunitTestRunner, keeping it WASM-only as originally intended - Update iOS and Android entry points to use NativeAotXunitTestRunner when RuntimeFeature.IsDynamicCodeSupported is false Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Refactor: extract CustomXunitTestRunner abstract base, rename to ReflectionBasedXunitTestRunner Address review feedback: - Rename NativeAotXunitTestRunner to ReflectionBasedXunitTestRunner - Extract shared reflection-based discovery logic into abstract CustomXunitTestRunner base class - Make ThreadlessXunitTestRunner and ReflectionBasedXunitTestRunner concrete implementations of CustomXunitTestRunner Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for f3b160f - Browse repository at this point
Copy the full SHA f3b160fView commit details
Commits on Mar 18, 2026
-
Add net8.0 and net9.0 TFMs to all shipped packages for servicing bran…
…ch compatibility (#1572) Define XHarnessNetTFMs centrally in Directory.Build.props so all shipped packages include net8.0 through net11.0. This ensures downstream repos on older .NET SDKs (e.g. dotnet/runtime release/8.0-staging, release/10.0) can consume XHarness packages from main. The Arcade SDK 11.0 defines NetMinimum=net10.0 and NetPrevious='' (empty), so projects using only Arcade variables end up with just net10.0 and net11.0. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 607b3de - Browse repository at this point
Copy the full SHA 607b3deView commit details
Commits on Mar 19, 2026
-
Update dependencies from https://github.com/dotnet/arcade build 20260…
…313.2 (#1566) On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26156.2 -> To Version 11.0.0-beta.26163.2 Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for b0c8bf6 - Browse repository at this point
Copy the full SHA b0c8bf6View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff 0eeaa60169...b0c8bf6dba