mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-10 05:06:36 +02:00
### Summary This pull request includes the following updates: 1. Improvements and stabilization of the UI automation framework 2. Setup of the UI automation pipeline 3. Add UI test cases for FancyZones 4. Add UI test cases for MouseUtils 5. Improvements of Hosts Editor UI tests --- ### Related Links - **Current Release checklist coverage**: https://github.com/microsoft/PowerToys/blob/feature/UITestAutomation/src/common/UITestAutomation/Doc/ui-automation-cover-list.md - **UI Automation pipeline**: https://microsoft.visualstudio.com/Dart/_build?definitionId=161438&_a=summary --------- Signed-off-by: Shawn Yuan <shuai.yuan.zju@gmail.com> Signed-off-by: Shawn Yuan <shuaiyuan@microsoft.com> Co-authored-by: Jerry Xu <n.xu@outlook.com> Co-authored-by: Zhaopeng Wang <zhaopengwang@microsoft.com> Co-authored-by: Xiaofeng Wang (from Dev Box) <xiaofengwang@microsoft.com> Co-authored-by: Mengyuan <162882040+chenmy77@users.noreply.github.com> Co-authored-by: yaqingmi <miyaqing01@gmail.com> Co-authored-by: Clint Rutkas <clint@rutkas.com> Co-authored-by: Yaqing Mi (from Dev Box) <yaqingmi@microsoft.com> Co-authored-by: Kai Tao <69313318+vanzue@users.noreply.github.com> Co-authored-by: zhaopeng wang <33367956+wang563681252@users.noreply.github.com> Co-authored-by: Laszlo Nemeth <57342539+donlaci@users.noreply.github.com> Co-authored-by: RokyZevon <12629919+RokyZevon@users.noreply.github.com> Co-authored-by: Yu Leng <42196638+moooyo@users.noreply.github.com> Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com> Co-authored-by: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com> Co-authored-by: Gordon Lam <73506701+yeelam-gordon@users.noreply.github.com> Co-authored-by: ruslanlap <106077551+ruslanlap@users.noreply.github.com> Co-authored-by: Muhammad Danish <mdanishkhdev@gmail.com> Co-authored-by: Bennett Blodinger <benwa@users.noreply.github.com> Co-authored-by: Jaime Bernardo <jaime@janeasystems.com> Co-authored-by: Ionuț Manța <ionut@janeasystems.com> Co-authored-by: Hao Liu <liuhaobupt@163.com> Co-authored-by: OlegHarchevkin <40352094+OlegKharchevkin@users.noreply.github.com> Co-authored-by: dcog989 <89043002+dcog989@users.noreply.github.com> Co-authored-by: PesBandi <127593627+PesBandi@users.noreply.github.com> Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com> Co-authored-by: vanzue <vanzue@outlook.com> Co-authored-by: Typpi <20943337+Nick2bad4u@users.noreply.github.com> Co-authored-by: Mike Griese <migrie@microsoft.com> Co-authored-by: Carlos Zamora <carlos.zamora@microsoft.com> Co-authored-by: Abhyudit <64366765+bitmap4@users.noreply.github.com> Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> Co-authored-by: Ved Nig <vednig12@outlook.com> Co-authored-by: Niels Laute <niels.laute@live.nl> Co-authored-by: Aung Khaing Khant <aungkhaingkhant.dev@gmail.com> Co-authored-by: Aung Khaing Khant <aungkhaingkhant@advent-soft.com> Co-authored-by: Dustin L. Howett <duhowett@microsoft.com> Co-authored-by: leileizhang <leilzh@microsoft.com> Co-authored-by: Dustin L. Howett <dustin@howett.net> Co-authored-by: Shawn Yuan <128874481+shuaiyuanxx@users.noreply.github.com> Co-authored-by: Shawn Yuan <shuai.yuan.zju@gmail.com> Co-authored-by: cryolithic <cryolithic@gmail.com> Co-authored-by: Lemonyte <49930425+lemonyte@users.noreply.github.com> Co-authored-by: Gordon Lam (SH) <yeelam@microsoft.com> Co-authored-by: Corey Hayward <72159232+CoreyHayward@users.noreply.github.com> Co-authored-by: Jerry Xu <nxu@microsoft.com> Co-authored-by: Shawn Yuan <shuaiyuan@microsoft.com> Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com> Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
123 lines
4.1 KiB
YAML
123 lines
4.1 KiB
YAML
parameters:
|
|
- name: configuration
|
|
type: string
|
|
default: "Release"
|
|
- name: platform
|
|
type: string
|
|
default: ""
|
|
- name: inputArtifactStem
|
|
type: string
|
|
default: ""
|
|
- name: useLatestWebView2
|
|
type: boolean
|
|
default: false
|
|
|
|
jobs:
|
|
- job: Test${{ parameters.platform }}${{ parameters.configuration }}
|
|
displayName: Test ${{ parameters.platform }} ${{ parameters.configuration }}
|
|
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'
|
|
|
|
- task: VisualStudioTestPlatformInstaller@1
|
|
displayName: Ensure VSTest Platform
|
|
|
|
- pwsh: |-
|
|
& '$(build.sourcesdirectory)\.pipelines\InstallWinAppDriver.ps1'
|
|
displayName: Download and install WinAppDriver
|
|
|
|
- ${{ if ne(parameters.platform, 'arm64') }}:
|
|
- task: ScreenResolutionUtility@1
|
|
inputs:
|
|
displaySettings: 'optimal'
|
|
|
|
- task: VSTest@3
|
|
displayName: Run UI Tests
|
|
inputs:
|
|
platform: '$(BuildPlatform)'
|
|
configuration: '$(BuildConfiguration)'
|
|
testSelector: 'testAssemblies'
|
|
searchFolder: '$(Pipeline.Workspace)\$(TestArtifactsName)'
|
|
vsTestVersion: 'toolsInstaller'
|
|
uiTests: true
|
|
rerunFailedTests: true
|
|
# Since UITests-FancyZonesEditor.dll is generated in both UITests-FancyZonesEditor and UITests-FancyZones, removed one to avoid duplicate test runs
|
|
testAssemblyVer2: |
|
|
**\*UITest*.dll
|
|
!**\obj\**
|
|
!**\ref\**
|
|
!**\UITests-FancyZones\**\UITests-FancyZonesEditor.dll
|
|
|
|
|
|
env:
|
|
platform: '$(TestPlatform)'
|