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

  1. Run the app build target before uitest-prepare, using the same --configuration, --tfm, and --rid values.
  2. Inspect the Information line 'Testing App found:' which prints the resolved testApp — if it prints empty, GetTestApplications found nothing.
  3. Verify the app project produces an iOS bundle (.app for simulator, .ipa for device) and that BuildIpa=true where needed.
  4. 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

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


AI-assisted analysis of dotnet/maui@f377ff1c5e (2026-08-13). Data as JSON: /api/errors/6cd77357255877a3. Report an issue: GitHub.