parameters: - name: configuration type: string default: "Release" - name: platform type: string default: "" - name: inputArtifactStem type: string default: "" - name: useLatestWebView2 type: boolean default: false - name: buildSource type: string default: "latestMainOfficialBuild" displayName: "Build Source" - name: specificBuildId type: string default: "xxxx" displayName: "Build ID (for specific builds)" - name: uiTestModules type: object default: [] - name: installMode type: string default: 'machine' values: - 'machine' - 'peruser' - name: jobSuffix type: string default: '' jobs: - job: Test${{ parameters.platform }}${{ parameters.configuration }}${{ parameters.jobSuffix }} displayName: Test ${{ parameters.platform }} ${{ parameters.configuration }}${{ parameters.jobSuffix }} timeoutInMinutes: 300 variables: ${{ if or(eq(parameters.platform, 'x64Win10'), eq(parameters.platform, 'x64Win11')) }}: BuildPlatform: x64 ${{ else }}: BuildPlatform: ${{ parameters.platform }} TestPlatform: ${{ parameters.platform }} BuildConfiguration: ${{ parameters.configuration }} SrcPath: $(Build.Repository.LocalPath) TestArtifactsName: build-${{ variables.BuildPlatform }}-${{ parameters.configuration }}${{ parameters.inputArtifactStem }} pool: ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: ${{ if ne(parameters.platform, 'ARM64') }}: name: SHINE-INT-Testing-x64 ${{ if eq(parameters.platform, 'x64Win11') }}: demands: ImageOverride -equals SHINE-W11-Testing ${{ else }}: name: SHINE-INT-Testing-arm64 ${{ else }}: ${{ if ne(parameters.platform, 'ARM64') }}: name: SHINE-OSS-Testing-x64 ${{ if eq(parameters.platform, 'x64Win11') }}: demands: ImageOverride -equals SHINE-W11-Testing ${{ else }}: name: SHINE-OSS-Testing-arm64 steps: - checkout: self submodules: false clean: true fetchDepth: 1 fetchTags: false - ${{ if eq(parameters.useLatestWebView2, true) }}: - powershell: | $edge_url = 'https://go.microsoft.com/fwlink/?linkid=2084649&Channel=Canary&language=en' $timeout = New-TimeSpan -Minutes 6 $timeoutSeconds = [int]$timeout.TotalSeconds $command = { Invoke-WebRequest -Uri $using:edge_url -OutFile $(Pipeline.Workspace)\MicrosoftEdgeSetup.exe Write-Host "##[command]Installing Canary channel of Microsoft Edge" Start-Process $(Pipeline.Workspace)\MicrosoftEdgeSetup.exe -ArgumentList '/silent /install' -Wait } $job = Start-Job -ScriptBlock $command Wait-Job $job -Timeout $timeoutSeconds if ($job.State -eq "Running") { Stop-Job $job Write-Host "##[warning]The job was stopped because it exceeded the time limit." } displayName: "Install the latest MSEdge Canary" - script: reg add "HKLM\Software\Policies\Microsoft\Edge\WebView2\ReleaseChannels" /v PowerToys.exe /t REG_SZ /d "3" displayName: "Enable WebView2 Canary Channel" - ${{ if ne(parameters.platform, 'arm64') }}: - download: current displayName: Download artifacts artifact: $(TestArtifactsName) patterns: |- ** !**\*.pdb !**\*.lib - ${{ else }}: - template: steps-download-artifacts-with-azure-cli.yml parameters: artifactName: $(TestArtifactsName) - template: steps-ensure-dotnet-version.yml parameters: sdk: true version: '9.0' - pwsh: |- & '$(build.sourcesdirectory)\.pipelines\InstallWinAppDriver.ps1' displayName: Download and install WinAppDriver - ${{ if ne(parameters.buildSource, 'buildNow') }}: - task: DownloadPipelineArtifact@2 inputs: buildType: 'specific' project: 'Dart' definition: '76541' ${{ if eq(parameters.buildSource, 'specificBuildId') }}: buildVersionToDownload: 'specific' buildId: '${{ parameters.specificBuildId }}' ${{ else }}: buildVersionToDownload: 'latestFromBranch' branchName: 'refs/heads/main' artifactName: 'build-$(BuildPlatform)-Release' targetPath: '$(Build.ArtifactStagingDirectory)' ${{ if eq(parameters.installMode, 'peruser') }}: patterns: | **/PowerToysUserSetup*.exe ${{ else }}: patterns: | **/PowerToysSetup*.exe - ${{ if ne(parameters.buildSource, 'buildNow') }}: - ${{ if eq(parameters.installMode, 'peruser') }}: - pwsh: |- & "$(build.sourcesdirectory)\.pipelines\installPowerToys.ps1" -InstallMode "PerUser" displayName: Install PowerToys (Per-User) - ${{ if eq(parameters.installMode, 'machine') }}: - pwsh: |- & "$(build.sourcesdirectory)\.pipelines\installPowerToys.ps1" -InstallMode "Machine" displayName: Install PowerToys (Machine-Level) - ${{ if ne(parameters.platform, 'arm64') }}: - task: ScreenResolutionUtility@1 inputs: displaySettings: 'optimal' - script: | dotnet test $(Build.SourcesDirectory)\src\modules\fancyzones\FancyZones.UITests\FancyZones.UITests.csproj --no-build -c $(BuildConfiguration) -p:Platform=$(BuildPlatform) dotnet test $(Build.SourcesDirectory)\src\modules\fancyzones\FancyZonesEditor.UITests\FancyZonesEditor.UITests.csproj --no-build -c $(BuildConfiguration) -p:Platform=$(BuildPlatform) displayName: "Run UI Tests"