diff --git a/build-tools/automation/MauiR2RHelix.proj b/build-tools/automation/MauiR2RHelix.proj index 6abba14c266..0d8f7b74df5 100644 --- a/build-tools/automation/MauiR2RHelix.proj +++ b/build-tools/automation/MauiR2RHelix.proj @@ -4,6 +4,7 @@ true false true + true tests/android/maui-r2r/ WorkItem $(HelixWorkItemName) @@ -18,10 +19,53 @@ - - $(WorkItemDirectory) - $(WorkItemCommand) - $(WorkItemTimeout) - + + $(WorkItemApk) + $(AndroidPackageName) + $(WorkItemTimeout) + + diff --git a/build-tools/automation/yaml-templates/run-maui-r2r-helix-matrix.yaml b/build-tools/automation/yaml-templates/run-maui-r2r-helix-matrix.yaml index db39c7c841c..f2b02787453 100644 --- a/build-tools/automation/yaml-templates/run-maui-r2r-helix-matrix.yaml +++ b/build-tools/automation/yaml-templates/run-maui-r2r-helix-matrix.yaml @@ -159,6 +159,9 @@ steps: $packageName = '${{ testCase.packageName }}' $apkName = "MauiR2R-${{ testCase.name }}-Signed.apk" + if (Test-Path $payloadDirectory) { + Remove-Item -LiteralPath $payloadDirectory -Recurse -Force + } New-Item -ItemType Directory -Force -Path $payloadDirectory | Out-Null $apk = Get-ChildItem $projectDirectory -Recurse -Filter '*-Signed.apk' | Where-Object { $_.FullName -like "*\bin\Release\*$runtimeIdentifier*" } | @@ -169,67 +172,6 @@ steps: } Copy-Item -LiteralPath $apk.FullName -Destination (Join-Path $payloadDirectory $apkName) -Force - - $sdkCandidates = @( - $env:ANDROID_HOME, - $env:ANDROID_SDK_ROOT, - $env:AndroidSdkDirectory, - $(if ($env:USERPROFILE) { Join-Path $env:USERPROFILE 'android-toolchain\sdk' }), - $(if ($env:HOME) { Join-Path $env:HOME 'android-toolchain\sdk' }) - ) | Where-Object { $_ -and (Test-Path (Join-Path $_ 'platform-tools\adb.exe')) } - $androidSdk = $sdkCandidates | Select-Object -First 1 - if (-not $androidSdk) { - throw "Could not find Android SDK platform-tools. Tried ANDROID_HOME, ANDROID_SDK_ROOT, AndroidSdkDirectory, and user android-toolchain paths." - } - - $platformTools = Join-Path $androidSdk 'platform-tools' - $payloadPlatformTools = Join-Path $payloadDirectory 'platform-tools' - New-Item -ItemType Directory -Force -Path $payloadPlatformTools | Out-Null - Copy-Item -Path (Join-Path $platformTools '*') -Destination $payloadPlatformTools -Recurse -Force - - $script = @" - @echo on - setlocal - set "UPLOAD_DIR=%HELIX_WORKITEM_UPLOAD_ROOT%" - if "%UPLOAD_DIR%"=="" set "UPLOAD_DIR=%~dp0" - if not exist "%UPLOAD_DIR%" mkdir "%UPLOAD_DIR%" - echo Scenario: ${{ testCase.displayName }} > "%UPLOAD_DIR%\scenario-${{ testCase.name }}.txt" - echo RuntimeIdentifier: $runtimeIdentifier >> "%UPLOAD_DIR%\scenario-${{ testCase.name }}.txt" - echo PackageName: $packageName >> "%UPLOAD_DIR%\scenario-${{ testCase.name }}.txt" - echo APK: $apkName >> "%UPLOAD_DIR%\scenario-${{ testCase.name }}.txt" - set "ADB=%~dp0platform-tools\adb.exe" - if not exist "%ADB%" ( - echo Could not find payload adb.exe at "%ADB%" - dir "%~dp0" /s - exit /b 1 - ) - "%ADB%" version || exit /b 1 - "%ADB%" devices -l > "%UPLOAD_DIR%\adb-devices-${{ testCase.name }}.log" - type "%UPLOAD_DIR%\adb-devices-${{ testCase.name }}.log" - "%ADB%" wait-for-device || exit /b 1 - "%ADB%" shell getprop > "%UPLOAD_DIR%\getprop-${{ testCase.name }}.log" - "%ADB%" shell getprop ro.product.cpu.abi - "%ADB%" shell getprop ro.product.cpu.abilist - "%ADB%" shell getprop ro.build.fingerprint - "%ADB%" uninstall $packageName - "%ADB%" install -r "%~dp0$apkName" || exit /b 1 - "%ADB%" shell pm path $packageName > "%UPLOAD_DIR%\pm-path-${{ testCase.name }}.log" - "%ADB%" shell dumpsys package $packageName > "%UPLOAD_DIR%\dumpsys-package-${{ testCase.name }}.log" - "%ADB%" shell logcat -c - "%ADB%" shell monkey -p $packageName -c android.intent.category.LAUNCHER 1 || exit /b 1 - ping -n 11 127.0.0.1 > nul - "%ADB%" shell pidof $packageName - if errorlevel 1 ( - "%ADB%" logcat -d -b all > "%UPLOAD_DIR%\logcat-${{ testCase.name }}.log" - "%ADB%" uninstall $packageName - exit /b 1 - ) - "%ADB%" logcat -d -b all > "%UPLOAD_DIR%\logcat-${{ testCase.name }}.log" - "%ADB%" uninstall $packageName - exit /b 0 - "@ - - Set-Content -LiteralPath (Join-Path $payloadDirectory 'run-maui-r2r.cmd') -Value $script -Encoding ASCII displayName: Prepare MAUI R2R Helix payload - ${{ testCase.displayName }} - template: /build-tools/automation/yaml-templates/run-dotnet-preview.yaml @@ -290,6 +232,7 @@ steps: $binlogPath = Join-Path $logsDirectory "SendMauiR2R-$($case.name)ToHelix.binlog" $helixResultsDestinationDir = Join-Path (Join-Path $logsDirectory 'helix-results') $case.name $workItemDirectory = Join-Path $payloadRootDirectory $case.name + $workItemApk = Join-Path $workItemDirectory "MauiR2R-$($case.name)-Signed.apk" Remove-Item -LiteralPath $scriptPath, $outputPath, $errorPath -Force -ErrorAction Ignore @@ -307,9 +250,9 @@ steps: "`$env:HelixWorkItemName = '$($case.workItemName)'" "`$env:HelixResultsDestinationDir = '$helixResultsDestinationDir'" "`$env:HelixAccessToken = ''" - "`$env:WorkItemDirectory = '$workItemDirectory'" - "`$env:WorkItemCommand = 'run-maui-r2r.cmd'" - "`$env:WorkItemTimeout = '00:10:00'" + "`$env:WorkItemApk = '$workItemApk'" + "`$env:AndroidPackageName = '$($case.packageName)'" + "`$env:WorkItemTimeout = '00:20:00'" "`$env:WaitForWorkItemCompletion = 'true'" "`$env:Creator = 'dotnet-android'" "& '$dotnetPath' msbuild '$helixProject' /p:TreatWarningsAsErrors=false /t:Test /bl:'$binlogPath'" diff --git a/eng/Versions.props b/eng/Versions.props index 65909046e90..44395a2452e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -9,6 +9,7 @@ 11.0.0-beta.26060.102 11.0.0-beta.26452.117 + 11.0.0-prerelease.26428.1 11.0.100-preview.4.26215.121 11.0.100-preview.4.26215.121 $(MicrosoftNETWorkloadMonoToolChainCurrentManifest110100preview4PackageVersion)