with one click
run-helix-tests
Submit and monitor .NET MAUI unit tests on Helix infrastructure. Supports running XAML, Resizetizer, Core, Essentials, and other unit test projects on distributed Helix queues.
Menu
Submit and monitor .NET MAUI unit tests on Helix infrastructure. Supports running XAML, Resizetizer, Core, Essentials, and other unit test projects on distributed Helix queues.
Based on SOC occupation classification
| name | run-helix-tests |
| description | Submit and monitor .NET MAUI unit tests on Helix infrastructure. Supports running XAML, Resizetizer, Core, Essentials, and other unit test projects on distributed Helix queues. |
| metadata | {"author":"dotnet-maui","version":"1.0"} |
| compatibility | Requires local .dotnet SDK provisioned (run `dotnet cake` first if missing). |
Submit and monitor .NET MAUI unit tests on Helix infrastructure from your local machine.
This skill uses pwsh (PowerShell 7+) to run the scripts. The scripts call the local .dotnet/dotnet SDK.
helix_xharness.proj)Before running Helix tests, ensure:
Local SDK provisioned: The .dotnet/ folder must exist with the SDK
# If missing, run:
dotnet cake --target=dotnet
Build tasks compiled (for first run):
# Windows
.\build.cmd -restore -build -configuration Release -projects .\Microsoft.Maui.BuildTasks.slnf
# macOS/Linux
./build.sh -restore -build -configuration Release -projects ./Microsoft.Maui.BuildTasks.slnf
All scripts are in .github/skills/run-helix-tests/scripts/
# Submit all unit tests (XAML, Core, Essentials, Resizetizer, etc.)
pwsh .github/skills/run-helix-tests/scripts/Submit-HelixTests.ps1
# Submit with specific configuration
pwsh .github/skills/run-helix-tests/scripts/Submit-HelixTests.ps1 -Configuration Debug
# Submit to specific queue only
pwsh .github/skills/run-helix-tests/scripts/Submit-HelixTests.ps1 -Queue "Windows.10.Amd64.Open"
# Monitor a submitted job (use job ID from submission output)
pwsh .github/skills/run-helix-tests/scripts/Get-HelixJobStatus.ps1 -JobId <JOB_ID>
# Wait for completion with polling
pwsh .github/skills/run-helix-tests/scripts/Get-HelixJobStatus.ps1 -JobId <JOB_ID> -Wait
# Get console output for a specific work item
pwsh .github/skills/run-helix-tests/scripts/Get-HelixWorkItemLog.ps1 -JobId <JOB_ID> -WorkItem <WORK_ITEM_NAME>
# Get failed work items only
pwsh .github/skills/run-helix-tests/scripts/Get-HelixWorkItemLog.ps1 -JobId <JOB_ID> -FailedOnly
If you prefer to run directly without scripts:
# Windows
.\helix.cmd
# macOS/Linux
./helix.sh
These wrapper scripts set the required environment variables and submit to Helix.
The following test projects are submitted to Helix (defined in eng/helix.proj):
| Project | Description |
|---|---|
Controls.Xaml.UnitTests | XAML parsing and compilation tests |
Controls.Core.UnitTests | Core controls unit tests |
Controls.BindingSourceGen.UnitTests | Binding source generator tests |
SourceGen.UnitTests | General source generator tests |
Core.UnitTests | Core framework tests |
Essentials.UnitTests | Essentials APIs tests |
Resizetizer.UnitTests | Image resizing tests |
Tests run on multiple queues in parallel:
| Queue | Platform |
|---|---|
Windows.10.Amd64.Open | Windows 10 x64 |
osx.15.arm64.maui.open | macOS 15 ARM64 |
Submit tests:
$result = pwsh .github/skills/run-helix-tests/scripts/Submit-HelixTests.ps1
# Note the job IDs from output
Monitor progress:
pwsh .github/skills/run-helix-tests/scripts/Get-HelixJobStatus.ps1 -JobId $jobId -Wait
Check failures (if any):
pwsh .github/skills/run-helix-tests/scripts/Get-HelixWorkItemLog.ps1 -JobId $jobId -FailedOnly
pwsh .github/skills/run-helix-tests/scripts/Get-HelixWorkItemLog.ps1 -JobId <JOB_ID> -WorkItem "Microsoft.Maui.Controls.Xaml.UnitTests.dll"
Helix test results are reported to the console and can be viewed at:
| Issue | Solution |
|---|---|
| "dotnet not found" | Run dotnet cake --target=dotnet to provision SDK |
| "Build failed" | Run build.cmd/build.sh first to build required projects |
| "Queue not available" | Check https://helix.dot.net for queue status |
| "Test timeout" | Some tests have long execution times; this is normal |
This skill runs unit tests on Helix (eng/helix.proj).
For device tests (iOS, Android, MacCatalyst emulators/simulators), use:
# Device tests use helix_xharness.proj instead
./eng/common/msbuild.sh ./eng/helix_xharness.proj /t:Test /p:TargetOS=ios
See .github/instructions/helix-device-tests.instructions.md for device test guidance.
Assesses ship-readiness for .NET MAUI release branches — Servicing Releases (SR) and Previews. Surveys CI pipelines, computes what's actually NEW in the branch (commits + source PRs with revert detection), and cross-references open `regressed-in-*` issues against branch contents to identify port candidates, rejected backports, and unresolved regressions. Supports both in-flight and pre-cut (candidate) modes for SR and Preview branches.
Labels issues and pull requests in the dotnet/maui repository with `area-*` and `platform/*` labels ONLY, based on technical content and platform-file conventions. Used by the gh-aw agentic-labeler workflow and available for batch evaluation and interactive Copilot CLI usage.
Deep code review of PR changes for correctness, safety, and MAUI conventions. Uses independence-first assessment (code before narrative) and delegates to the maui-expert-reviewer agent for per-dimension sub-agent evaluation. Triggers on: "review code for PR", "code review PR", "analyze code changes", "check PR code quality". Do NOT use for: summarizing PRs, describing what changed, general PR questions, running tests, or fixing code.
Evaluates tests added in a PR for coverage, quality, edge cases, and test type appropriateness. Checks if tests cover the fix, finds gaps, and recommends lighter test types when possible. Prefer unit tests over device tests over UI tests. Triggers on: 'evaluate tests in PR', 'review test quality', 'are these tests good enough', 'check test coverage', 'is this test adequate', 'assess test coverage for PR'.
Attempts ONE alternative fix for a bug, tests it empirically, and reports results. ALWAYS explores a DIFFERENT approach from existing PR fixes. Use when CI or an agent needs to try independent fix alternatives. Invoke with problem description, test command, target files, and optional hints.
Verifies tests catch the bug. Auto-detects test type (UI tests, device tests, unit tests) and dispatches to the appropriate runner. Supports two modes - verify failure only (test creation) or full verification (test + fix validation).