Skip to content

Commit 1cb2705

Browse files
PureWeenCopilot
andauthored
Add Windows unpackaged device tests on Helix alongside packaged tests (dotnet#33702)
## Summary Adds Windows **unpackaged** (self-contained EXE) device test support on Helix alongside the existing **packaged** (MSIX) tests. Previously, unpackaged tests were disabled due to Windows App SDK bootstrap failures (exit code `0xC000027B`) on Helix workers that lack the pre-installed runtime. ## What changed ### WindowsAppSDKSelfContained for unpackaged builds - Created shared `src/Microsoft.Maui.TestUtils.DeviceTests.Runners.props` with `WindowsAppSDKSelfContained=true`, conditioned on `_MauiDeviceTestUnpackaged=true` (set by Cake during unpackaged builds only) - Each device test csproj imports it via `<Import Project="$(MauiSrcDirectory)Microsoft.Maui.TestUtils.DeviceTests.Runners.props" />` - This bundles the Windows App SDK runtime with the EXE so Helix workers don't need it pre-installed - The property does **not** apply to packaged (MSIX) builds or propagate to library dependencies > **Why not `Directory.Build.props`?** We tried centralizing via `Directory.Build.props` files in each device test folder, but importing the root `Directory.Build.props` chain pulls in Arcade SDK which redirects `BaseOutputPath` → `artifacts/bin/`, which also redirects `AppxPackageDir` — so `AppPackages/` no longer appears at the project directory where the zip step expects it, breaking packaged (MSIX) builds. The direct `<Import>` from csproj avoids this while still centralizing the property in one shared file (mirrors the existing `Runners.targets` pattern). ### Pipeline changes (`stage-device-tests.yml`) - Build both unpackaged and packaged for each project (unpackaged first, output saved, then packaged) - Zip archives now contain both `AppPackages/` (MSIX) and `Unpackaged/` (EXE) folders - Helix submission creates two work items per project: `{name}-packaged` and `{name}-unpackaged` - Proper `##vso` error/warning annotations for missing artifacts > **Why build unpackaged first?** Both builds use `dotnet publish` on the same project. The packaged build writes MSIX to `{ProjectDir}/AppPackages/` while the unpackaged build writes to `artifacts/bin/.../publish/`. Building unpackaged first and saving the publish output ensures both outputs survive for the zip step. ### Helix test runner (`run-windows-devicetests.cmd`) - New script that handles both modes: - **Packaged**: installs certificate, MSIX dependencies, and app package via `Add-AppxPackage` - **Unpackaged**: runs the self-contained EXE directly - Installs Windows App SDK runtime on Helix workers - Category-based test execution with configurable timeout ### Cake build script (`windows.cake`) - Passes `_MauiDeviceTestUnpackaged=true` and `WindowsPackageType=None` for unpackaged builds - Passes certificate thumbprint and `SelfContained=True` for packaged builds ## Files changed | File | Change | |------|--------| | `src/Microsoft.Maui.TestUtils.DeviceTests.Runners.props` | **New** — shared `WindowsAppSDKSelfContained` property | | `eng/pipelines/arcade/stage-device-tests.yml` | Build orchestration, zip creation, Helix submission | | `eng/devices/windows.cake` | Cake build properties for packaged/unpackaged | | `eng/devices/run-windows-devicetests.cmd` | **New** — Helix test runner script | | `eng/helix_xharness.proj` | Helix work item definitions | | 5 × `*.DeviceTests.csproj` | `<Import>` of shared `Runners.props` | ## Test results (Build 1297857) All 10 Windows Helix work items passed: | Project | Packaged | Unpackaged | |---------|----------|------------| | Controls.DeviceTests | ✅ | ✅ | | Core.DeviceTests | ✅ | ✅ | | Essentials.DeviceTests | ✅ | ✅ | | Graphics.DeviceTests | ✅ | ✅ | | MauiBlazorWebView.DeviceTests | ✅ | ✅ | Verified via Helix console logs that packaged tests install and launch MSIX, while unpackaged tests run the EXE directly — both code paths are exercised. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 5111ff3 commit 1cb2705

10 files changed

Lines changed: 148 additions & 111 deletions

File tree

eng/devices/run-windows-devicetests.cmd

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,13 @@ if %IS_PACKAGED%==1 (
223223
REM Unpackaged Test Execution
224224
REM ========================================
225225

226+
REM List contents to see what we have
227+
echo Listing %SCENARIO_DIR% contents:
228+
dir /s /b "%SCENARIO_DIR%" 2>nul | findstr /i "\.exe"
229+
226230
REM Find the executable - look for Microsoft.Maui.{SCENARIO}.exe specifically
227231
REM to avoid matching RestartAgent.exe or other helper executables
232+
REM The exe should be in the Unpackaged subfolder from the archive
228233
set TEST_EXE=
229234
set EXPECTED_EXE_NAME=Microsoft.Maui.%SCENARIO_NAME%.exe
230235
echo Looking for executable: !EXPECTED_EXE_NAME!
@@ -236,6 +241,8 @@ if %IS_PACKAGED%==1 (
236241
if not defined TEST_EXE (
237242
echo WARNING: Could not find !EXPECTED_EXE_NAME!, listing available executables:
238243
dir /s /b "%SCENARIO_DIR%\*.exe" 2>nul
244+
echo Listing all files in scenario dir:
245+
dir /s "%SCENARIO_DIR%" 2>nul
239246
echo ERROR: No executable found for unpackaged tests
240247
exit /b 1
241248
)
@@ -245,6 +252,7 @@ if %IS_PACKAGED%==1 (
245252
REM Set working directory to executable directory for unpackaged apps
246253
for %%i in ("!TEST_EXE!") do set EXE_DIR=%%~dpi
247254
echo Executable directory: !EXE_DIR!
255+
248256
pushd "!EXE_DIR!"
249257

250258
if %IS_CONTROLS_TEST%==1 (
@@ -255,6 +263,24 @@ if %IS_PACKAGED%==1 (
255263
set LAUNCH_ERRORLEVEL=!ERRORLEVEL!
256264
echo App exited with code: !LAUNCH_ERRORLEVEL!
257265

266+
REM Check if app crashed with Windows App SDK bootstrap error
267+
if "!LAUNCH_ERRORLEVEL!"=="-1073741189" (
268+
echo.
269+
echo ========================================
270+
echo ERROR: Exit code -1073741189 = 0xC000027B
271+
echo This is the Windows App SDK Bootstrap failure error.
272+
echo The app could not find the Windows App SDK runtime.
273+
echo.
274+
echo Possible causes:
275+
echo 1. WindowsAppSDKSelfContained=true was NOT applied during build
276+
echo 2. Windows App SDK DLLs were not included in publish output
277+
echo 3. Architecture mismatch between app and Windows App SDK
278+
echo.
279+
echo Check the DLL listing above to verify Windows App SDK DLLs are present.
280+
echo ========================================
281+
echo.
282+
)
283+
258284
echo Waiting 10 seconds for category discovery...
259285
timeout /t 10 /nobreak >nul
260286

eng/devices/windows.cake

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,15 +168,24 @@ Task("buildOnly")
168168
s.MSBuildSettings.Properties.Add("AppxPackageSigningEnabled", new List<string> { "True" });
169169
s.MSBuildSettings.Properties.Add("SelfContained", new List<string> { "True" });
170170
s.MSBuildSettings.Properties.Add("ExtraDefineConstants", new List<string> { "PACKAGED" });
171+
Information("=== PACKAGED BUILD PROPERTIES ===");
172+
Information(" SelfContained=True");
173+
Information(" PackageCertificateThumbprint={0}", certificateThumbprint);
171174
}
172175
else
173176
{
174177
// Apply correct build properties for unpackaged builds
175-
// Note: WindowsAppSDKSelfContained is set in project files (not here) to avoid
176-
// propagating to library project dependencies which don't support this property
178+
// _MauiDeviceTestUnpackaged signals the csproj files to set WindowsAppSDKSelfContained=true.
179+
// WindowsAppSDKSelfContained MUST NOT be passed via command line because it propagates to ALL
180+
// referenced projects (including library dependencies like Graphics.csproj) causing architecture errors.
177181
s.MSBuildSettings.Properties.Add("SelfContained", new List<string> { "True" });
178182
s.MSBuildSettings.Properties.Add("WindowsPackageType", new List<string> { "None" });
183+
s.MSBuildSettings.Properties.Add("_MauiDeviceTestUnpackaged", new List<string> { "true" });
179184
s.MSBuildSettings.Properties.Add("ExtraDefineConstants", new List<string> { "UNPACKAGED" });
185+
Information("=== UNPACKAGED BUILD PROPERTIES ===");
186+
Information(" SelfContained=True");
187+
Information(" WindowsPackageType=None");
188+
Information(" _MauiDeviceTestUnpackaged=true (triggers WindowsAppSDKSelfContained in csproj)");
180189
}
181190

182191
// Set correct launchSettings.json setting for packaged/unpackaged

eng/helix_xharness.proj

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,16 +209,14 @@
209209
</HelixWorkItem>
210210
</ItemGroup>
211211

212-
<!-- TODO: Unpackaged tests disabled - crash with 0xC000027B (Windows App SDK Bootstrap failure)
213-
on Helix. Investigating root cause. See PR #33328 for context.
212+
<!-- Windows Unpackaged tests -->
214213
<ItemGroup Condition="'$(TargetOS)' == 'windows'">
215214
<HelixWorkItem Include="%(_MAUIScenarioSearch.ScenarioDirectoryName)-unpackaged">
216215
<PayloadArchive>%(_MAUIScenarioSearch.PayloadDirectory).zip</PayloadArchive>
217216
<Command>call %HELIX_CORRELATION_PAYLOAD%\eng\devices\run-windows-devicetests.cmd %(_MAUIScenarioSearch.ScenarioDirectoryName) unpackaged %(_MAUIScenarioSearch.WindowsPackageId) $(TargetFrameworkToTest)</Command>
218217
<Timeout>02:00:00</Timeout>
219218
</HelixWorkItem>
220219
</ItemGroup>
221-
-->
222220

223221
<Message Text="Created @(XHarnessAppBundleToTest->Count()) iOS work items" Importance="high" Condition="'$(TargetOS)' == 'ios'" />
224222
<Message Text="Created @(HelixWorkItem->Count()) Windows work items" Importance="high" Condition="'$(TargetOS)' == 'windows'" />

eng/pipelines/arcade/stage-device-tests.yml

Lines changed: 89 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -439,8 +439,9 @@ stages:
439439
- script: dotnet tool restore
440440
displayName: 'Restore .NET tools'
441441
retryCountOnTaskFailure: 3
442+
442443
# Install .NET SDK and workloads using Arcade build script
443-
- script: ./build.cmd -restore -configuration Release
444+
- script: ./build.cmd -restore -configuration Release
444445
displayName: 'Install .NET'
445446
retryCountOnTaskFailure: 3
446447
env:
@@ -454,45 +455,115 @@ stages:
454455
- script: ./build.cmd -restore -build -configuration Release -projects Microsoft.Maui.BuildTasks.slnf
455456
displayName: Build the MSBuild Tasks
456457

458+
# Build Unpackaged tests FIRST (self-contained .exe for direct execution)
459+
# Must build unpackaged BEFORE packaged so we can save the publish output
460+
# before the packaged build overwrites the artifacts/bin directory
461+
- ${{ each project in parameters.windowsDeviceTestProjects }}:
462+
- script: dotnet cake eng/devices/windows.cake --target=buildOnly --project="$(Build.SourcesDirectory)/${{ project.path }}" --device=unpackaged --binlog="$(Build.SourcesDirectory)/artifacts/log/Debug" --configuration=Release --packageid=${{ project.packageId }} --verbosity=diagnostic
463+
displayName: Build ${{ project.name }} (Windows Unpackaged)
464+
retryCountOnTaskFailure: 1
465+
466+
# Save unpackaged publish output before packaged builds overwrite artifacts/bin
467+
- pwsh: |
468+
$artifactNames = @("Controls.DeviceTests", "Core.DeviceTests", "Graphics.DeviceTests", "Essentials.DeviceTests", "MauiBlazorWebView.DeviceTests")
469+
foreach ($name in $artifactNames) {
470+
$publishDir = Get-ChildItem -Path "$(Build.SourcesDirectory)/artifacts/bin/$name" -Filter "publish" -Recurse -Directory | Select-Object -First 1
471+
if ($publishDir) {
472+
$savedDir = "$(Build.SourcesDirectory)/artifacts/bin/saved_unpackaged_$name"
473+
Write-Host "Saving unpackaged output: $($publishDir.FullName) -> $savedDir"
474+
Copy-Item -Path $publishDir.FullName -Destination $savedDir -Recurse -Force
475+
} else {
476+
Write-Host "Warning: No publish folder found for $name"
477+
}
478+
}
479+
displayName: Save unpackaged publish output
480+
457481
# Build Windows device tests using Cake script (Packaged/MSIX builds)
458-
# TODO: Unpackaged builds disabled - apps crash on Helix with 0xC000027B
459-
# (Windows App SDK Bootstrap failure). Investigating root cause. See PR #33328.
482+
# Built AFTER unpackaged so AppPackages directory exists when zip step runs
460483
- ${{ each project in parameters.windowsDeviceTestProjects }}:
461484
- script: dotnet cake eng/devices/windows.cake --target=buildOnly --project="$(Build.SourcesDirectory)/${{ project.path }}" --device=packaged --binlog="$(Build.SourcesDirectory)/artifacts/log/Debug" --configuration=Release --packageid=${{ project.packageId }} --verbosity=diagnostic
462485
displayName: Build ${{ project.name }} (Windows Packaged)
463486
retryCountOnTaskFailure: 1
464487

465488
# Create zip archives for each device test project
466-
# The MSIX packages are built in the project's AppPackages directory, not artifacts/bin
489+
# Include both packaged (AppPackages with MSIX) and unpackaged (publish folder with .exe)
467490
- pwsh: |
468491
# Ensure artifacts/bin directory exists
469492
$artifactsDir = "$(Build.SourcesDirectory)/artifacts/bin"
470493
New-Item -ItemType Directory -Force -Path $artifactsDir | Out-Null
471494
472-
# Archive each project's AppPackages directory
495+
# Project configurations with artifact bin paths
473496
$projects = @(
474-
@{ Name = "Controls.DeviceTests"; Dir = "$(Build.SourcesDirectory)/src/Controls/tests/DeviceTests" },
475-
@{ Name = "Core.DeviceTests"; Dir = "$(Build.SourcesDirectory)/src/Core/tests/DeviceTests" },
476-
@{ Name = "Graphics.DeviceTests"; Dir = "$(Build.SourcesDirectory)/src/Graphics/tests/DeviceTests" },
477-
@{ Name = "Essentials.DeviceTests"; Dir = "$(Build.SourcesDirectory)/src/Essentials/test/DeviceTests" },
478-
@{ Name = "MauiBlazorWebView.DeviceTests"; Dir = "$(Build.SourcesDirectory)/src/BlazorWebView/tests/DeviceTests" }
497+
@{ Name = "Controls.DeviceTests"; ProjectDir = "$(Build.SourcesDirectory)/src/Controls/tests/DeviceTests"; ArtifactDir = "$(Build.SourcesDirectory)/artifacts/bin/Controls.DeviceTests" },
498+
@{ Name = "Core.DeviceTests"; ProjectDir = "$(Build.SourcesDirectory)/src/Core/tests/DeviceTests"; ArtifactDir = "$(Build.SourcesDirectory)/artifacts/bin/Core.DeviceTests" },
499+
@{ Name = "Graphics.DeviceTests"; ProjectDir = "$(Build.SourcesDirectory)/src/Graphics/tests/DeviceTests"; ArtifactDir = "$(Build.SourcesDirectory)/artifacts/bin/Graphics.DeviceTests" },
500+
@{ Name = "Essentials.DeviceTests"; ProjectDir = "$(Build.SourcesDirectory)/src/Essentials/test/DeviceTests"; ArtifactDir = "$(Build.SourcesDirectory)/artifacts/bin/Essentials.DeviceTests" },
501+
@{ Name = "MauiBlazorWebView.DeviceTests"; ProjectDir = "$(Build.SourcesDirectory)/src/BlazorWebView/tests/DeviceTests"; ArtifactDir = "$(Build.SourcesDirectory)/artifacts/bin/MauiBlazorWebView.DeviceTests" }
479502
)
480503
481504
foreach ($project in $projects) {
482-
$appPackagesDir = "$($project.Dir)/AppPackages"
505+
Write-Host "============================================"
506+
Write-Host "Processing $($project.Name)..."
507+
Write-Host "============================================"
508+
509+
# Look for AppPackages (MSIX) at project directory
510+
$appPackagesDir = "$($project.ProjectDir)/AppPackages"
511+
483512
$zipPath = "$artifactsDir/$($project.Name).zip"
484513
514+
# Create a temp folder to consolidate packaged and unpackaged outputs
515+
$tempDir = "$artifactsDir/temp_$($project.Name)"
516+
New-Item -ItemType Directory -Force -Path $tempDir | Out-Null
517+
518+
$hasContent = $false
519+
520+
# Copy packaged output (AppPackages with MSIX)
485521
if (Test-Path $appPackagesDir) {
486-
Write-Host "Creating archive for $($project.Name) from $appPackagesDir..."
487-
Compress-Archive -Path "$appPackagesDir" -DestinationPath $zipPath -Force
488-
Write-Host "Created $zipPath"
522+
Copy-Item -Path $appPackagesDir -Destination "$tempDir/AppPackages" -Recurse
523+
$msix = Get-ChildItem -Path "$tempDir/AppPackages" -Recurse -Filter "*.msix" | Select-Object -First 1
524+
if ($msix) {
525+
Write-Host " Packaged: $($msix.Name)"
526+
$hasContent = $true
527+
}
528+
} else {
529+
Write-Host "##vso[task.logissue type=warning]AppPackages not found at $appPackagesDir"
530+
}
531+
532+
# Copy unpackaged output from saved location (saved before packaged build overwrites artifacts/bin)
533+
$savedDir = "$artifactsDir/saved_unpackaged_$($project.Name)"
534+
if (!(Test-Path $savedDir)) {
535+
# Fallback: try the original publish folder in artifacts/bin
536+
$publishDir = Get-ChildItem -Path "$($project.ArtifactDir)" -Filter "publish" -Recurse -Directory | Select-Object -First 1
537+
if ($publishDir) { $savedDir = $publishDir.FullName }
538+
}
539+
if (Test-Path $savedDir) {
540+
Copy-Item -Path $savedDir -Destination "$tempDir/Unpackaged" -Recurse
541+
$exe = Get-ChildItem -Path "$tempDir/Unpackaged" -Filter "*.exe" | Where-Object { $_.Name -like "Microsoft.Maui.*" } | Select-Object -First 1
542+
if ($exe) {
543+
Write-Host " Unpackaged: $($exe.Name)"
544+
$hasContent = $true
545+
}
489546
490-
$msix = Get-ChildItem -Path $appPackagesDir -Recurse -Filter "*.msix" | Select-Object -First 1
491-
if ($msix) { Write-Host " Contains MSIX: $($msix.Name)" }
492-
else { Write-Host " WARNING: No MSIX found!" }
547+
# Validate critical DLLs are present
548+
$winui = Get-ChildItem -Path "$tempDir/Unpackaged" -Filter "Microsoft.ui.xaml.dll" -Recurse 2>$null
549+
if (!$winui) {
550+
Write-Host "##vso[task.logissue type=error]Microsoft.ui.xaml.dll missing from unpackaged output for $($project.Name)! Tests will crash with 0xC000027B."
551+
}
493552
} else {
494-
Write-Host "Warning: $appPackagesDir not found for $($project.Name)"
553+
Write-Host "##vso[task.logissue type=warning]Unpackaged output not found for $($project.Name)"
495554
}
555+
556+
if ($hasContent) {
557+
Write-Host "Creating archive $zipPath..."
558+
Compress-Archive -Path "$tempDir/*" -DestinationPath $zipPath -Force
559+
$archiveSize = (Get-Item $zipPath).Length
560+
Write-Host "Created $zipPath - Size: $([math]::Round($archiveSize / 1MB, 2)) MB"
561+
} else {
562+
Write-Host "##vso[task.logissue type=error]No content found for $($project.Name) - neither AppPackages nor publish output found."
563+
}
564+
565+
# Cleanup temp folder
566+
Remove-Item -Path $tempDir -Recurse -Force
496567
}
497568
displayName: Create payload archives
498569
@@ -558,91 +629,3 @@ stages:
558629
IncludeDotNetCli: true
559630
DisplayNamePrefix: DeviceTestsWindows
560631
WorkItemTimeout: 04:00:00
561-
562-
# Windows Unpackaged Tests via Cake (unpackaged doesn't work on Helix)
563-
# This runs separately from Helix using the existing Cake infrastructure
564-
- ${{ if eq(parameters.runWindowsTests, true) }}:
565-
- stage: devicetests_windows_unpackaged
566-
displayName: ${{ parameters.TargetFrameworkVersion }} Windows Unpackaged Tests (Cake)
567-
dependsOn: []
568-
jobs:
569-
- template: /eng/pipelines/common/device-tests-jobs.yml@self
570-
parameters:
571-
platform: windows
572-
timeoutInMinutes: 240
573-
pool: ${{ parameters.windowsTestPool }}
574-
versions: [ 'unpackaged' ]
575-
targetFrameworkVersion:
576-
tfm: ${{ parameters.TargetFrameworkVersion }}
577-
dependsOn: ''
578-
project:
579-
name: essentials_unpackaged
580-
desc: Essentials unpackaged
581-
path: $(System.DefaultWorkingDirectory)/src/Essentials/test/DeviceTests/Essentials.DeviceTests.csproj
582-
packageid: com.microsoft.maui.essentials.devicetests
583-
configuration: Debug
584-
skipProvisioning: true
585-
- template: /eng/pipelines/common/device-tests-jobs.yml@self
586-
parameters:
587-
platform: windows
588-
timeoutInMinutes: 240
589-
pool: ${{ parameters.windowsTestPool }}
590-
versions: [ 'unpackaged' ]
591-
targetFrameworkVersion:
592-
tfm: ${{ parameters.TargetFrameworkVersion }}
593-
dependsOn: ''
594-
project:
595-
name: graphics_unpackaged
596-
desc: Graphics unpackaged
597-
path: $(System.DefaultWorkingDirectory)/src/Graphics/tests/DeviceTests/Graphics.DeviceTests.csproj
598-
packageid: com.microsoft.maui.graphics.devicetests
599-
configuration: Debug
600-
skipProvisioning: true
601-
- template: /eng/pipelines/common/device-tests-jobs.yml@self
602-
parameters:
603-
platform: windows
604-
timeoutInMinutes: 240
605-
pool: ${{ parameters.windowsTestPool }}
606-
versions: [ 'unpackaged' ]
607-
targetFrameworkVersion:
608-
tfm: ${{ parameters.TargetFrameworkVersion }}
609-
dependsOn: ''
610-
project:
611-
name: core_unpackaged
612-
desc: Core unpackaged
613-
path: $(System.DefaultWorkingDirectory)/src/Core/tests/DeviceTests/Core.DeviceTests.csproj
614-
packageid: com.microsoft.maui.core.devicetests
615-
configuration: Debug
616-
skipProvisioning: true
617-
- template: /eng/pipelines/common/device-tests-jobs.yml@self
618-
parameters:
619-
platform: windows
620-
timeoutInMinutes: 240
621-
pool: ${{ parameters.windowsTestPool }}
622-
versions: [ 'unpackaged' ]
623-
targetFrameworkVersion:
624-
tfm: ${{ parameters.TargetFrameworkVersion }}
625-
dependsOn: ''
626-
project:
627-
name: controls_unpackaged
628-
desc: Controls unpackaged
629-
path: $(System.DefaultWorkingDirectory)/src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj
630-
packageid: com.microsoft.maui.controls.devicetests
631-
configuration: Debug
632-
skipProvisioning: true
633-
- template: /eng/pipelines/common/device-tests-jobs.yml@self
634-
parameters:
635-
platform: windows
636-
timeoutInMinutes: 240
637-
pool: ${{ parameters.windowsTestPool }}
638-
versions: [ 'unpackaged' ]
639-
targetFrameworkVersion:
640-
tfm: ${{ parameters.TargetFrameworkVersion }}
641-
dependsOn: ''
642-
project:
643-
name: blazorwebview_unpackaged
644-
desc: BlazorWebView unpackaged
645-
path: $(System.DefaultWorkingDirectory)/src/BlazorWebView/tests/DeviceTests/MauiBlazorWebView.DeviceTests.csproj
646-
packageid: Microsoft.Maui.MauiBlazorWebView.DeviceTests
647-
configuration: Debug
648-
skipProvisioning: true

src/BlazorWebView/tests/DeviceTests/MauiBlazorWebView.DeviceTests.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
<RuntimeIdentifier Condition="$(TargetFramework.Contains('-maccatalyst')) and '$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture)' == 'arm64'">maccatalyst-arm64</RuntimeIdentifier>
1616
</PropertyGroup>
1717

18+
<Import Project="$(MauiSrcDirectory)Microsoft.Maui.TestUtils.DeviceTests.Runners.props" />
19+
1820
<PropertyGroup>
1921
<ApplicationTitle>BlazorWebView Tests</ApplicationTitle>
2022
<ApplicationId>com.microsoft.maui.mauiblazorwebview.devicetests</ApplicationId>

src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
<ExcludeMicrosoftNetTestSdk>true</ExcludeMicrosoftNetTestSdk>
1818
</PropertyGroup>
1919

20+
<Import Project="$(MauiSrcDirectory)Microsoft.Maui.TestUtils.DeviceTests.Runners.props" />
21+
2022
<PropertyGroup>
2123
<ApplicationTitle>Controls Tests</ApplicationTitle>
2224
<ApplicationId>com.microsoft.maui.controls.devicetests</ApplicationId>

0 commit comments

Comments
 (0)