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.
60
70%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./.github/skills/run-helix-tests/SKILL.mdSubmit 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=dotnetBuild 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.slnfAll 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> -FailedOnlyIf you prefer to run directly without scripts:
# Windows
.\helix.cmd
# macOS/Linux
./helix.shThese 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 outputMonitor progress:
pwsh .github/skills/run-helix-tests/scripts/Get-HelixJobStatus.ps1 -JobId $jobId -WaitCheck failures (if any):
pwsh .github/skills/run-helix-tests/scripts/Get-HelixWorkItemLog.ps1 -JobId $jobId -FailedOnlypwsh .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=iosSee .github/instructions/helix-device-tests.instructions.md for device test guidance.
6a24ec5
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.