Run .NET MAUI unit tests on distributed Helix queues from your local development environment.
Install
mkdir -p .claude/skills/run-helix-tests && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/7229" && unzip -o skill.zip -d .claude/skills/run-helix-tests && rm skill.zipInstalls to .claude/skills/run-helix-tests
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
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.Key capabilities
- →Submit MAUI unit tests to Helix queues
- →Monitor test job progress
- →Configure test environment settings
- →Debug cross-platform test failures
- →Query job completion status
How it works
Triggers PowerShell scripts that interface with the Helix REST API to offload workload to distributed cloud runners.
Inputs & outputs
When to use run-helix-tests
- →Submit unit tests to Helix
- →Validate test changes on multiple platforms
- →Debug Helix-specific test failures
- →Run cross-platform MAUI tests
About this skill
Run Helix Tests Skill
Submit and monitor .NET MAUI unit tests on Helix infrastructure from your local machine.
Tools Required
This skill uses pwsh (PowerShell 7+) to run the scripts. The scripts call the local .dotnet/dotnet SDK.
When to Use
- User asks to "run tests on Helix"
- User wants to validate test changes on Helix infrastructure
- User asks to "test on multiple platforms" (Windows + macOS)
- User wants to debug Helix-specific test failures locally
- User asks about "Helix unit tests" (not device tests - those use
helix_xharness.proj)
Prerequisites
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
Scripts
All scripts are in .github/skills/run-helix-tests/scripts/
1. Submit Unit Tests to Helix
# 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"
2. Monitor Helix Job Status
# 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
3. Get Helix Work Item Console Logs
# 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
Quick Start (Manual)
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.
Test Projects Submitted
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 |
Helix Queues
Tests run on multiple queues in parallel:
| Queue | Platform |
|---|---|
Windows.10.Amd64.Open | Windows 10 x64 |
osx.15.arm64.maui.open | macOS 15 ARM64 |
Workflow
Submit and Monitor Tests
-
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
Debug a Specific Test Failure
- Get the job ID from the Helix submission output
- Find the failed work item name
- Get the console log:
pwsh .github/skills/run-helix-tests/scripts/Get-HelixWorkItemLog.ps1 -JobId <JOB_ID> -WorkItem "Microsoft.Maui.Controls.Xaml.UnitTests.dll"
Understanding Results
Helix test results are reported to the console and can be viewed at:
- Helix Portal: https://helix.dot.net/api/2019-06-17/jobs/{jobId}
- Work Item Console: https://helix.dot.net/api/2019-06-17/jobs/{jobId}/workitems/{workItemName}/console
Common Issues
| 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 |
Difference from Device Tests
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.
When not to use it
- →Local development UI testing
- →Testing non-MAUI applications
Prerequisites
Limitations
- →Requires VPN/network access to internal Helix
- →High latency due to remote execution
How it compares
It abstracts the distributed infrastructure management away from the standard dotnet test command.
Compared to similar skills
run-helix-tests side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| run-helix-tests (this skill) | 1 | 6mo | Review | Advanced |
| run-integration-tests | 1 | 6mo | Review | Intermediate |
| quality-ci | 0 | 3mo | No flags | Advanced |
| pr-testing | 0 | 6mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by dotnet
View all by dotnet →You might also like
run-integration-tests
dotnet
Build, pack, and run .NET MAUI integration tests locally. Validates templates, samples, and end-to-end scenarios using the local workload.
quality-ci
managedcode
Set up or refine open-source .NET code-quality gates for CI: formatting, `.editorconfig`, SDK analyzers, third-party analyzers, coverage, mutation testing, architecture tests, and security scanning. USE FOR: .NET quality gates in CI; analyzer, coverage, mutation, and architecture-test choices; stand
pr-testing
sast-playground
Downloads and tests Aspire CLI from a PR build, verifies version, and runs test scenarios based on PR changes. Use this when asked to test a pull request.
csharp-pro
sickn33
Write modern C# code with advanced features like records, pattern matching, and async/await. Optimizes .NET applications, implements enterprise patterns, and ensures comprehensive testing. Use PROACTIVELY for C# refactoring, performance optimization, or complex .NET solutions.
performance-benchmark
dotnet
Generate and run ad hoc performance benchmarks to validate code changes. Use this when asked to benchmark, profile, or validate the performance impact of a code change in dotnet/runtime.
run-device-tests
dotnet
Build and run .NET MAUI device tests locally with category filtering. Supports iOS, MacCatalyst, Android on macOS; Android, Windows on Windows. Use TestFilter to run specific test categories.