dotnet/maui · error · Exception
UI Test application path not specified.
Error message
UI Test application path not specified.
What it means
Thrown in ExecutePrepareUITests when GetTestApplications returns no candidates — the UI test app build (the .app/.ipa for the iOS test host) produced nothing matching the requested config/tfm/rid. This is a build-output discovery failure, not a test failure.
Source
Thrown at eng/devices/ios.cake:226
}
};
});
}
void ExecutePrepareUITests(string project, string app, string device, string resultsDir, string binDir, string config, string tfm, string rid, string ver, string toolPath, bool headless)
{
Information("Preparing UI Tests...");
Information($"Testing Device: {device}");
Information($"Testing App Project: {app}");
Information($"USE_NATIVE_AOT: {USE_NATIVE_AOT}");
var testApp = GetTestApplications(app, device, config, tfm, rid).FirstOrDefault();
Information($"Testing App found: {testApp}");
if (string.IsNullOrEmpty(testApp))
{
throw new Exception("UI Test application path not specified.");
}
InstallIpa(testApp, "", device, resultsDir, ver, toolPath, headless);
}
void ExecuteUITests(string project, string app, string device, string resultsDir, string binDir, string config, string tfm, string rid, string ver, string toolPath)
{
Information($"Results Directory: {resultsDir}");
Information("Build UITests project {0}", project);
var name = System.IO.Path.GetFileNameWithoutExtension(project);
var binlog = $"{binDir}/{name}-{config}-ios.binlog";
var resultsFileName = SanitizeTestResultsFilename($"{name}-{config}-ios-{testFilter}");
var appiumLog = $"{binDir}/appium_ios_{resultsFileName}.log";
DotNetBuild(project, new DotNetBuildSettings
{View on GitHub (pinned to f377ff1c5e)
Solutions
- Run the app build target before uitest-prepare, using the same --configuration, --tfm, and --rid values.
- Inspect the Information line 'Testing App found:' which prints the resolved testApp — if it prints empty, GetTestApplications found nothing.
- Verify the app project produces an iOS bundle (.app for simulator, .ipa for device) and that BuildIpa=true where needed.
- If USE_NATIVE_AOT is on, confirm configuration is Release (see error 24) since NativeAOT Debug builds are rejected earlier.
Defensive patterns
Strategy: validation
Validate before calling
// Verify app output exists before preparing UI tests
var testApp = GetTestApplications(app, device, config, tfm, rid).FirstOrDefault();
if (string.IsNullOrEmpty(testApp))
throw new Exception($"No built app found for {app} ({config}/{tfm}/{rid}). Build the app project first."); Prevention
- Keep configuration/tfm/rid identical between the app build and uitest-prepare.
- Confirm the app project emits an iOS bundle (.app/.ipa) for the target.
- Run the build target before uitest-prepare in CI.
When it happens
Trigger: Calling the uitest-prepare target before building the app; building the app project with a different configuration/tfm/rid than passed here; the app build failed silently upstream; GetTestApplications glob not matching the produced bundle extension.
Common situations: Configuration mismatch (Debug vs Release) between the build and prepare steps; switching runtime identifiers so output lands under a different rid folder; the app project not set to produce an IPA; a clean wiping the bin dir between build and prepare.
Related errors
- Error: Running UI tests with NativeAOT is only supported in
- Error: Building dotnet-samples with NativeAOT is only suppor
- No test assembly found.
- No test results found.
- No device was found to install the app on. See the Setup met
AI-assisted analysis of dotnet/maui@f377ff1c5e (2026-08-13).
Data as JSON: /api/errors/6cd77357255877a3.
Report an issue: GitHub.