Official agent skill

MAUI Integration Test Runner

by dotnet in dotnet/maui

Builds and packs .NET MAUI, installs the local workloads and runs integration tests for templates, samples and end-to-end scenarios by category.

OfficialMITAuto-check passedTesting & QA

Install MAUI Integration Test Runner

skills CLI
$ npx skills add dotnet/maui --skill run-integration-tests -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install dotnet/maui run-integration-tests --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/dotnet/maui.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/run-integration-tests .claude/skills/run-integration-tests && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
run-integration-tests
GitHub stars
23k
Token cost
~2.1k tokens
SKILL.md length
512 words
Files
2 (incl. scripts)
Skills in repo
27
Repo updated
First seen
Licence
MIT

At a glance

Builds and packs .NET MAUI, installs the local workloads and runs integration tests for templates, samples and end-to-end scenarios by category.

  • Works in 4 steps: Build & Pack: .\build.cmd -restore -pack… → Install Workloads: .dotnet\dotnet build… → Extract Version: Reads… → …
  • Validating that a change does not break the project templates
  • SKILL.md covers When to Use, Available Test Categories, Scripts and Parameters, plus 6 more sections
  • Runs PowerShell scripts from its folder; calls pwsh, dotnet and xcrun

What it does

Run-IntegrationTests.ps1 performs four steps: it builds and packs the product, installs workloads from the repo's own SDK project, reads the package version from the installed packs, and runs dotnet test with a category filter. Categories include Build, WindowsTemplates, macOSTemplates, Blazor, MultiProject, Samples, AOT, RunOnAndroid and RunOniOS.

Parameters let you pick a category or a custom NUnit filter, choose Debug or Release, skip the build or the workload install when already done, skip the Xcode version check on macOS, provision a local SDK automatically and move the results folder from its default of artifacts/integration-tests. Some categories are tied to a platform: WindowsTemplates needs Windows, while macOSTemplates, RunOniOS and RunOnAndroid need macOS.

When your agent uses it

  • Validating that a change does not break the project templates
  • Running one integration category such as Samples or Blazor locally
  • Checking the Android or iOS run scenarios on a Mac

Example prompts

  • “Run the WindowsTemplates integration tests in Release configuration.”
  • “Test the MAUI templates locally and skip the build, since I already packed.”
  • “Run the RunOnAndroid category on my Mac.”

Requirements

  • PowerShell
  • The repository's .NET build tooling
  • Windows for WindowsTemplates, macOS for the macOS and device scenarios
  • Compatibility (from SKILL.md): Requires Windows for WindowsTemplates category. macOS for macOSTemplates, RunOniOS, RunOnAndroid.

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Build & Pack: .\build.cmd -restore -pack -configuration $Configuration
  2. Install Workloads: .dotnet\dotnet build .\src\DotNet\DotNet.csproj -t:Install -c $Configuration
  3. Extract Version: Reads MAUI_PACKAGE_VERSION from installed packs
  4. Run Tests: .dotnet\dotnet test ... -filter "Category=$Category"

What it can do on your machine

Read from SKILL.md and the folder at commit 7d38fd0. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (PowerShell), which the agent can run.

    Shell commands in SKILL.md call:

    • pwsh
    • dotnet
    • xcrun

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires Windows for WindowsTemplates category. macOS for macOSTemplates, RunOniOS, RunOnAndroid.

    From compatibility in the SKILL.md frontmatter.

Context cost

MAUI Integration Test Runner loads about 2.1k tokens when it runs. Until then it costs about 40 tokens; SKILL.md has 512 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~40
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from dotnet/maui at commit 7d38fd0, republished under its MIT licence (© dotnet). 512 words, ~2,052 tokens.

Download SKILL.mdSave it as .claude/skills/run-integration-tests/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
run-integration-tests
description
Build, pack, and run .NET MAUI integration tests locally. Validates templates, samples, and end-to-end scenarios using the local workload.
compatibility
Requires Windows for WindowsTemplates category. macOS for macOSTemplates, RunOniOS, RunOnAndroid.
metadata.author
dotnet-maui
metadata.version
1.0

Run Integration Tests Skill

Build the MAUI product, install local workloads, and run integration tests.

When to Use

  • User asks to "run integration tests"
  • User asks to "test templates locally"
  • User asks to "validate MAUI build with templates"
  • User wants to verify changes don't break template scenarios
  • User asks to run specific test categories (WindowsTemplates, Samples, Build, Blazor, etc.)

Available Test Categories

CategoryPlatformDescription
BuildAllBasic template build tests
WindowsTemplatesWindowsWindows-specific template scenarios
macOSTemplatesmacOSmacOS-specific scenarios
BlazorAllBlazor hybrid templates
MultiProjectAllMulti-project templates
SamplesAllSample project builds
AOTmacOSNative AOT compilation
RunOnAndroidmacOSBuild, install, run on Android emulator
RunOniOSmacOSiOS simulator tests

Scripts

All scripts are in .github/skills/run-integration-tests/scripts/

Run Integration Tests (Full Workflow)
powershell
# Run with specific category
pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "WindowsTemplates"

# Run with Release configuration
pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "Samples" -Configuration "Release"

# Run with custom test filter
pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -TestFilter "FullyQualifiedName~BuildSample"

# Skip build step (if already built)
pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "Build" -SkipBuild

# macOS: Skip Xcode version check (for version mismatches)
pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "macOSTemplates" -SkipBuild -SkipInstall -SkipXcodeVersionCheck

# Auto-provision SDK if not found (first-time setup)
pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "Build" -AutoProvision

Parameters

ParameterRequiredDefaultDescription
-CategoryNo-Test category to run (WindowsTemplates, Samples, Build, etc.)
-TestFilterNo-Custom NUnit test filter expression
-ConfigurationNoDebugBuild configuration (Debug/Release)
-SkipBuildNofalseSkip build/pack step if already done
-SkipInstallNofalseSkip workload installation if already done
-SkipXcodeVersionCheckNofalseSkip Xcode version validation (macOS)
-AutoProvisionNofalseAutomatically provision local SDK if not found
-ResultsDirectoryNoartifacts/integration-testsDirectory for test results

Workflow Steps

The script performs these steps:

  1. Build & Pack: .\build.cmd -restore -pack -configuration $Configuration
  2. Install Workloads: .dotnet\dotnet build .\src\DotNet\DotNet.csproj -t:Install -c $Configuration
  3. Extract Version: Reads MAUI_PACKAGE_VERSION from installed packs
  4. Run Tests: .dotnet\dotnet test ... -filter "Category=$Category"

Example Usage

powershell
# Run WindowsTemplates tests
pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "WindowsTemplates"

# Run Samples tests
pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "Samples"

# Run multiple categories
pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -TestFilter "Category=Build|Category=Blazor"

Prerequisites

  • Windows for WindowsTemplates, macOS for macOSTemplates/RunOniOS/RunOnAndroid
  • .NET SDK (version from global.json)
  • Sufficient disk space for build artifacts
  • Local SDK and workloads must be provisioned first
Provisioning the Local SDK (Required First Time)

Before running integration tests, you must provision the local .NET SDK and MAUI workloads:

bash
# Step 1: Restore dotnet tools
dotnet tool restore

# Step 2: Provision local SDK and install workloads (~5 minutes)
dotnet cake --target=dotnet

# Step 3: Install MAUI local workloads
dotnet cake --target=dotnet-local-workloads

Verification:

bash
# Check SDK exists
ls .dotnet/dotnet

# Check MAUI SDK version
ls .dotnet/packs/Microsoft.Maui.Sdk

Note: The old ./build.sh --target=dotnet syntax no longer works. Use dotnet cake directly.

Output

  • Test results in TRX format at <ResultsDirectory>/
  • Build logs in artifacts/ directory
  • Console output with test pass/fail summary
Show full SKILL.md (197 more words)Show less

Troubleshooting

IssueSolution
"MAUI_PACKAGE_VERSION was not set"Ensure build step completed successfully
"Local .dotnet SDK not found"Run dotnet tool restore && dotnet cake --target=dotnet && dotnet cake --target=dotnet-local-workloads
Template not foundWorkload installation may have failed
Build failuresCheck artifacts/log/ for detailed build logs
"Cannot proceed with locked .dotnet folder"Kill processes using .dotnet: Get-Process | Where-Object { $_.Path -like "*\.dotnet\*" } | ForEach-Object { Stop-Process -Id $_.Id -Force }
Session times out / becomes invalidIntegration tests are long-running (15-60+ min). Run manually in a terminal window instead of via Copilot CLI
Tests take too longStart with Build category (fastest), then run others. Use -SkipBuild -SkipInstall if workloads are already installed
iOS tests fail with "mlaunch exited with 1"Simulator state issue. Run individual tests instead of the whole category (see below)
iOS simulator state errors (code 137/149)Reset simulator: xcrun simctl shutdown all && xcrun simctl erase all or run tests individually

Integration tests can take 15-60+ minutes depending on the category. For best results, run directly in a terminal:

powershell
cd D:\repos\dotnet\maui

# Option 1: Use the skill script
pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "Build" -SkipBuild -SkipInstall

# Option 2: Run dotnet test directly (if workloads already installed)
$env:MAUI_PACKAGE_VERSION = (Get-ChildItem .dotnet\packs\Microsoft.Maui.Sdk -Directory | Sort-Object Name -Descending | Select-Object -First 1).Name
.dotnet\dotnet test src\TestUtils\src\Microsoft.Maui.IntegrationTests --filter "Category=Build"
Running All Categories Sequentially
powershell
# Windows categories (run on Windows)
$categories = @("Build", "WindowsTemplates", "Blazor", "MultiProject", "Samples")
foreach ($cat in $categories) {
    Write-Host "Running $cat..." -ForegroundColor Cyan
    pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category $cat -SkipBuild -SkipInstall
}

Running all iOS tests together (-Category "RunOniOS") can cause simulator state issues. For better reliability, run tests individually:

powershell
# Available iOS tests
$iosTests = @(
    "RunOniOS_MauiDebug",
    "RunOniOS_MauiRelease",
    "RunOniOS_MauiReleaseTrimFull",
    "RunOniOS_BlazorDebug",
    "RunOniOS_BlazorRelease",
    "RunOniOS_MauiNativeAOT"
)

# Run a specific iOS test
pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -TestFilter "FullyQualifiedName~RunOniOS_MauiDebug" -SkipBuild -SkipInstall -SkipXcodeVersionCheck

# Run all iOS tests individually (more reliable than running category)
foreach ($test in $iosTests) {
    Write-Host "Running $test..." -ForegroundColor Cyan
    pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -TestFilter "FullyQualifiedName~$test" -SkipBuild -SkipInstall -SkipXcodeVersionCheck
}

© dotnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in .github/skills/run-integration-tests of dotnet/maui.

  • SKILL.md
  • scripts/Run-IntegrationTests.ps1

Open the folder on GitHubat commit 7d38fd0

Compare with similar skills

MAUI Integration Test Runner next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

MAUI Integration Test Runner compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
MAUI Integration Test Runner this skilldotnet/maui23k—~2.1kAutomated safety check: PassMIT
Maui AI DebuggingRedth/Maui.Gtk101—~4.1kAutomated safety check: PassMIT
Maui Safe Areadotnet/skills5.6k1 repos~3.2kAutomated safety check: PassMIT
Maui Aspiredavidortinau/maui-skills174—~1.3kAutomated safety check: PassMIT
Maui Safe Areadavidortinau/maui-skills174—~1.3kAutomated safety check: PassMIT
Maui Authenticationdavidortinau/maui-skills174—~1.5kAutomated safety check: PassMIT

Similar skills

  • Maui AI Debugging

    Redth/Maui.Gtk

    End-to-end workflow for building, deploying, inspecting, and debugging .NET MAUI and MAUI Blazor Hybrid apps as an AI agent.

    101 GitHub stars~4.1k tokensUpdated 5 mo ago
    MobileAuto-check passed
  • Maui Safe Area

    dotnet/skills

    Official

    .NET MAUI safe area and edge-to-edge layout guidance for .NET 10+.

    5.6k GitHub starsUsed in 1 repo~3.2k tokens
    MobileAuto-check passed
  • Maui Aspire

    davidortinau/maui-skills

    Guide for .NET MAUI apps consuming .NET Aspire-hosted backend services.

    174 GitHub stars~1.3k tokensUpdated 3 mo ago
    MobileAuto-check passed
  • Maui Safe Area

    davidortinau/maui-skills

    .NET MAUI safe area and edge-to-edge layout guidance for .NET 10+.

    174 GitHub stars~1.3k tokensUpdated 3 mo ago
    MobileAuto-check passed
  • Maui Authentication

    davidortinau/maui-skills

    Add authentication to .NET MAUI apps. An agent skill from davidortinau/maui-skills.

    174 GitHub stars~1.5k tokensUpdated 3 mo ago
    Backend & APIsAuto-check passed
  • Xamarin Android Migration

    davidortinau/maui-skills

    WORKFLOW SKILL - Guide for migrating Xamarin.Android native apps to .NET for Android.

    174 GitHub stars~1.4k tokensUpdated 3 mo ago
    MobileAuto-check passed

More from dotnet/maui

All 27 skills in this repo
  • Mines local Copilot CLI session logs for dotnet/maui to rank costly or failing runs, tag recurring failure modes, propose repo edits and emit guard evals.

    23k GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Official

    Reviews the tests added in a pull request for fix coverage, quality, edge cases and test type, and recommends lighter test types where they would do.

    23k GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Official

    Produces evidence-backed ship-readiness verdicts for .NET MAUI Servicing Releases and Previews, and drafts public-safe release handoff pages from the result.

    23k GitHub stars~15k tokensUpdated today
    Auto-check passed
  • Official

    Interprets pinned managed benchmark evidence for a dotnet/maui pull request and writes a narrative for the performance review workflow, without running or publishing anything.

    23k GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • PR Finalize

    dotnet/maui

    Official

    Checks that a pull request's title and description match its implementation and reviews the code for best practices before merge, without posting anything.

    23k GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Official

    Adds MAUI-specific guardrails on top of the maestro-cli skill and Maestro MCP tools for darc, BAR, and channel or feed lookups in dotnet/maui.

    23k GitHub stars~10k tokensUpdated today
    Auto-check passed

Questions about MAUI Integration Test Runner

What does MAUI Integration Test Runner do?

Builds and packs .NET MAUI, installs the local workloads and runs integration tests for templates, samples and end-to-end scenarios by category. ps1 performs four steps: it builds and packs the product, installs workloads from the repo's own SDK project, reads the package version from the installed packs, and runs dotnet test with a category filter. Categories include Build, WindowsTemplates, macOSTemplates, Blazor, MultiProject, Samples, AOT, RunOnAndroid and RunOniOS.

When should I use MAUI Integration Test Runner?

MAUI Integration Test Runner fits situations like: validating that a change does not break the project templates; running one integration category such as Samples or Blazor locally; checking the Android or iOS run scenarios on a Mac.

How do I install MAUI Integration Test Runner in Claude Code?

Run `npx skills add dotnet/maui --skill run-integration-tests -a claude-code`. Or copy the skill folder (.github/skills/run-integration-tests in dotnet/maui) into .claude/skills/run-integration-tests in your project. Claude Code loads it when a task matches its description.

How do I install MAUI Integration Test Runner in Codex?

Run `npx skills add dotnet/maui --skill run-integration-tests -a codex`. Or copy the skill folder (.github/skills/run-integration-tests in dotnet/maui) into .agents/skills/run-integration-tests in your project. Codex loads it when a task matches its description.

Can I use MAUI Integration Test Runner in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dotnet/maui --skill run-integration-tests -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/run-integration-tests, .gemini/skills/run-integration-tests, .github/skills/run-integration-tests and .opencode/skills/run-integration-tests in your project.

What does MAUI Integration Test Runner need to run?

Going by SKILL.md and its folder, MAUI Integration Test Runner needs PowerShell for the scripts in its folder and the command-line tools its instructions call (pwsh, dotnet and xcrun). Our summary lists: PowerShell; The repository's .NET build tooling; Windows for WindowsTemplates, macOS for the macOS and device scenarios. Compatibility (from SKILL.md): Requires Windows for WindowsTemplates category. macOS for macOSTemplates, RunOniOS, RunOnAndroid..

Does MAUI Integration Test Runner access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is MAUI Integration Test Runner safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does MAUI Integration Test Runner use?

MAUI Integration Test Runner is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does MAUI Integration Test Runner use?

About 2.1k tokens (SKILL.md is roughly 8.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to MAUI Integration Test Runner?

Skills that share tags, products or a category with MAUI Integration Test Runner: Maui AI Debugging (Redth/Maui.Gtk, 101 stars), Maui Safe Area (dotnet/skills, 5.6k stars), Maui Aspire (davidortinau/maui-skills, 174 stars) and Maui Safe Area (davidortinau/maui-skills, 174 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains MAUI Integration Test Runner?

dotnet (a GitHub organization, an official publisher) maintains it in dotnet/maui, which has 23,322 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 7, 2026.

Source: dotnet/maui on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.